确定 CPU 上的线程是否被阻塞?线程阻塞的原因有哪些?

确定 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 中的 state 字段外,还有哪些实用程序可用于确定哪些任务被阻止?除了磁盘繁忙之外,还有哪些情况会导致任务被阻止?应使用哪些实用程序来确定是否存在这些情况?

谢谢!

相关内容