我不知道如何调试这个问题,但我注意到,如果我正在执行一项需要大量磁盘读/写的任务(例如更新大型 postgres 表),则定期实际读和写将降至 0而 dm_crypt 在 iotop 中显示 IO 使用率为 99.9%。
最重要的是,随着多个 kworker 线程的产生,整个 DE 会经常冻结。鼠标继续工作并且可以移动,但在大约 30-60 秒内没有其他窗口响应。
CPU 始终处于低利用率,并且冻结与 iotop 中显示的多个 kworker 线程同时发生。
这是冻结期间的系统日志输出
Oct 22 11:09:47 pop-os /usr/lib/gdm3/gdm-x-session[3348]: (EE) client bug: timer event5 debounce: scheduled expiry is in the past (-6ms), your system is too slow
Oct 22 11:09:47 pop-os /usr/lib/gdm3/gdm-x-session[3348]: (EE) client bug: timer event5 debounce short: scheduled expiry is in the past (-19ms), your system is too slow
Oct 22 11:10:12 pop-os gjs[184224]: JS ERROR: Gio.IOErrorEnum: Timeout was reached
_proxyInvoker@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:139:46
_makeProxyMethod/<@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:164:30
makeAreaScreenshot@/home/anthony/.local/share/gnome-shell/extensions/[email protected]/auxhelper.js:78:33
main/<@/home/anthony/.local/share/gnome-shell/extensions/[email protected]/auxhelper.js:190:21
main@/home/anthony/.local/share/gnome-shell/extensions/[email protected]/auxhelper.js:204:30
@/home/anthony/.local/share/gnome-shell/extensions/[email protected]/auxhelper.js:216:3
Oct 22 11:10:36 pop-os gnome-shell[3610]: JS ERROR: Error: cmd: gjs /home/anthony/.local/share/gnome-shell/extensions/[email protected]/auxhelper.js --filename /tmp/gnome-shell-screenshot-ZPGAT0.png --area 3640,809,948,419 exitCode=256
callHelper/<@/home/anthony/.local/share/gnome-shell/extensions/[email protected]/selection.js:87:16
Oct 22 11:10:50 pop-os gnome-shell[3610]: ../clutter/clutter/clutter-actor.c:10558: The clutter_actor_set_allocation() function can only be called from within the implementation of the ClutterActor::allocate() virtual function.
postgres 数据库存储在与操作系统不同的磁盘上,因此我的 DE 在写入时应该不会冻结?有人对我如何进一步调试这个问题并找出导致问题的原因有任何建议吗?
流行操作系统 20.04
5.4.0-7634-通用
答案1
为了解决这个问题,我必须编辑 vm.dirty_ratio 和 vm.dirty_background_ratio。问题是我写入磁盘的速度超过了磁盘可以处理的速度,并且每当缓存被填满时系统就会冻结。