ænd*_*rük 11 cpu-load disk-usage
大约每周两次,整个图形界面会在没有警告的情况下锁定大约 10-20 秒,而我正在执行诸如浏览网页或写论文之类的简单任务。发生这种情况时,GUI 元素不会响应鼠标或键盘输入,并且系统监视器小程序显示 100% IOWait 处理器使用率。
今天,我终于碰巧在问题开始时已经打开了 GNOME 终端。尽管 Google Chrome、Firefox、GNOME Do 和 GNOME Panel 等其他应用程序没有响应,但终端仍然可用。我运行iotop并观察到命名[flush-8:16]和[jbd2/sdb2-8]交替使用 99.99% IO 的命令。
这些是什么,我如何防止它们导致 GUI 无响应?
$ mount | grep ^/dev
/dev/sda1 on / type ext4 (rw,noatime,discard,errors=remount-ro,commit=0)
/dev/sdb2 on /home type ext4 (rw,commit=0)
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/sdb3 partition 1052252 0 -1
Run Code Online (Sandbox Code Playgroud)
/dev/sda是OCZ-VERTEX2和/dev/sdb是一个WD10EARS。这是dumpe2fs /dev/sdb2和smartctl /dev/sdb --all。
我在dmesg或 中没有看到任何异常/var/log/syslog。
我大胆提出一个理论:
/dev/sdb1也许是交换空间?
如果图形界面的核心内容已卸载到磁盘,则 GUI 无法继续运行,直到收到这些数据。如果交换磁盘正在睡眠,这意味着它会卡住,直到磁盘响应。
我认为这会产生临时锁定,并且 10-20 秒的时间段适合休眠磁盘响应所需的时间。终端可能仍然有响应,因为它所需的一切已经在 RAM 中。
一些探索理论的终端工具:
hdparm -C /dev/sdX告诉您磁盘是否正在睡眠:
$ sudo hdparm -C /dev/sdb
/dev/sdb:
drive state is: standby
Run Code Online (Sandbox Code Playgroud)
active/idle意味着它正在运行。处于停止旋转状态,需要一段时间才能再次启动standby。sleeping看man hdparm。
free -m表示使用了多少交换空间:
$ free -m
total used free [...]
Mem: 5973 4928 1045 [...]
-/+ buffers/cache: 1091 4882
Swap: 6234 0 6234
Run Code Online (Sandbox Code Playgroud)
“Swap:”是相关行,在此示例中,有 6.2 GB 交换可用,但未使用任何内容。
如果这是问题所在,您可以将交换区移至 sda 或禁用 sdb 的降速。
| 归档时间: |
|
| 查看次数: |
13883 次 |
| 最近记录: |