我刚刚将 Xubuntu 16.04-64 位安装到笔记本电脑的第二个分区。我注意到它有时看起来有点慢,所以我检查了它用于该驱动器的 IO 调度程序,结果证明deadline
适用于所有驱动器。我确实有几个 SSD 和硬盘驱动器,所以我知道“截止日期”最适合 SSD 和cfq
硬盘驱动器。
我在另一个分区上启动到 14.04,它应该cfq
用于旋转驱动器和deadline
SSD。我还/etc/udev/rules.d
查看了 14.04 是否使用规则来配置驱动器类型,但它不存在,所以我假设内核正在这样做。
所以我想知道这是一个错误还是他们现在对所有事情都使用“截止日期”?
更新:我写的关于 /etc/udev/rules.d 的评论是错误的。事实上,自从几年前我开始使用 SSD 以来,我一直在使用 udev 规则根据轮换类型更改调度程序(就像下面的答案一样)。我想我只是忘记了……变老了。无论如何,我使用的参考资料之一是Debian SSD optimization wiki。
如果包括在内,那不是一个好主意吗?只是一个建议!
Col*_*ing 32
Ubuntu 内核团队定期对不同文件系统和 I/O 调度程序上的不同模拟工作负载进行大量分析,以了解最佳通用 I/O 调度程序选择。一般的答案是,对于所有不同类型的媒体安装的所有不同类型的通用配置,没有完美的 I/O 调度程序选择。要记住的要点是:
系统正在迁移到 SSD,因此 noop 或deadline 最适合这些;noop 的 CPU 开销比deadline 少。
CFQ 与截止日期是一个艰难的决定。CFQ 确实允许更大的灵活性。然而,我们发现,对于更广泛的模拟 I/O 操作,与 CFQ 相比,deadline 提供了更低的延迟和略高的吞吐量。
我定期对一系列文件系统和 I/O 调度程序的内核进行基准测试(每个内核测试需要 3 天以上才能完成)。据此,以及其他各种数据,我们试图就最佳选择做出明智的决定,请参阅:
http://kernel.ubuntu.com/~cking/fs-tests/
所有 I/O 调度程序都有优点/缺点,因此任何默认值都不是完美的,如果令人信服的数据和理由表明我们需要更改默认选项,Ubuntu 内核团队总是愿意输入默认选项。
我不知道为什么开发人员决定选择deadline
默认调度程序,也许是因为大多数新计算机都带有 SSD,通常系统都安装在 SSD 上。您可以通过这种方式手动设置调度程序,以防您尚未安装它...安装gksu
:
打开终端并执行:
sudo apt install gksu
Run Code Online (Sandbox Code Playgroud)
然后执行这个命令:
gksudo gedit /etc/udev/rules.d/60-schedulers.rules
Run Code Online (Sandbox Code Playgroud)
将以下文本粘贴到空文件中并保存更改后的文件。
# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Run Code Online (Sandbox Code Playgroud)
重新启动操作系统,现在您正在使用 HDD 和 SSD 的最佳调度程序。
随着 14.04 的发布,3.13 内核的默认调度程序从 CFQ更改为 Deadline。
不再有单独的服务器内核,并且 CFQ 调度程序不适用于许多服务器使用场景,例如KVM 写入超时。使用USB 设备的台式机甚至会出现性能下降。
归档时间: |
|
查看次数: |
18215 次 |
最近记录: |