Linux Interview Question 9: Load Average Uninterruptible IO
Linux Interview Questions · Test 1 · question 9 of 10
A 4-core application server alerts on a load average of 18.2, 17.9, 16.5. In top, the CPUs are about 95% idle, wa (I/O wait) is elevated, and ps shows dozens of application processes in state D. The NFS server that backs the /data mount stopped responding about 20 minutes ago.
What is the best explanation for a load average this high while the CPUs are mostly idle?
Show answer and explanation
Answer:
On Linux, the three load-average figures are 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. That second part is Linux-specific and trips up many candidates. Processes that touch /data while the NFS server is unresponsive block in uninterruptible sleep. They use no CPU, which is why top shows the CPUs idle, but each one adds 1 to the load. A load of 18 on 4 cores with idle CPUs points you away from "CPU saturation" and toward storage or network filesystems. The next steps are to check the NFS server and the mount, not to add CPUs.
Option A is wrong on the facts: Linux explicitly includes D-state tasks. A CPU-bound process would also show up as busy CPU time in top, which the stem rules out.
Option B is wrong because no OOM-killer "queue" feeds the load average, and nothing in the stem indicates memory pressure. Memory pressure would show as swapping or OOM messages in the kernel log.
Option D is wrong because load average is not a percentage. It is an average count of tasks; compared with 4 cores, 18 means roughly 4.5 tasks wanting (or waiting on) each core.
Reference: proc_loadavg(5) - Linux manual page