2014-07-03 33 views
1

当我通过/ proc // stat查看进程的进程状态输出时,大多知道它处于“D”状态,这意味着Unterrptible睡眠。我知道它正在做一些不能被打断的操作,但是有人可以帮我列出IO/Uninterruptible睡眠中包含的所有操作。关于/ proc/stat命令输出的进程状态

任何链接也很好理解。

d不间断睡眠(通常IO) R运行从或可运行(在运行队列) 小号可中断睡眠(等待一个事件来完成) T已停止,或者通过作业控制信号,或因为它正在被跟踪。 W分页(自2.6.xx内核以来无效) X dead(永远不会看到) Z已停止(“僵尸”)进程已终止但未由其父节点收回。

谢谢..

回答

0

这是proably磁盘I/O部分(慢)调用时返回EINTR例如)读取TTY等待键盘输入。快速系统调用不会被信号中断。大约在维基Sleep 不间断睡眠

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

更多信息这个页面显示如何使用vfork的诱导这种状态(2)disown, zombie children, and the uninterruptible sleep Novell的一些支持信息Processes in an Uninterruptible Sleep (D) State

+0

感谢您的快速提示。第二个链接(Novell)确实有助于进一步调试它。在我的系统中,我们没有磁盘,而是所有的FS都是NFS挂载的,而且大多数情况下,我并不认为它在文件操作中卡住/停顿,但可能会在poll_schedule_timeout中看到花费更多的数量...... – Snake

+1

NFS尽力模拟本地磁盘,所以从程序的角度来看,open/read/write/close需要尽可能地像本地磁盘I/O一样。正如另一个答案指出的那样,NFS R/W文件系统应该很难安装,避免中断以减少数据丢失,R/O系统可能是软安装的,在这种情况下,SIG可能导致中断的调用。没有太多时间超越基础知识,如果答案是帮助你选择NICE的话,那么我们可以帮助你获得积分。 – Rob11311

1

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

下面的情况是这,我想起的原因在d状态的许多过程的那些:

  • 如果失去连接到NFS服务器。在NFS服务器上执行某些IO的所有进程都将进入D状态。请注意,NFS服务器上的缓慢操作(由服务器磁盘/ RAID阵列引起的问题)也可能导致客户机上处于D状态的大量进程,即使客户机与服务器之间的网络连接良好。
  • 您的磁盘/ 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.

+0

感谢您的快速提示。当我观察到进程大多处于D状态时,wchan主要报告poll_schedule_timeout和另一半0 .. do_page_fault的数目也很少。此进程对套接字操作没有太大的作用,因为所有内容都被卸载到不同的进程,到另一个核心..是否有任何具体的方法来了解NFS读/写是否导致在D状态这个过程很长一段时间?在更多观察中,进程用户空间CPU占用率为〜50%,系统空间占用率为〜20%(不知道为什么这里有更多时间)。 – Snake

+0

您可以尝试对流程进行“分析”,并查看哪些系统调用会出现延迟。不幸的是,检测NFS问题有时很痛苦。首先,您可以检查服务器,并在'iostat -x 1'中监视它是否存在高'%util'字段。经常不应该超过90%。另外,D状态中不应该有很多'nfsd'进程。在客户端,你可以使用'while true;做nfsstat -rc;睡2;完成“并监视重传(重传),这可能表明网络存在问题。 – VolenD

+0

谢谢.. Strace不可能违反这个流程,因为它处理了很多例外情况来对处理器进行虚拟化。当我尝试附加strace时,进程重启。我正在为PPC拱门获得iostat rpm。我快速监视了nfsstat,下面是呼叫计数增加的输出,并且在整个监视的时间段内重新传输没有改变。 客户端rpc统计数据: 来电转接authrefrsh 296698 1384 57 – Snake

相关问题