Site Reliability Engineering interview question · Most asked

A Linux server has a high load average. How do you find out why?

Summary

Load average counts runnable tasks plus tasks in uninterruptible sleep (usually waiting on disk or network I/O), averaged over 1, 5 and 15 minutes. Compare it with the CPU count, then check whether CPU is busy (top, mpstat), tasks are blocked on I/O (vmstat 'b' column, iostat -x), memory is short (swapping, free, vmstat si/so), or something else saturates.

Longer Answer

A quick sequence (similar to Brendan Gregg's "Linux performance analysis in 60 seconds"): uptime, dmesg | tail (OOM kills, errors), vmstat 1, mpstat -P ALL 1, pidstat 1, iostat -xz 1, free -m, sar -n DEV 1, sar -n TCP,ETCP 1, top. High load with idle CPU usually means I/O wait or many blocked threads; high load with saturated CPU means not enough CPU (or a runaway process). In containers, also check CPU throttling from cgroup limits.

Key Points

  • Load = runnable + uninterruptible tasks.
  • Compare with CPU count.
  • CPU vs I/O vs memory vs throttling.
  • vmstat, mpstat, iostat, pidstat, dmesg.

More most-asked Site Reliability Engineering questions

← All Site Reliability Engineering questions