Add VSS, ARSS, AUSS, and APSS.
This commit is contained in:
parent
705ba5f79c
commit
4aacfb5a99
1 changed files with 25 additions and 14 deletions
39
smem
39
smem
|
|
@ -34,16 +34,6 @@ def pidmaps(pid):
|
||||||
|
|
||||||
return maps
|
return maps
|
||||||
|
|
||||||
def pidtotals(pid):
|
|
||||||
maps = pidmaps(pid)
|
|
||||||
t = dict(size=0, rss=0, pss=0, shared_clean=0, shared_dirty=0,
|
|
||||||
private_clean=0, private_dirty=0, referenced=0, swap=0)
|
|
||||||
for m in maps.iterkeys():
|
|
||||||
for k in t:
|
|
||||||
t[k] += maps[m].get(k, 0)
|
|
||||||
t['maps'] = len(maps)
|
|
||||||
return t
|
|
||||||
|
|
||||||
def processtotals(pids):
|
def processtotals(pids):
|
||||||
totals = {}
|
totals = {}
|
||||||
for pid in pids:
|
for pid in pids:
|
||||||
|
|
@ -81,11 +71,9 @@ def memory():
|
||||||
t = {}
|
t = {}
|
||||||
f = re.compile('(\\S+):\\s+(\\d+) kB')
|
f = re.compile('(\\S+):\\s+(\\d+) kB')
|
||||||
for l in file('/proc/meminfo'):
|
for l in file('/proc/meminfo'):
|
||||||
print l
|
|
||||||
m = f.match(l)
|
m = f.match(l)
|
||||||
if m:
|
if m:
|
||||||
t[m.group(1).lower()] = int(m.group(2)) * 1024
|
t[m.group(1).lower()] = int(m.group(2)) * 1024
|
||||||
print t
|
|
||||||
return t
|
return t
|
||||||
|
|
||||||
def units(x):
|
def units(x):
|
||||||
|
|
@ -125,6 +113,25 @@ def showamount(a):
|
||||||
return "%.2f%%" % (102400.0 * a / totalmem())
|
return "%.2f%%" % (102400.0 * a / totalmem())
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
def pidtotals(pid):
|
||||||
|
maps = pidmaps(pid)
|
||||||
|
t = dict(size=0, rss=0, pss=0, shared_clean=0, shared_dirty=0,
|
||||||
|
private_clean=0, private_dirty=0, referenced=0, swap=0)
|
||||||
|
for m in maps.iterkeys():
|
||||||
|
for k in t:
|
||||||
|
t[k] += maps[m].get(k, 0)
|
||||||
|
|
||||||
|
t['uss'] = t['private_clean'] + t['private_dirty']
|
||||||
|
t['arss'] = t['apss'] = t['auss'] = t['avss'] = 0
|
||||||
|
for m in maps.iterkeys():
|
||||||
|
if maps[m]['name'] in ('<anonymous>', '[heap]', '[stack]'):
|
||||||
|
t['auss'] += maps[m].get('private_clean', 0) + maps[m].get('private_dirty', 0)
|
||||||
|
t['arss'] += maps[m].get('rss', 0)
|
||||||
|
t['apss'] += maps[m].get('pss', 0)
|
||||||
|
t['avss'] += maps[m].get('size', 0)
|
||||||
|
t['maps'] = len(maps)
|
||||||
|
return t
|
||||||
|
|
||||||
def showpids():
|
def showpids():
|
||||||
p = pids()
|
p = pids()
|
||||||
pt = processtotals(p)
|
pt = processtotals(p)
|
||||||
|
|
@ -140,10 +147,14 @@ def showpids():
|
||||||
name=('Name', pidname, '%-24.24s', None),
|
name=('Name', pidname, '%-24.24s', None),
|
||||||
command=('Command', pidcmd, '%-27.27s', None),
|
command=('Command', pidcmd, '%-27.27s', None),
|
||||||
swap=('Swap',lambda n: pt[n]['swap'], '% 8a', sum),
|
swap=('Swap',lambda n: pt[n]['swap'], '% 8a', sum),
|
||||||
uss=('USS', lambda n: pt[n]['private_clean']
|
uss=('USS', lambda n: pt[n]['uss'], '% 8a', sum),
|
||||||
+ pt[n]['private_dirty'], '% 8a', sum),
|
|
||||||
rss=('RSS', lambda n: pt[n]['rss'], '% 8a', sum),
|
rss=('RSS', lambda n: pt[n]['rss'], '% 8a', sum),
|
||||||
pss=('PSS', lambda n: pt[n]['pss'], '% 8a', sum),
|
pss=('PSS', lambda n: pt[n]['pss'], '% 8a', sum),
|
||||||
|
vss=('VSS', lambda n: pt[n]['size'], '% 8a', sum),
|
||||||
|
auss=('AUSS', lambda n: pt[n]['auss'], '% 8a', sum),
|
||||||
|
arss=('ARSS', lambda n: pt[n]['arss'], '% 8a', sum),
|
||||||
|
apss=('APSS', lambda n: pt[n]['apss'], '% 8a', sum),
|
||||||
|
avss=('AVSS', lambda n: pt[n]['avss'], '% 8a', sum),
|
||||||
)
|
)
|
||||||
columns = options.columns or 'pid user command swap uss pss rss'
|
columns = options.columns or 'pid user command swap uss pss rss'
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue