7
"""Show detailed memory usage about all (querable) processes.
9
Processes are sorted by their "USS" (Unique Set Size) memory, which is
10
probably the most representative metric for determining how much memory
11
is actually being used by a process.
13
This is similar to "smem" cmdline utility on Linux:
14
https://www.selenic.com/smem/
16
Author: Giampaolo Rodola' <g.rodola@gmail.com>
18
~/svn/psutil$ ./scripts/procsmem.py
19
PID User Cmdline USS PSS Swap RSS
20
==============================================================================
22
3986 giampao /usr/bin/python3 /usr/bin/indi 15.3M 16.6M 0B 25.6M
23
3906 giampao /usr/lib/ibus/ibus-ui-gtk3 17.6M 18.1M 0B 26.7M
24
3991 giampao python /usr/bin/hp-systray -x 19.0M 23.3M 0B 40.7M
25
3830 giampao /usr/bin/ibus-daemon --daemoni 19.0M 19.0M 0B 21.4M
26
20529 giampao /opt/sublime_text/plugin_host 19.9M 20.1M 0B 22.0M
27
3990 giampao nautilus -n 20.6M 29.9M 0B 50.2M
28
3898 giampao /usr/lib/unity/unity-panel-ser 27.1M 27.9M 0B 37.7M
29
4176 giampao /usr/lib/evolution/evolution-c 35.7M 36.2M 0B 41.5M
30
20712 giampao /usr/bin/python -B /home/giamp 45.6M 45.9M 0B 49.4M
31
3880 giampao /usr/lib/x86_64-linux-gnu/hud/ 51.6M 52.7M 0B 61.3M
32
20513 giampao /opt/sublime_text/sublime_text 65.8M 73.0M 0B 87.9M
33
3976 giampao compiz 115.0M 117.0M 0B 130.9M
34
32486 giampao skype 145.1M 147.5M 0B 149.6M
38
from __future__ import print_function
45
if not (psutil.LINUX or psutil.MACOS or psutil.WINDOWS):
46
sys.exit("platform not supported")
50
symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
52
for i, s in enumerate(symbols):
53
prefix[s] = 1 << (i + 1) * 10
54
for s in reversed(symbols):
56
value = float(n) / prefix[s]
57
return '%.1f%s' % (value, s)
64
for p in psutil.process_iter():
67
mem = p.memory_full_info()
68
info = p.as_dict(["cmdline", "username"])
69
except psutil.AccessDenied:
71
except psutil.NoSuchProcess:
78
p._pss = getattr(mem, "pss", "")
79
p._swap = getattr(mem, "swap", "")
83
procs.sort(key=lambda p: p._uss)
84
templ = "%-7s %-7s %7s %7s %7s %7s %7s"
85
print(templ % ("PID", "User", "USS", "PSS", "Swap", "RSS", "Cmdline"))
88
cmd = " ".join(p._info["cmdline"])[:50] if p._info["cmdline"] else ""
91
p._info["username"][:7] if p._info["username"] else "",
92
convert_bytes(p._uss),
93
convert_bytes(p._pss) if p._pss else "",
94
convert_bytes(p._swap) if p._swap else "",
95
convert_bytes(p._rss),
101
"warning: access denied for %s pids" % (len(ad_pids)),
106
if __name__ == '__main__':