为什么在 Linux 下程序会卡在 log_wait_commit 中?

为什么在 Linux 下程序会卡在 log_wait_commit 中?

我的 Linux 安装中存在一些微妙的错误,我就是找不到它。

它是 Ubuntu Lucid Lynx (10.04) 64 位。硬件是 Dell Optiplex 960:Intel Core 2 四核 CPU、8GB RAM、2x 300GB HDD。/home 在一个磁盘上是 ext2,其他所有内容都在另一个磁盘上(/ 也是 ext3)。我有一个 VirtualBox 运行 64 位 Vista 映像用于 Outlook 日历,但重量级应用程序是 IntelliJ、NetBeans、MySQL 和 Opera。Opera 还加载我的邮件(IMAP),其中有超过 10,000 条消息。

问题是 Opera 有时会停顿几秒钟。查看进程列表显示它处于停顿状态,log_wait_commit这意味着(据我所知)文件系统正在拖延进程。有时我可以通过执行 subversion 更新来实现这一点,但通常它发生的原因我看不出。这通常发生在 Opera 上,但我也看到过 NetBeans 出现故障。它不会导致应用程序崩溃 - 它只是在几秒钟内完全没有响应。

谷歌搜索不是有帮助。我最接近的做法是删除文件系统中的同步属性。这毫无效果。在一位 Linux 专家朋友的建议下,我把这个值降低/proc/sys/vm/dirty_writeback_centisecs到了 300,但这也没什么用。而这也是他唯一能想到的办法。

发生了什么事?我能解决吗?(怎么解决?)

答案1

我在各种论坛上看到过不少此类挂起问题,但从未得到修复。由于这个问题似乎已在我的计算机上得到修复,我在此分享我所知道的信息:

  1. 在我的四台 Ubuntu 系统中,所有系统都使用 10.04 和 ext3 文件系统,只有一台 AMD 四核处理器系统出现了这个问题。其他三台都是英特尔四核处理器。这可能是一个巧合。
  2. 经常挂起的进程是浏览器(无论我使用哪一个)和 gconf-d
  3. 这个问题是在 9.04 更新时出现的。未打补丁的 9.04 不会出现挂起,安装 9.04 更新后会立即再次出现。这是可重现的。包括 10.10 在内的所有后续版本都会出现挂起。

似乎已经修复了该问题:

使用 ext4 对所有文件系统(包括 /home)进行完全重新安装。当然,我之前尝试过重新安装,但将 FS 保留在 ext3 上。

相关内容