Why/how does "uptime" show CPU load >1?
Load is not equal to CPU usage. It is basically an indicator how many processes are waiting to be executed.
Some helpful links:
- https://superuser.com/questions/23498/what-does-load-average-mean-in-unix-linux
- http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
uptime
shows system load (not exactly CPU usage), which is described in man uptime
as follows:
System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk. The averages are taken over the three time intervals. Load averages are not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.
As long as the load is less than the number of CPU cores you have, it should be fine. If it gets above, it means that your system is not able to cope with its workload "real time". Thus, some processes need to wait to get CPU time (or IO access). A waiting line is created.
If you have a 2.7 load it means that on average (during the last 1, 5 or 15 minutes, depending on the value you look at), 2.7 processes are trying to execute in parallel, but you only have 1 core, so your system is overloaded. You're asking too much from it.
Don't panic though, it may not be such a problem: once the work is finished, things usually get back to normal.
Uptime shows the output of /proc/loadavg
for loads.
The manpage of man 5 proc
says
/proc/loadavg
The first three fields in this file are load average figures giving
the number of jobs in the run queue (state R) or waiting for disk
I/O (state D) averaged over 1, 5, and 15 minutes.
So you can have high loads even if you have 0% CPU usage. One Core can gain loads up to 100% or 1 on multi processor systems.
See also High CPU load during I/O