系统定期停顿少于 1 秒,然后正常恢复

系统定期停顿少于 1 秒,然后正常恢复

我的系统会定期短暂地停止运行(不到 1 秒)。当这种情况发生时,鼠标指针会卡住或不稳,我的键盘输入不会显示在屏幕上。完成后,键盘输入会立即出现,我的鼠标会跳转到它应该在的位置。

我在 MacBook Air 上运行 Ubuntu 13.04。我将交换量调低至 10,还查看了 vmstat(以检查是否在交换),并查看了 dmesg 和 syslog,以及 top。我没有发现任何异常行为,没有日志消息,也没有交换。

我的系统已完全更新。

$ uname -a
Linux wega 3.8.0-21-generic #32-Ubuntu SMP Tue May 14 22:16:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

发生一次停顿时,使用 iostat -xm 1 捕获了以下输出:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10,08    0,00    3,27    0,25    0,00   86,40

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0,00    13,00    0,00    2,00     0,00     0,06    60,00     0,01    4,00    0,00    4,00   4,00   0,80
dm-0              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00

有一些 io,但我并不完全相信这是问题所在,尤其是因为这只是几个写入请求。当我运行 bonnie++ 时,它在写入方面取得了良好的结果,并且停顿的频率似乎没有增加。

我之前在 /tmp 上运行过 bonnie++,效果非常好,现在我在加密的主目录上运行它,效果完全不行,CPU 使用率为 99%,但磁盘利用率几乎为 0(iostat 显示)。

答案1

如果您同意从源代码构建内核,则内核配置中有一些选项可能会影响正在运行的机器的延迟和明显的响应能力。

例如,在我的笔记本电脑上的内核的构建配置中,我使用:

CONFIG_PREEMPT=y
CONFIG_HZ_1000=y
CONFIG_HZ=1000

这似乎可以为桌面使用带来合适的响应能力。

当然,不熟悉内核构建的读者可能需要查阅一些有关该过程的文档。似乎有许多关于在 Ubuntu 上构建自定义内核的“Howto”类型的文档。这是一个简单的制作菜单配置。当然,它没有提到Linux 工具包和相关包,但它确实涉及到如何从源代码构建内核。

这是一个更广泛的教程,具有从内核的 Git 存储库直接提取的功能。祝你好运。HTH。干杯。

答案2

您能否检查一下这些停顿是否与磁盘活动有关?

Ubuntu Desktop 附带启用了 mlocate 的功能,它每天“扫描”驱动器一次并生成大量读取。
在我的桌面上,它经常导致像您这样的停顿。在 /etc/cron.daily 中禁用 mlocate 为我解决了这个问题 ( sudo mv /etc/cron.daily/mlocate /etc/cron.daily/mlocate.disabled)

相关内容