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

时间:2014-07-03 15:10:36

标签: linux proc stat

当我通过/ proc // stat检查我的进程的进程状态输出时,然后知道它主要在" D"这意味着不可怜的睡眠。我知道它正在做一些不能被打断的操作,但有人可以帮我列出这个IO /不间断睡眠中所包含的操作吗?

任何链接也可以理解。

D不间断睡眠(通常为IO) R正在运行或可运行(在运行队列中) S可中断睡眠(等待事件完成) T通过作业控制信号停止或因为它被跟踪而停止。 W分页(自2.6.xx内核以来无效) X死了(绝不应该看到) Z Defunct(" zombie")进程终止但未被其父级收回。

谢谢..

2 个答案:

答案 0 :(得分:1)

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

下面的案例是D状态中许多过程的原因:

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

wchan命令的ps说明符可以给出关于睡眠原因的好提示:

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

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

name of the kernel function in which the process is sleeping, a "-" if the process is running, or a "*" if the process is multi-threaded and ps is not displaying threads.

答案 1 :(得分:0)

它可能是磁盘I / O某些(慢)调用可以返回EINTR,例如,读取等待来自tty的键盘输入。快速系统调用不会被信号中断。

https://unix.stackexchange.com/questions/62693/why-uninterruptible-sleep-is-not-counted-as-idle

有关Wiki Sleep的不间断睡眠的更多信息 此页面显示了如何使用vfork(2)disown, zombie children, and the uninterruptible sleep来诱导此状态 来自Novell Processes in an Uninterruptible Sleep (D) State

的一些支持信息