我刚刚将 Xubuntu 16.04-64 位安装到笔记本电脑的第二个分区。我注意到它有时看起来有点慢,所以我检查了它用于该驱动器的 IO 调度程序,结果证明deadline适用于所有驱动器。我确实有几个 SSD 和硬盘驱动器,所以我知道“截止日期”最适合 SSD 和cfq硬盘驱动器。
我在另一个分区上启动到 14.04,它应该cfq用于旋转驱动器和deadlineSSD。我还/etc/udev/rules.d查看了 14.04 是否使用规则来配置驱动器类型,但它不存在,所以我假设内核正在这样做。
所以我想知道这是一个错误还是他们现在对所有事情都使用“截止日期”?
更新:我写的关于 /etc/udev/rules.d 的评论是错误的。事实上,自从几年前我开始使用 SSD 以来,我一直在使用 udev 规则根据轮换类型更改调度程序(就像下面的答案一样)。我想我只是忘记了……变老了。无论如何,我使用的参考资料之一是Debian SSD optimization wiki。
如果包括在内,那不是一个好主意吗?只是一个建议!
我以前从未遇到过这种情况,但大多数时候我都会小心地nice ionice -c3在要执行的命令前面加上 a 。但这一次的使用nice,ionice只是延缓了效果。
不管怎样,我使用 Ubuntu 20.04 作为我的主系统,即作为台式机。它已完全修补并且是最新的,运行 5.4 内核(即没有其他可用的内核)。我用 Cinnamon 运行它(是的,它是 Ubuntu 本身,而不是 Mint 等),但是当我上次重新安装它时,系统必须通过服务器 ISO 安装,因为没有一个桌面 ISO 启动成功。我提到这一点是因为我不确定这是否会以某种方式发挥作用。
当我开始7z压缩几十GiB大小的文件时,系统变得完全没有响应。无法切换到文本控制台,无法通过 SSH 连接,无法移动鼠标光标......
从这种情况中恢复的唯一方法是重新启动系统(在我的例子中,我长按电源键)。
现在,在发生这种情况之后,我阅读了一些有关 Linux 调度程序的内容(我没有主动修改它),并了解到 CFS(完全公平调度程序)是自某些版本以来的默认调度程序。然而,很明显,它让所有其他进程都挨饿,转而支持以 Nice 启动的程序ionice -c3……这似乎一点也不公平。
systemd 日志仅显示文件系统驱动程序无法为托管同时运行的虚拟机的进程写入内容。
我怎样才能进一步诊断这个问题并最终解决这个问题,这样我打算用作桌面的系统就不会变得完全没有响应?
注意:我宁愿 OOM 杀手介入并狙击某些进程,也不愿系统变得完全无响应。但据我所知,OOM 杀手并不介意。
系统有 64 GiB 的 RAM,没有活动的交换文件(我可以忍受少数因为内存不足而导致程序失败的情况)
# sysctl -A | grep -v _domain | grep '\.sched'
kernel.sched_autogroup_enabled = 1
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_itmt_enabled = 1
kernel.sched_latency_ns = …Run Code Online (Sandbox Code Playgroud)