summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolargo <nicolashennion@gmail.com>2024-05-05 18:45:56 +0200
committernicolargo <nicolashennion@gmail.com>2024-05-05 18:45:56 +0200
commit934f605c79d4eb0331f75a59d79889d92d634393 (patch)
tree403906e9f2532fd13501e1a5955ea95761f6656a
parent9ae8219a7f8a31dfe65709867d436744c6aea1dd (diff)
Refactor MMM function in Processlist and change Python Header to go in 2024
-rw-r--r--glances/amps/amp.py2
-rw-r--r--glances/exports/glances_mongodb/__init__.py2
-rw-r--r--glances/folder_list.py2
-rw-r--r--glances/globals.py2
-rw-r--r--glances/main.py2
-rw-r--r--glances/outputs/glances_curses.py2
-rw-r--r--glances/outputs/glances_stdout_apidoc.py2
-rw-r--r--glances/outputs/glances_stdout_issue.py2
-rw-r--r--glances/password.py2
-rw-r--r--glances/plugins/alert/__init__.py2
-rw-r--r--glances/plugins/amps/__init__.py2
-rw-r--r--glances/plugins/connections/__init__.py2
-rw-r--r--glances/plugins/containers/engines/docker.py2
-rw-r--r--glances/plugins/diskio/__init__.py2
-rw-r--r--glances/plugins/fs/__init__.py2
-rw-r--r--glances/plugins/processlist/__init__.py2
-rw-r--r--glances/plugins/version/__init__.py2
-rw-r--r--glances/plugins/wifi/__init__.py2
-rw-r--r--glances/processes.py64
-rw-r--r--glances/programs.py2
-rw-r--r--glances/webserver.py2
21 files changed, 54 insertions, 50 deletions
diff --git a/glances/amps/amp.py b/glances/amps/amp.py
index 41881ea8..373d75a4 100644
--- a/glances/amps/amp.py
+++ b/glances/amps/amp.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/exports/glances_mongodb/__init__.py b/glances/exports/glances_mongodb/__init__.py
index 427a4c97..85a486ea 100644
--- a/glances/exports/glances_mongodb/__init__.py
+++ b/glances/exports/glances_mongodb/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/folder_list.py b/glances/folder_list.py
index 595c536f..4f98d547 100644
--- a/glances/folder_list.py
+++ b/glances/folder_list.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/globals.py b/glances/globals.py
index f2ea518e..6039f868 100644
--- a/glances/globals.py
+++ b/glances/globals.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/main.py b/glances/main.py
index 767a3b79..470f2f6a 100644
--- a/glances/main.py
+++ b/glances/main.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py
index c9ff56d8..330f85d6 100644
--- a/glances/outputs/glances_curses.py
+++ b/glances/outputs/glances_curses.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/outputs/glances_stdout_apidoc.py b/glances/outputs/glances_stdout_apidoc.py
index e26d79e1..e50a8d18 100644
--- a/glances/outputs/glances_stdout_apidoc.py
+++ b/glances/outputs/glances_stdout_apidoc.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/outputs/glances_stdout_issue.py b/glances/outputs/glances_stdout_issue.py
index 9baa5dd3..3c3a3233 100644
--- a/glances/outputs/glances_stdout_issue.py
+++ b/glances/outputs/glances_stdout_issue.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/password.py b/glances/password.py
index 6e1d6ad8..7d5c15c7 100644
--- a/glances/password.py
+++ b/glances/password.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/alert/__init__.py b/glances/plugins/alert/__init__.py
index 5f8f626b..67088a4a 100644
--- a/glances/plugins/alert/__init__.py
+++ b/glances/plugins/alert/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/amps/__init__.py b/glances/plugins/amps/__init__.py
index 6b5bab67..4f5756da 100644
--- a/glances/plugins/amps/__init__.py
+++ b/glances/plugins/amps/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/connections/__init__.py b/glances/plugins/connections/__init__.py
index f87abd37..05eae9f4 100644
--- a/glances/plugins/connections/__init__.py
+++ b/glances/plugins/connections/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/containers/engines/docker.py b/glances/plugins/containers/engines/docker.py
index 37267830..1656f994 100644
--- a/glances/plugins/containers/engines/docker.py
+++ b/glances/plugins/containers/engines/docker.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/diskio/__init__.py b/glances/plugins/diskio/__init__.py
index 9e9bcc7c..d500bf17 100644
--- a/glances/plugins/diskio/__init__.py
+++ b/glances/plugins/diskio/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/fs/__init__.py b/glances/plugins/fs/__init__.py
index df494c88..c34a4cfb 100644
--- a/glances/plugins/fs/__init__.py
+++ b/glances/plugins/fs/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/processlist/__init__.py b/glances/plugins/processlist/__init__.py
index e29d2225..14b94206 100644
--- a/glances/plugins/processlist/__init__.py
+++ b/glances/plugins/processlist/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/version/__init__.py b/glances/plugins/version/__init__.py
index 7e7fe717..2ed77383 100644
--- a/glances/plugins/version/__init__.py
+++ b/glances/plugins/version/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/plugins/wifi/__init__.py b/glances/plugins/wifi/__init__.py
index 9db552e6..f642ccf3 100644
--- a/glances/plugins/wifi/__init__.py
+++ b/glances/plugins/wifi/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/processes.py b/glances/processes.py
index 16e21547..4d446743 100644
--- a/glances/processes.py
+++ b/glances/processes.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
@@ -296,6 +296,8 @@ class GlancesProcesses(object):
ret = {}
try:
+ logger.debug('Grab extended stats for process {}'.format(proc['pid']))
+
# Get PID of the selected process
selected_process = psutil.Process(proc['pid'])
@@ -312,39 +314,40 @@ class GlancesProcesses(object):
self.extended_process = None
ret['extended_stats'] = False
else:
- logger.debug('Grab extended stats for process {}'.format(proc['pid']))
-
# Compute CPU and MEM min/max/mean
- for stat_prefix in ['cpu', 'memory']:
- if stat_prefix + '_min' not in self.extended_process:
- ret[stat_prefix + '_min'] = proc[stat_prefix + '_percent']
- else:
- ret[stat_prefix + '_min'] = (
- proc[stat_prefix + '_percent']
- if proc[stat_prefix + '_min'] > proc[stat_prefix + '_percent']
- else proc[stat_prefix + '_min']
- )
- if stat_prefix + '_max' not in self.extended_process:
- ret[stat_prefix + '_max'] = proc[stat_prefix + '_percent']
- else:
- ret[stat_prefix + '_max'] = (
- proc[stat_prefix + '_percent']
- if proc[stat_prefix + '_max'] < proc[stat_prefix + '_percent']
- else proc[stat_prefix + '_max']
- )
- if stat_prefix + '_mean_sum' not in self.extended_process:
- ret[stat_prefix + '_mean_sum'] = proc[stat_prefix + '_percent']
- else:
- ret[stat_prefix + '_mean_sum'] = proc[stat_prefix + '_mean_sum'] + proc[stat_prefix + '_percent']
- if stat_prefix + '_mean_counter' not in self.extended_process:
- ret[stat_prefix + '_mean_counter'] = 1
- else:
- ret[stat_prefix + '_mean_counter'] = proc[stat_prefix + '_mean_counter'] + 1
- ret[stat_prefix + '_mean'] = ret[stat_prefix + '_mean_sum'] / ret[stat_prefix + '_mean_counter']
-
+ # Merge the returned dict with the current on
+ ret.update(self.__get_min_max_mean(proc))
+ self.extended_process = ret
ret['extended_stats'] = True
return namedtuple_to_dict(ret)
+ def __get_min_max_mean(self, proc, prefix=['cpu', 'memory']):
+ """Return the min/max/mean for the given process"""
+ ret = {}
+ for stat_prefix in prefix:
+ min_key = stat_prefix + '_min'
+ max_key = stat_prefix + '_max'
+ mean_sum_key = stat_prefix + '_mean_sum'
+ mean_counter_key = stat_prefix + '_mean_counter'
+ if min_key not in self.extended_process:
+ ret[min_key] = proc[stat_prefix + '_percent']
+ else:
+ ret[min_key] = min(proc[stat_prefix + '_percent'], self.extended_process[min_key])
+ if max_key not in self.extended_process:
+ ret[max_key] = proc[stat_prefix + '_percent']
+ else:
+ ret[max_key] = max(proc[stat_prefix + '_percent'], self.extended_process[max_key])
+ if mean_sum_key not in self.extended_process:
+ ret[mean_sum_key] = proc[stat_prefix + '_percent']
+ else:
+ ret[mean_sum_key] = self.extended_process[mean_sum_key] + proc[stat_prefix + '_percent']
+ if mean_counter_key not in self.extended_process:
+ ret[mean_counter_key] = 1
+ else:
+ ret[mean_counter_key] = self.extended_process[mean_counter_key] + 1
+ ret[stat_prefix + '_mean'] = ret[mean_sum_key] / ret[mean_counter_key]
+ return ret
+
def __get_extended_memory_swap(self, process):
"""Return the memory swap for the given process"""
if not LINUX:
@@ -659,6 +662,7 @@ def _sort_lambda(sorted_by='cpu_percent', sorted_by_secondary='memory_percent'):
def sort_stats(stats, sorted_by='cpu_percent', sorted_by_secondary='memory_percent', reverse=True):
"""Return the stats (dict) sorted by (sorted_by).
+ A secondary sort key should be specified.
Reverse the sort if reverse is True.
"""
diff --git a/glances/programs.py b/glances/programs.py
index d504f386..f3fcefcc 100644
--- a/glances/programs.py
+++ b/glances/programs.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
diff --git a/glances/webserver.py b/glances/webserver.py
index e61ca32b..c9ab6862 100644
--- a/glances/webserver.py
+++ b/glances/webserver.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2023 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#