大约每周两次,当我在执行一些简单的任务(例如浏览网页或撰写论文)时,整个图形界面会毫无预警地锁定约 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
/dev/sda
是一个OCZ-VERTEX2并且/dev/sdb
是WD10EARS。 这是dumpe2fs /dev/sdb2
和smartctl /dev/sdb --all
。
我没有发现dmesg
或有任何不寻常的地方/var/log/syslog
。
答案1
我大胆提出一个理论:
/dev/sdb1
也许是交换空间?
如果图形界面的核心部分被卸载到磁盘,GUI 就无法继续运行,直到收到这些数据。如果交换磁盘处于休眠状态,这意味着它会卡住,直到磁盘响应。
我认为这会导致暂时锁定,10-20 秒的时间正好是休眠磁盘响应所需的时间。终端可能仍然响应,因为它所需的所有内容都已存储在 RAM 中。
一些探索理论的终端工具:
hdparm -C /dev/sdX
告诉您磁盘是否处于休眠状态:$ sudo hdparm -C /dev/sdb /dev/sdb: drive state is: standby
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
“Swap:” 是相关的行,在这个例子中,有 6.2 GB 的交换可用,但未使用任何内容。
如果是这个问题,您可以将交换移至 sda 或禁用 sdb 的 spindown。