12543b6c76
A couple of people have suggested that smaps_rollup be added to the ps program and/or top program. This patch is intended to set the stage for just such extensions. There are currently 20 displayable items in the rollup file. And newlib sometimes uses sscanf when populating the target, sometimes hsearch and one customized gperf approach. None of these fit well with the smaps items. Thus, an approach using a simple table lookup was used and, by disabling 1 code line, it could be made immune from changes to the items order (unlike a sscanf call) and doesn't carry the greater cost of a hsearch/gperf. Note: The next patch will allow top to display some of these new fields. Then, it'll be possible to determine the colossal costs of accessing the smaps_rollup file. Here is a small preview of just what you will discover when using the command 'time top/top -d0 -n1000' while configured with just two fields: PID + 1 memory field. ------------------------------------ as a regular user with only PID + RES (statm) real 0m2.605s user 0m1.060s sys 0m1.377s with only PID + RSS (smaps) real 0m26.397s 10x more costly user 0m1.253s sys 0m24.915s ----------------- as a root (thus smaps for all tasks) with only PID + RES (statm) real 0m2.651s user 0m1.177s sys 0m1.286s with only PID + RSS (smaps) real 0m33.040s 12x more costly user 0m1.256s sys 0m31.533s Reference(s): . ps: expose shared/private memory separately https://gitlab.com/procps-ng/procps/-/issues/201 . top/ps: add support for PSS reporting https://gitlab.com/procps-ng/procps/-/issues/112 Signed-off-by: Jim Warner <james.warner@comcast.net> |
||
---|---|---|
.. | ||
.gitignore | ||
COPYING | ||
devname.c | ||
devname.h | ||
diskstats.c | ||
diskstats.h | ||
escape.c | ||
escape.h | ||
libproc-2.pc.in | ||
libproc-2.sym | ||
meminfo.c | ||
meminfo.h | ||
misc.h | ||
namespace.c | ||
numa.c | ||
numa.h | ||
pids.c | ||
pids.h | ||
procps-private.h | ||
pwcache.c | ||
pwcache.h | ||
readproc.c | ||
readproc.h | ||
slabinfo.c | ||
slabinfo.h | ||
stat.c | ||
stat.h | ||
sysinfo.c | ||
test_Itemtables.c | ||
test_namespace.c | ||
test_pids.c | ||
test_sysinfo.c | ||
test_uptime.c | ||
test_version.c | ||
uptime.c | ||
version.c | ||
vmstat.c | ||
vmstat.h | ||
wchan.c | ||
wchan.h | ||
xtra-procps-debug.h |