Add -w system reporting mode
This commit is contained in:
parent
88cd5c32e6
commit
90f16294c7
1 changed files with 53 additions and 5 deletions
58
smem
58
smem
|
|
@ -68,7 +68,15 @@ def totalmem():
|
||||||
_totalmem = fromunits(options.realmem)
|
_totalmem = fromunits(options.realmem)
|
||||||
else:
|
else:
|
||||||
_totalmem = memory()['memtotal']
|
_totalmem = memory()['memtotal']
|
||||||
return _totalmem
|
return _totalmem / 1024
|
||||||
|
|
||||||
|
_kernelsize = 0
|
||||||
|
def kernelsize():
|
||||||
|
global _kernelsize
|
||||||
|
if not _kernelsize and options.kernel:
|
||||||
|
d = os.popen("size %s" % options.kernel).readlines()[1]
|
||||||
|
_kernelsize = float(d.split()[3]) / 1024
|
||||||
|
return _kernelsize
|
||||||
|
|
||||||
def pidmaps(pid):
|
def pidmaps(pid):
|
||||||
maps = {}
|
maps = {}
|
||||||
|
|
@ -112,7 +120,7 @@ def memory():
|
||||||
for l in src.memdata():
|
for l in src.memdata():
|
||||||
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))
|
||||||
return t
|
return t
|
||||||
|
|
||||||
def units(x):
|
def units(x):
|
||||||
|
|
@ -151,7 +159,7 @@ def showamount(a):
|
||||||
if options.abbreviate:
|
if options.abbreviate:
|
||||||
return units(a * 1024)
|
return units(a * 1024)
|
||||||
elif options.percent:
|
elif options.percent:
|
||||||
return "%.2f%%" % (102400.0 * a / totalmem())
|
return "%.2f%%" % (100.0 * a / totalmem())
|
||||||
return a
|
return a
|
||||||
|
|
||||||
def filter(opt, arg, *sources):
|
def filter(opt, arg, *sources):
|
||||||
|
|
@ -348,6 +356,39 @@ def showusers():
|
||||||
|
|
||||||
showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
|
showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
|
||||||
|
|
||||||
|
def showsystem():
|
||||||
|
t = totalmem()
|
||||||
|
k = kernelsize()
|
||||||
|
m = memory()
|
||||||
|
mt = m['memtotal']
|
||||||
|
fh = t - mt - k
|
||||||
|
f = m['memfree']
|
||||||
|
u = m['anonpages'] + m['mapped']
|
||||||
|
kd = mt - f - u
|
||||||
|
kdd = (m['buffers'] + m['sreclaimable'] +
|
||||||
|
(m['cached'] - m['anonpages']))
|
||||||
|
|
||||||
|
l = [("firmware/hardware", fh, 0),
|
||||||
|
("kernel image", k, 0),
|
||||||
|
("kernel dynamic memory", kd, kdd),
|
||||||
|
("userspace memory", u, m['mapped']),
|
||||||
|
("free memory", f, f)]
|
||||||
|
|
||||||
|
fields = dict(
|
||||||
|
order=('Order', lambda n: n, '% 1s', lambda x: len(p),
|
||||||
|
'hierarchical order'),
|
||||||
|
area=('Area', lambda n: l[n][0], '%-24s', lambda x: len(l),
|
||||||
|
'memory area'),
|
||||||
|
used=('Used', lambda n: l[n][1], '%10a', sum,
|
||||||
|
'area in use'),
|
||||||
|
cache=('Cache', lambda n: l[n][2], '%10a', sum,
|
||||||
|
'area used as reclaimable cache'),
|
||||||
|
noncache=('Noncache', lambda n: l[n][1] - l[n][2], '%10a', sum,
|
||||||
|
'area not reclaimable'))
|
||||||
|
|
||||||
|
columns = options.columns or 'area used cache noncache'
|
||||||
|
showtable(range(len(l)), fields, columns.split(), options.sort or 'order')
|
||||||
|
|
||||||
def showfields(fields, f):
|
def showfields(fields, f):
|
||||||
print "unknown field", f
|
print "unknown field", f
|
||||||
print "known fields:"
|
print "known fields:"
|
||||||
|
|
@ -426,7 +467,7 @@ def showpie(l, sort):
|
||||||
labels = [r[1][-1] for r in l]
|
labels = [r[1][-1] for r in l]
|
||||||
values = [r[0] for r in l] # sort field
|
values = [r[0] for r in l] # sort field
|
||||||
|
|
||||||
tm = totalmem() / 1024
|
tm = totalmem()
|
||||||
s = sum(values)
|
s = sum(values)
|
||||||
unused = tm - s
|
unused = tm - s
|
||||||
t = 0
|
t = 0
|
||||||
|
|
@ -493,13 +534,17 @@ parser.add_option("-c", "--columns", type="str",
|
||||||
parser.add_option("-t", "--totals", action="store_true",
|
parser.add_option("-t", "--totals", action="store_true",
|
||||||
help="show totals")
|
help="show totals")
|
||||||
|
|
||||||
parser.add_option("", "--realmem", type="str",
|
parser.add_option("-R", "--realmem", type="str",
|
||||||
help="amount of physical RAM")
|
help="amount of physical RAM")
|
||||||
|
parser.add_option("-K", "--kernel", type="str",
|
||||||
|
help="path to kernel image")
|
||||||
|
|
||||||
parser.add_option("-m", "--mappings", action="store_true",
|
parser.add_option("-m", "--mappings", action="store_true",
|
||||||
help="show mappings")
|
help="show mappings")
|
||||||
parser.add_option("-u", "--users", action="store_true",
|
parser.add_option("-u", "--users", action="store_true",
|
||||||
help="show users")
|
help="show users")
|
||||||
|
parser.add_option("-w", "--system", action="store_true",
|
||||||
|
help="show whole system")
|
||||||
|
|
||||||
parser.add_option("-P", "--processfilter", type="str",
|
parser.add_option("-P", "--processfilter", type="str",
|
||||||
help="process filter regex")
|
help="process filter regex")
|
||||||
|
|
@ -528,6 +573,7 @@ parser.add_option("", "--bar", type='str',
|
||||||
parser.add_option("-S", "--source", type="str",
|
parser.add_option("-S", "--source", type="str",
|
||||||
help="/proc data source")
|
help="/proc data source")
|
||||||
|
|
||||||
|
|
||||||
defaults = {}
|
defaults = {}
|
||||||
parser.set_defaults(**defaults)
|
parser.set_defaults(**defaults)
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
@ -542,6 +588,8 @@ try:
|
||||||
showmaps()
|
showmaps()
|
||||||
elif options.users:
|
elif options.users:
|
||||||
showusers()
|
showusers()
|
||||||
|
elif options.system:
|
||||||
|
showsystem()
|
||||||
else:
|
else:
|
||||||
showpids()
|
showpids()
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue