gpt4 book ai didi

linux - 关于/proc/stat命令输出的进程状态

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:27 26 4
gpt4 key购买 nike

当我通过/proc//stat 检查我的进程的进程状态输出时,我了解到它主要处于“D”状态,这意味着不可中断的 sleep 。我知道它正在做一些不能被打断的操作,但是有人可以帮我列出这个 IO/Uninterruptible sleep 中包含的所有操作吗?

任何链接也很好理解。

D 不间断 sleep (通常是IO)R 正在运行或可运行(在运行队列上)S 可中断 sleep (等待事件完成)T 已停止,通过作业控制信号或因为它正在被跟踪。W 分页(自 2.6.xx 内核起无效)X 死了(永远不应该被看到)Z Defunct(“僵尸”)进程,已终止但未被其父进程收割。

谢谢..

最佳答案

进程在发起IO请求(可以是磁盘、网络等)时进入不间断 sleep 状态,等待请求完成。通常大量(例如超过 5-6;当然这取决于)处于 D 状态的进程表明可能存在一些需要解决的严重问题。

以下情况是我想到的许多进程处于 D 状态的原因:

  • 如果您失去与 NFS 服务器的连接。在 NFS 服务器上执行某些 IO 的所有进程都将进入 D 状态。请注意,NFS 服务器上的缓慢操作(由服务器的磁盘/RAID 阵列问题引起)也可能导致客户端上大量进程处于 D 状态,即使客户端与服务器之间的网络连接正常。
  • 您的磁盘/RAID 阵列出现故障,例如由于坏扇区导致读取/写入速度变慢。这就是为什么有“RAID 版”磁盘有助于缓解此类问题的原因(更多信息请访问 Error recovery control);

ps 命令的 wchan 说明符可以很好地提示 sleep 的原因:

ps -eo ppid,pid,user,stat,pcpu,comm,wchan

更具体地说,wchan 说明符显示以下信息 (man ps):

进程在其中休眠的内核函数的名称,如果进程正在运行则为“-”,如果进程是多线程且 ps 未显示线程则为“*”。

关于linux - 关于/proc/stat命令输出的进程状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com