The load-average reported by uptime
command also displayed in top
provides the the average run-queue length over time (1, 5 and 15 minutes)
The run-queue length is the sum of the number of threads (tasks) that are currently running plus the number that are waiting (queued) to run.
run-queue length = tasks running + tasks waiting (for cores) + tasks blocked
One of the most common reasons for blocked tasks is slow / busy disks. While the state field (STAT) of ps aux
will give a "D" when a process is in uninterruptible disk sleep/wait. But there are probably other instances when a process would become blocked.
Questions
Is there any way to get more granular information on the specific components of the cpu run-queue. E.g. a listing that breaks down: tasks running + tasks waiting (for cores) + tasks blocked?
What utilities other than the state field in ps can be used to determine what tasks are blocked? What conditions other than busy disks would cause tasks to be blocked & what utilities should be used to determine if those conditions exist?
Thanks!