的处理进入不间断睡眠当它发出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.
感谢您的快速提示。第二个链接(Novell)确实有助于进一步调试它。在我的系统中,我们没有磁盘,而是所有的FS都是NFS挂载的,而且大多数情况下,我并不认为它在文件操作中卡住/停顿,但可能会在poll_schedule_timeout中看到花费更多的数量...... – Snake
NFS尽力模拟本地磁盘,所以从程序的角度来看,open/read/write/close需要尽可能地像本地磁盘I/O一样。正如另一个答案指出的那样,NFS R/W文件系统应该很难安装,避免中断以减少数据丢失,R/O系统可能是软安装的,在这种情况下,SIG可能导致中断的调用。没有太多时间超越基础知识,如果答案是帮助你选择NICE的话,那么我们可以帮助你获得积分。 – Rob11311