Thread (1 message) 1 message, 1 author, 2012-02-07

Re: proc(5) and definition of loadavg

From: Michael Kerrisk <hidden>
Date: 2012-02-07 17:22:36

Hello Elie,

On Tue, Feb 7, 2012 at 8:48 PM, Elie De Brauwer [off-list ref] wrote:
Hello all,

I've got a small suggestion related to man 5 proc (
http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html ).
If you go to /proc/loadavg it states

<quote>
 The fourth field consists of two numbers separated by a slash (/).
The first of these is the number of currently executing kernel
scheduling entities (processes, threads); this will be less than or
equal to the number of CPUs.  The value after the slash is the number
of kernel scheduling entities that currently exist on the system.
</quote>

When I take a look at /proc/loadavg this seems to make sense:

edb@lapedb:~$ cat /proc/loadavg
0.04 0.65 0.59 1/284 8102

However, suppose I run 4 background jobs of 'yes bla > /dev/null &'

edb@lapedb:~$ yes bla > /dev/null &
[1] 8111
edb@lapedb:~$ yes bla > /dev/null &
[2] 8112
edb@lapedb:~$ yes bla > /dev/null &
[3] 8113
edb@lapedb:~$ yes bla > /dev/null &
[4] 8114
edb@lapedb:~$ cat /proc/loadavg
0.18 0.59 0.57 5/289 8115
edb@lapedb:~$ cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1

Then I see that the 'fourth field' before the slash is five, whereas
the number of cpu's (dual core laptop) is only two. Hence the 'this
will be less than or equal to the number of CPUs' in the manpage is
not correct. Now if we take a deeper look at how this /proc/loadavg
gets created (in fs/proc/loadavg.c):
http://lxr.linux.no/#linux+v3.0.4/fs/proc/loadavg.c#L23

We can see that the fourth value before the fraction is the result of
'nr_running()' which is turn lives in kern/sched.c (ref:
http://lxr.linux.no/#linux+v3.0.4/kernel/sched.c#L3197 ) and this
function just counts the number of runnable threads for each of the
online cpu's. I have attached a path which rephrases this, the patch
is rather trivial.
Thanks. I've applied this for man-pages-3.36.

Cheers,

Michael



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface"; http://man7.org/tlpi/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help