pmemstat 2.3.26__tar.gz → 2.3.27__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pmemstat-2.3.26/src/pmemstat.egg-info → pmemstat-2.3.27}/PKG-INFO +1 -2
- {pmemstat-2.3.26 → pmemstat-2.3.27}/pyproject.toml +3 -4
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat/CpuSmooth.py +2 -1
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat/KillThem.py +2 -2
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat/Window.py +4 -3
- pmemstat-2.3.27/src/pmemstat/__init__.py +0 -0
- pmemstat-2.3.26/src/pmemstat/pmemstat.py → pmemstat-2.3.27/src/pmemstat/main.py +13 -12
- {pmemstat-2.3.26 → pmemstat-2.3.27/src/pmemstat.egg-info}/PKG-INFO +1 -2
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat.egg-info/SOURCES.txt +1 -1
- pmemstat-2.3.27/src/pmemstat.egg-info/entry_points.txt +2 -0
- pmemstat-2.3.27/src/pmemstat.egg-info/requires.txt +1 -0
- pmemstat-2.3.26/src/pmemstat/__init__.py +0 -4
- pmemstat-2.3.26/src/pmemstat.egg-info/entry_points.txt +0 -2
- pmemstat-2.3.26/src/pmemstat.egg-info/requires.txt +0 -4
- {pmemstat-2.3.26 → pmemstat-2.3.27}/LICENSE.txt +0 -0
- {pmemstat-2.3.26 → pmemstat-2.3.27}/README.md +0 -0
- {pmemstat-2.3.26 → pmemstat-2.3.27}/setup.cfg +0 -0
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat.egg-info/dependency_links.txt +0 -0
- {pmemstat-2.3.26 → pmemstat-2.3.27}/src/pmemstat.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pmemstat
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.27
|
|
4
4
|
Summary: Report Proportional Memory on Linux
|
|
5
5
|
Author-email: Joe Defen <joedef@duck.com>
|
|
6
6
|
License: MIT
|
|
@@ -13,7 +13,6 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE.txt
|
|
16
|
-
Requires-Dist: importlib-metadata; python_version < "3.8"
|
|
17
16
|
Requires-Dist: psutil>5.9
|
|
18
17
|
|
|
19
18
|
> **Quick Start**: from the CLI
|
|
@@ -32,7 +32,7 @@ build-backend = "setuptools.build_meta"
|
|
|
32
32
|
|
|
33
33
|
[project]
|
|
34
34
|
name = "pmemstat"
|
|
35
|
-
version = "2.3.
|
|
35
|
+
version = "2.3.27"
|
|
36
36
|
description = "Report Proportional Memory on Linux"
|
|
37
37
|
authors = [
|
|
38
38
|
{name = "Joe Defen", email = "joedef@duck.com"},
|
|
@@ -50,7 +50,6 @@ classifiers = [
|
|
|
50
50
|
]
|
|
51
51
|
|
|
52
52
|
dependencies = [
|
|
53
|
-
'importlib-metadata; python_version<"3.8"',
|
|
54
53
|
'psutil>5.9',
|
|
55
54
|
]
|
|
56
55
|
|
|
@@ -59,7 +58,7 @@ dependencies = [
|
|
|
59
58
|
"Bug Tracker" = "https://github.com/joedefen/pmemstat/issues"
|
|
60
59
|
|
|
61
60
|
[project.scripts]
|
|
62
|
-
pmemstat = "pmemstat.
|
|
61
|
+
pmemstat = "pmemstat.main:run"
|
|
63
62
|
|
|
64
63
|
[tool.setuptools]
|
|
65
64
|
package-dir = {"" = "src"}
|
|
@@ -69,5 +68,5 @@ where = ["src"]
|
|
|
69
68
|
|
|
70
69
|
[tool.setuptools.package-data]
|
|
71
70
|
exclude = [
|
|
72
|
-
"
|
|
71
|
+
"__pycache__",
|
|
73
72
|
]
|
|
@@ -69,6 +69,7 @@ class SysStat:
|
|
|
69
69
|
@staticmethod
|
|
70
70
|
def refresh():
|
|
71
71
|
""" TBD """
|
|
72
|
+
# pylint: disable=protected-access
|
|
72
73
|
return SysStat.get_singleton()._refresh()
|
|
73
74
|
|
|
74
75
|
def _refresh(self):
|
|
@@ -229,7 +230,7 @@ class CpuSmooth:
|
|
|
229
230
|
self.hists.pop(0)
|
|
230
231
|
try:
|
|
231
232
|
_, _, delta_mono = pct(self.hists[-1], self.hists[-2])
|
|
232
|
-
except:
|
|
233
|
+
except Exception:
|
|
233
234
|
pass
|
|
234
235
|
if delta_mono <= 0.0:
|
|
235
236
|
self.hists.pop()
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"""
|
|
4
4
|
Module to kill a set of processes and ensure they are really gone.
|
|
5
5
|
"""
|
|
6
|
-
# pylint: disable=broad-except
|
|
6
|
+
# pylint: disable=broad-except,invalid-name,too-few-public-methods
|
|
7
7
|
|
|
8
8
|
import os
|
|
9
9
|
import sys
|
|
@@ -26,7 +26,7 @@ class KillThem():
|
|
|
26
26
|
signal.SIGTERM, signal.SIGTERM, signal.SIGTERM,
|
|
27
27
|
signal.SIGTERM, signal.SIGTERM, signal.SIGTERM,
|
|
28
28
|
signal.SIGKILL, signal.SIGKILL, signal.SIGKILL]
|
|
29
|
-
last_sig = ''
|
|
29
|
+
last_sig = ''
|
|
30
30
|
for sig in sigs:
|
|
31
31
|
for pid in list(self.pids):
|
|
32
32
|
try:
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Custom Wrapper for python curses.
|
|
5
5
|
"""
|
|
6
6
|
# pylint: disable=too-many-instance-attributes,too-many-arguments
|
|
7
|
-
# pylint: disable=invalid-name,broad-except
|
|
7
|
+
# pylint: disable=invalid-name,broad-except,too-many-branches
|
|
8
8
|
|
|
9
9
|
import traceback
|
|
10
10
|
import atexit
|
|
@@ -111,6 +111,7 @@ class OptionSpinner:
|
|
|
111
111
|
self._register(ns)
|
|
112
112
|
|
|
113
113
|
def show_help_nav_keys(self, win):
|
|
114
|
+
""" Get/present standard verbiage for the navigation keys"""
|
|
114
115
|
for line in Window.get_nav_keys_blurb().splitlines():
|
|
115
116
|
if line:
|
|
116
117
|
win.add_header(line)
|
|
@@ -440,7 +441,7 @@ class Window:
|
|
|
440
441
|
if ind_pos >= 0:
|
|
441
442
|
bot, cnt = ind_pos, 1
|
|
442
443
|
if 0 < ind_pos < self.cols-1:
|
|
443
|
-
width =
|
|
444
|
+
width = self.scroll_view_size/self.body.row_cnt * self.cols
|
|
444
445
|
bot = max(int(round(ind_pos-width/2)), 1)
|
|
445
446
|
top = min(int(round(ind_pos+width/2)), self.cols-1)
|
|
446
447
|
cnt = top - bot
|
|
@@ -631,7 +632,7 @@ if __name__ == '__main__':
|
|
|
631
632
|
for num in range(1, opts.pick_size):
|
|
632
633
|
win.draw(num+idx*opts.pick_size, 0, f' addon: {loop}.{line}')
|
|
633
634
|
win.render()
|
|
634
|
-
|
|
635
|
+
do_key(win.prompt(seconds=5))
|
|
635
636
|
win.clear()
|
|
636
637
|
|
|
637
638
|
try:
|
|
File without changes
|
|
@@ -50,14 +50,9 @@ import curses
|
|
|
50
50
|
from types import SimpleNamespace
|
|
51
51
|
from io import StringIO
|
|
52
52
|
from datetime import datetime, timedelta
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
from CpuSmooth import CpuSmooth, SysStat
|
|
57
|
-
except Exception:
|
|
58
|
-
from pmemstat.Window import Window, OptionSpinner
|
|
59
|
-
from pmemstat.KillThem import KillThem
|
|
60
|
-
from pmemstat.CpuSmooth import CpuSmooth, SysStat
|
|
53
|
+
from pmemstat.Window import Window, OptionSpinner
|
|
54
|
+
from pmemstat.KillThem import KillThem
|
|
55
|
+
from pmemstat.CpuSmooth import CpuSmooth, SysStat
|
|
61
56
|
|
|
62
57
|
# Trace Levels:
|
|
63
58
|
# 0 - forced, temporary debugging (comment it out)
|
|
@@ -189,7 +184,7 @@ class ZramProjector:
|
|
|
189
184
|
for key, value in vars(stat).items():
|
|
190
185
|
stats[key] += value
|
|
191
186
|
stats = SimpleNamespace(**stats)
|
|
192
|
-
self.meminfo.MemZram = stats.mem_used_total
|
|
187
|
+
self.meminfo.MemZram = stats.mem_used_total
|
|
193
188
|
|
|
194
189
|
e_used = meminfo.MemUsed - stats.mem_used_total + stats.orig_data_size
|
|
195
190
|
ratio = None
|
|
@@ -212,7 +207,7 @@ class ZramProjector:
|
|
|
212
207
|
# now add uncompressed memory
|
|
213
208
|
e_max_used += meminfo.MemTotal - e_max_used/ratio
|
|
214
209
|
self.e_max_used = e_max_used
|
|
215
|
-
# self.e_max_used = max(e_max_total,
|
|
210
|
+
# self.e_max_used = max(e_max_total, e_max_used)
|
|
216
211
|
self.e_avail = e_max_used - e_used
|
|
217
212
|
|
|
218
213
|
|
|
@@ -1190,6 +1185,13 @@ class PmemStat:
|
|
|
1190
1185
|
else:
|
|
1191
1186
|
assert False, f'unsupported mode ({self.mode})'
|
|
1192
1187
|
|
|
1188
|
+
def rerun_module_as_root(module_name):
|
|
1189
|
+
""" rerun using the module name """
|
|
1190
|
+
if os.geteuid() != 0: # Re-run the script with sudo
|
|
1191
|
+
os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
1192
|
+
vp = ['sudo', sys.executable, '-m', module_name] + sys.argv[1:]
|
|
1193
|
+
os.execvp('sudo', vp)
|
|
1194
|
+
|
|
1193
1195
|
def main():
|
|
1194
1196
|
"""Main loop"""
|
|
1195
1197
|
global DebugLevel
|
|
@@ -1234,8 +1236,7 @@ def main():
|
|
|
1234
1236
|
|
|
1235
1237
|
if not opts.run_as_user and os.geteuid() != 0:
|
|
1236
1238
|
# Re-run the script with sudo needed and opted
|
|
1237
|
-
|
|
1238
|
-
os.execvp('sudo', ['sudo', sys.executable] + sys.argv)
|
|
1239
|
+
rerun_module_as_root('pmemstat.main')
|
|
1239
1240
|
|
|
1240
1241
|
|
|
1241
1242
|
if opts.min_delta_kb is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pmemstat
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.27
|
|
4
4
|
Summary: Report Proportional Memory on Linux
|
|
5
5
|
Author-email: Joe Defen <joedef@duck.com>
|
|
6
6
|
License: MIT
|
|
@@ -13,7 +13,6 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE.txt
|
|
16
|
-
Requires-Dist: importlib-metadata; python_version < "3.8"
|
|
17
16
|
Requires-Dist: psutil>5.9
|
|
18
17
|
|
|
19
18
|
> **Quick Start**: from the CLI
|
|
@@ -5,7 +5,7 @@ src/pmemstat/CpuSmooth.py
|
|
|
5
5
|
src/pmemstat/KillThem.py
|
|
6
6
|
src/pmemstat/Window.py
|
|
7
7
|
src/pmemstat/__init__.py
|
|
8
|
-
src/pmemstat/
|
|
8
|
+
src/pmemstat/main.py
|
|
9
9
|
src/pmemstat.egg-info/PKG-INFO
|
|
10
10
|
src/pmemstat.egg-info/SOURCES.txt
|
|
11
11
|
src/pmemstat.egg-info/dependency_links.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
psutil>5.9
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|