load averages -- what does it mean?
I have read probably over fifty explanations of load average. I am trying to start listing some ideas here. I also need to list the concepts from the source.w(1): "The load average numbers give the number of jobs in the run queue averaged over 1, 5 and 15 minutes."
getloadavg(3): "the number of processes in the system run queue averaged over various periods of time." This fuction (under NetBSD) gets its info from sysctl vm.loadavg (or VM_LOADAVG).
Jordan Hubbard posted:
The load average is the number of processes which are ready to run and still on the run queue, e.g. they're not sleeping on anything but not currently running either. Since it's a running average, if you go from zero processes waiting to 3 processes waiting, the load average will slowly climb to 3 and then stabilize.
I have read that one program taking up all CPU time will give a load average of 1.00.
I read that the load average is based on a sum of two numbers. One number is the average number of processes in "D" (block disk I/O) state (such as device driver error); and the other is the average number of programs that are ready to do CPU operations. (So for example a load average of 37 may mean that 37 programs have become blocked on disk IO.)
One program being blocked on disk IO (for example, reading from a floppy disk) will give a load average of 1.00. Two programs blocked on disk IO to different disks and a third program that is doing a lot of CPU usage will result in load average of 3.00 while the machine is running as efficiently as it can.
I am not sure if that is totally correct.
Then I have also read that it is the average number of processes waiting in the process scheduler's run queue. There is no maximum, but the higher it becomes, the slower your machine will run. Whenever it goes above 1, your system is being fully utilised.
It is said that the load average is not a very good way of measuring system performance and/or use.
to look at: http://faq.mrtg.org/linux/proc-load.html