Command line and full screen utilities for browsing procfs, a "pseudo" file system dynamically generated by Linux to provide information about the status of entries in its process table.
22e6582974
If a system's time is adjusted backwards, then elapsed time could appear as negative. This yielded a negative %CPU value. Alternately if zeros were suppressed ('0') the result was a blank %CPU column. In both cases that distortion would last for one display cycle or until a user forced a display refresh via some keyboard input. The original recommendation was trading gettimeofday() for clock_gettime() using CLOCK_MONOTONIC. But on some systems that might not be possible, forcing the use of CLOCK_REALTIME instead. Not only would that complicate the build system, but it may leave us with minus %CPU. Another approach was to ensure that elapsed time could never be negative. Of course, this produced distortion of %CPU values but it would be proportionally correct. This wasn't dissimilar to a distortion already present should the time be adjusted forward or backward within any 'remaining' top delay intervals. These aberrations would be avoided with clock_gettime & CLOCK_MONOTONIC, but that is a less than ideal solution as noted above. This final solution, which originated down under, will simply rely on the /proc/uptime seconds, which will be immune to *any* tampering with the system clock. Thus, we now have a fix for the distortion we didn't know we suffered plus a negative %CPU that began this odyssey. Thanks to: sk.alvin.x@gmail.com, for the original effort jcapik@redhat.com, for a heads up on CLOCK_MONOTONIC csmall-procps@enc.com.au, for the best suggestion of all Reference(s): . original post/patch http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday . heads up on CLOCK_MONOTONIC http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday,2 . the final solution http://www.freelists.org/post/procps/PATCH-top-use-clock-gettime-instead-of-gettimeofday,11 Signed-off-by: Jim Warner <james.warner@comcast.net> |
||
---|---|---|
contrib | ||
Documentation | ||
include | ||
lib | ||
misc | ||
po | ||
proc | ||
ps | ||
testsuite | ||
top | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
configure.ac | ||
COPYING | ||
COPYING.LIB | ||
free.1 | ||
free.c | ||
kill.1 | ||
Makefile.am | ||
NEWS | ||
pgrep.1 | ||
pgrep.c | ||
pidof.1 | ||
pidof.c | ||
pkill.1 | ||
pmap.1 | ||
pmap.c | ||
pwdx.1 | ||
pwdx.c | ||
README | ||
skill.1 | ||
skill.c | ||
slabtop.1 | ||
slabtop.c | ||
snice.1 | ||
sysctl.8 | ||
sysctl.c | ||
sysctl.conf | ||
sysctl.conf.5 | ||
tload.1 | ||
tload.c | ||
uptime.1 | ||
uptime.c | ||
vmstat.8 | ||
vmstat.c | ||
w.1 | ||
w.c | ||
watch.1 | ||
watch.c |
COMPATIBILITY This code is intended for use with Linux 2.6.xx, 3.x and hopefully all future kernels. INSTALLATION If you are using git version of the project you need extra step. ./autogen.sh After that, and everyone using .tar.xz version of procps-ng, can do normal build. Read './configure --help' to select options for your needs. ./configure make make install If you have DejaGNU installed you can run optional test suite. make check HOW TO CONTRIBUTE See Documentation/BUGS file. PACKAGING If you are a downstream maintainer (packager) for a Linux distribution, please avoid causing troubles. This section applies to you. Avoid maintaining distribution specific patches. Send your patches to upstream, where they are at least reviewed, if not included. Please forward bug reports. If your bug database is public and busy enough to bother with, please make this known. Follow Debian's lead in making the bug database easy to comment on via email without need for an account. For normal packages, ensure that you do not add debugging flags to the CFLAGS variable. UPSTREAM & BUG REPORTS procps-ng <procps@freelists.org>