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.
2bac5334b0
Ps command does not display the nice value for processes with the SCHED_BATCH scheduler policy, only for SCHED_OTHER. Boinc (http://boinc.berkeley.edu/) client runs project processing jobs on Linux using SCHED_BATCH scheduler policy and nice value 19. The nice value is not displayable by ps. Steps to Reproduce: 1. Run process using SCHED_BATCH scheduler policy with nice value. ./test-schedbatch 18 & 2. Display process details: ps -o pid,ppid,user,comm,cls,nice Results before: [mike@rockover c]$ ps -o pid,ppid,user,comm,cls,nice PID PPID USER COMMAND CLS NI 18205 2540 mike bash TS 0 20552 18205 mike test-schedbatch B - 20553 18205 mike ps TS 0 [mike@rockover c]$ awk '{printf "%5d %-17s %1d %2d\n", $1, $2, $41, $19}' /proc/20552/stat 20552 (test-schedbatch) 3 18 Results after this patch: [mike@rockover c]$ ps -o pid,ppid,user,comm,cls,nice PID PPID USER COMMAND CLS NI 18205 2540 mike bash TS 0 20552 18205 mike test-schedbatch B 18 20553 18205 mike ps TS 0 Additional info: Here is the fragment from the sched_setscheduler(2) manual page on the subject: SCHED_BATCH: Scheduling batch processes (Since Linux 2.6.16.) SCHED_BATCH can only be used at static priority 0. This policy is similar to SCHED_OTHER in that it schedules the process according to its dynamic priority (based on the nice value). The difference is that this policy will cause the scheduler to always assume that the process is CPU-intensive. Consequently, the scheduler will apply a small scheduling penalty with respect to wakeup behaviour, so that this process is mildly disfavored in scheduling decisions. This policy is useful for workloads that are noninteractive, but do not want to lower their nice value, and for workloads that want a determin- istic scheduling policy without interactivity causing extra preemptions (between the workload's tasks). Reference: https://bugzilla.redhat.com/show_bug.cgi?id=741090 Acked-by: Jaromir Capik <jcapik@redhat.com> Acked-by: Sami Kerola <kerolasa@iki.fi> Signed-off-by: Mike Fleetwood <mike.fleetwood@googlemail.com> |
||
---|---|---|
contrib | ||
Documentation | ||
include | ||
lib | ||
po | ||
proc | ||
ps | ||
testsuite | ||
tools | ||
top | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
configure.ac | ||
COPYING | ||
COPYING.LIB | ||
free.1 | ||
free.c | ||
kill.1 | ||
Makefile.am | ||
NEWS | ||
pgrep.1 | ||
pgrep.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.2.xx, 2.4.xx, 2.6.xx, and hopefully all future kernels. You should be running a system with libc 6, but libc 5 might work too. INSTALLATION make make install Only the second ("make install") is needed if you just want to build and install procps-ng in the normal way. If you wish to test before installing, use the scripts named t, v, and p to ensure that the correct libproc (the new one) is used during your testing. You may set SKIP to avoid building or installing things. For example: make SKIP='/bin/kill /usr/share/man/man1/kill.1' install Use SHARED=0 to build procps-ng without shared libraries. This may be useful for installing in your home directory. make SHARED=0 DESTDIR=$HOME install Suppose you wanted to install stuff in strange places. You might do something like this: make usr/bin=/tmp/Q/i/ DESTDIR=/tmp/Q install="install -D" ldconfig=echo install If cross-compiling, you might need to set lib64 to either "lib" or "lib64". You might need to set m64 to -m64, -m32, or nothing at all. Some examples: make lib64=lib m64=-m32 # for a bi-arch gcc make lib64=lib64 CC=x86_64-gcc make lib64=lib CC=alpha-gcc PACKAGING If you are a downstream maintainer (packager) for a Linux distribution, please avoid causing troubles. This section applies to you. Send patches in regularly. Many patches made by vendors have been buggy, some quite severely so. Sending in a patch will at least get it reviewed, if not included. There is a procps-ng test suite that must be passed. Forward all 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 w/o need for an account. Do not change the user interface. Many of the programs are intended to be compatible with Solaris, FreeBSD, AIX, IRIX, Tru64, and the UNIX standard. Your nice new command options WILL BE BROKEN as needed to ensure that procps-ng remains compatible with the rest of the world. Sysadmins hate to deal with incompatible behavior. If you need a new option, ask for it. For normal packages, ensure that you do not add debugging flags to the CFLAGS variable. If debugging flags are present, the Makefile will avoid adding several optimizations that would interfere with gdb. There should be no need to modify the Makefile. You can set variables on the "make" command line or use "make -e" to pass variables from the environment. BUG REPORTS Email to procps@freelists.org.