procps/proc
Jim Warner 12543b6c76 library: add support for smaps_rollup file, <pids> api
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>
2021-04-29 21:42:44 +10:00
..
.gitignore build-sys: added a 'test_Itemtables' to testing scheme 2020-08-17 21:49:14 +10:00
COPYING miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
devname.c all: make buildable again for new 'misc.h' header file 2021-01-21 17:30:25 +11:00
devname.h library: eliminate inappropriate '__BEGIN_DECLS' macro 2018-05-06 07:19:38 +10:00
diskstats.c library: normalized 'extents_free_all' use across APIs 2021-02-18 18:35:32 +11:00
diskstats.h library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
escape.c escape.c: Fix missing nl_langinfo on certain configs 2021-04-24 11:46:48 +10:00
escape.h library: refactor 'escape' logic for newlib essentials 2020-12-29 08:48:23 +11:00
libproc-2.pc.in library: Rename to libproc-2 2021-02-20 22:30:31 +11:00
libproc-2.sym library: Rename to libproc-2 2021-02-20 22:30:31 +11:00
meminfo.c library: tweaked key used in hash table, <meminfo> api 2021-02-28 21:18:26 +11:00
meminfo.h library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
misc.h misc: Update Craig's email 2021-01-21 17:37:48 +11:00
namespace.c all: make buildable again for new 'misc.h' header file 2021-01-21 17:30:25 +11:00
numa.c library: set stage for NUMA node field display support 2017-05-22 21:38:10 +10:00
numa.h library: eliminate inappropriate '__BEGIN_DECLS' macro 2018-05-06 07:19:38 +10:00
pids.c library: add support for smaps_rollup file, <pids> api 2021-04-29 21:42:44 +10:00
pids.h library: add support for smaps_rollup file, <pids> api 2021-04-29 21:42:44 +10:00
procps-private.h library: eliminate unused 'FUNCTION' in private header 2020-09-13 10:00:49 +10:00
pwcache.c library: eliminate all dependencies on alloc.h/alloc.c 2017-12-20 21:18:53 +11:00
pwcache.h library: eliminate inappropriate '__BEGIN_DECLS' macro 2018-05-06 07:19:38 +10:00
readproc.c library: add support for smaps_rollup file, <pids> api 2021-04-29 21:42:44 +10:00
readproc.h library: add support for smaps_rollup file, <pids> api 2021-04-29 21:42:44 +10:00
slabinfo.c library: normalized 'extents_free_all' use across APIs 2021-02-18 18:35:32 +11:00
slabinfo.h library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
stat.c library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
stat.h library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
sysinfo.c all: make buildable again for new 'misc.h' header file 2021-01-21 17:30:25 +11:00
test_Itemtables.c build-sys: proper fix for the 'test_Itemtables' module 2020-08-18 10:19:53 +10:00
test_namespace.c all: make buildable again for new 'misc.h' header file 2021-01-21 17:30:25 +11:00
test_pids.c testsuite: Correct include 2020-07-05 21:18:36 +10:00
test_sysinfo.c all: make buildable again for new 'misc.h' header file 2021-01-21 17:30:25 +11:00
test_uptime.c misc: Update Craig's email 2021-01-21 17:37:48 +11:00
test_version.c misc: Update Craig's email 2021-01-21 17:37:48 +11:00
uptime.c misc: Update Craig's email 2021-01-21 17:37:48 +11:00
version.c misc: Update Craig's email 2021-01-21 17:37:48 +11:00
vmstat.c library: normalized the 'read_failed' guys across APIs 2021-02-28 21:18:26 +11:00
vmstat.h library: update those source files for copyright dates 2021-02-09 16:40:52 +11:00
wchan.c library: don't strip off prefixes from the wchan names 2016-12-07 22:07:00 +11:00
wchan.h library: eliminate inappropriate '__BEGIN_DECLS' macro 2018-05-06 07:19:38 +10:00
xtra-procps-debug.h library: ensure 'XTRA_PROCPS_DEBUG' works in real life 2020-07-29 19:01:50 +10:00