普通硬盘的 I/O 调度程序

普通硬盘的 I/O 调度程序

对我来说,找出内核中 I/O 调度程序的最佳选择是一个挑战。首先我了解到它是主观的,然后它取决于您使用的文件系统。

我知道您No-op肯定应该使用固态硬盘 (SSD)。

我想知道的是包含 Ext4 和 NTFS 文件系统(MBR 样式)的普通(旋转)HDD 的最佳选择。

GPT 或 MBR 对我的选择有影响吗?

答案1

我知道您肯定应该对固态硬盘或 SSD 使用无操作。

不必要。我不知道为什么人们一直将 SSD 视为不需要其他调度程序的优势的特殊情况。拥有旋转磁盘仅意味着合并请求更重要。合并请求只是调度程序所做的一件事。

CFQ、Deadline 等的作用远不止于此。例如,CFQ 让您可以为特定进程提供高于其他进程的优先级(通过ionice),而 Deadline 可以为您提供延迟保证。其中任何一个仍然与 SSD 相关。

摆脱旋转磁盘仅意味着您的调度程序决策可能更多地是关于您希望如何划分往返磁盘的带宽,而不仅仅是合并请求。

编辑:我还将指出,在我的系统上,可以使用/sys/block/sdXX/queue/nomerges可调参数关闭合并(无论调度程序如何)。 Deadline 还提供了一个用于禁用前端合并的可调参数。

我想知道的是包含 ext4 和 NTFS 文件系统的普通(旋转)硬盘的最佳选择。 (MBR 风格)。

调度程序的选择可能并不完全依赖于您正在使用的文件系统。无论如何,目录和经常使用的文件最终都会出现在文件系统缓存中。无论哪种方式,似乎没有一个调度程序具有任何使一个文件系统(XFS、ext3、ext4+extents、reiserfs 等)优于另一个文件系统的功能。

NTFS 往往会变得严重碎片化,因此较小的文件系统read_ahead_kb可能会更有利(您必须试用它才能找到适合您的文件系统)。基本上,如果它是一个严重碎片化的卷,那么提取相邻数据可能只会阻塞可能用于合法请求的带宽。

GPT/MBR 根本不会影响这个决定。

相关内容