由于进程进入“磁盘休眠”,如何阻止Ubuntu挂起?


5

我在AMD上使用Ubuntu 9.04 64位。当某些进程的CPU使用率%进入“磁盘休眠”时,它会定期挂起几分钟。在此期间,我无法启动新程序,桌面上的大多数程序都无法响应。

我宁愿它没有挂起,我的应用程序仍然可靠响应。为什么会发生这种情况,如何阻止它?


我见过这种行为,进程访问挂载的文件系统,主要是NFS。你的系统上有NFS,Samba,USB挂载吗?
nagul

我有几个CIFS挂载和一个webdav分区。可能是问题所在。我可以让它们在不可用时消失而不是挂起系统吗?
joeforker

问题是由于网络延迟或驱动程序问题,它们间歇性地不可用。根据我的经验CIFS,NFS很容易出现这种行为。如果默认情况下卸载这些解决方案,是否可以接受解决方案,并在需要时挂载它们?
nagul

Answers:


7

磁盘睡眠或不间断睡眠中的进程通常在等待某些I / O操作完成。在这种状态下,它不能被信号唤醒,因此不能使用SIGKILL信号终止该过程。

我对发生的事情的理解有限:内核中的CPU调度程序维护一个运行队列,该队列是准备运行的进程列表。当进程获得CPU时,它也是

  1. 充分利用它的时间片并计划出来,或者
  2. 它需要等待操作的响应,通常是I / O,并且请求被转移到休眠队列,等待事件。

由于#2而调度出的进程也向调度程序指示它们在等待事件时是否应该被中断。如果在被信号(通常是设备驱动程序)中断时它们无法继续正常操作,它们将表明它们应该仅由事件唤醒。它们处于不间断睡眠状态,并将被移动到睡眠队列中。

如果您因磁盘睡眠而经常冻结系统,则可能是其中之一

  • 越野车设备驱动程序
  • 硬件故障(磁盘驱动器?)
  • 装入缓慢响应的文件系统。

我已经一次又一次地看到了NFS文件系统。如果由于某种原因设备响应丢失,则进程将保持睡眠状态,这使得几乎不可能使用mount /设备直到重新启动。

如果您认为这是您的硬盘访问导致I / O冻结,那么检查驱动器上是否存在坏块或扇区可能是谨慎的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.