确定CPU上的线程是否被阻塞? 线程块的原因是什么?

uptime命令报告的负载平均值也显示在top提供平均运行队列长度(1,5和15分钟)
运行队列长度是当前正在运行的线程(任务)数量与等待(排队)运行的数量之和。
run-queue length = tasks running + tasks waiting (for cores) + tasks blocked

阻塞任务的最常见原因之一是慢速/繁忙磁盘。 当进程处于不间断磁盘睡眠/等待状态时, ps aux的状态字段(STAT)会给出“D”。 但是,当进程被阻塞时,可能还有其他的情况。

问题

  1. 有什么办法可以获得关于cpu运行队列的特定组件的更详细的信息。 例如,打破的列表:任务运行+任务等待(核心)+任务被阻止?

  2. ps中的状态字段以外的其他实用程序可用于确定哪些任务被阻止? 忙磁盘以外的其他条件会导致任务被阻塞,应该使用哪些实用程序来确定这些条件是否存在?

谢谢!