Linux – How does load average work with modern CPU’s

cpulinuxload

My understanding of load average lead me to be quite shocked with my current system. The CPU in my workstation is an i7 with hyperthreading enabled, and cat /proc/cpuinfo produces 4 'cpu's.

That all given, my PC can generate over a 16 in all the load average slots from 1 minute to 15 minutes while compiling packages for Gentoo, but still be working perfectly for all other tasks as well. I've even seen it as high as 24, though it was starting to slow down at that point. How does this work, if 1.0 is supposed to represent one core at full utilisation?

Best Answer

1.0 is an average of one job waiting over the given time period, not 1 core at 100% utilisation.

An idle computer has a load number of 0 and each process using or waiting for CPU (the ready queue or run queue) increments the load number by 1. Most UNIX systems count only processes in the running (on CPU) or runnable (waiting for CPU) states. However, Linux also includes processes in uninterruptible sleep states (usually waiting for disk activity), which can lead to markedly different results if many processes remain blocked in I/O due to a busy or stalled I/O system. This, for example, includes processes blocking due to an NFS server failure or to slow media (e.g., USB 1.x storage devices). Such circumstances can result in an elevated load average, which does not reflect an actual increase in CPU use (but still gives an idea on how long users have to wait).

from here

Related Question