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

r00*_*004 2 scheduling io hard-disk linux-kernel

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

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

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

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

Bra*_*ley 5

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

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

CFQ、截止日期等都做的不止这些。例如,CFQ 让您将特定进程优先于其他进程(通过ionice),而 Deadline 为您提供延迟保证。这些中的任何一个仍然可以与 SSD 相关。

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

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

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

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

NTFS 往往会变得严重碎片化,因此较小read_ahead_kb的可能是有益的(您必须尝试使用​​它才能看到哪些对您有用)。基本上,如果它是一个严重碎片化的卷,那么拉入相邻数据可能只会扼杀本可以用于合法请求的带宽。

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

  • 性能调优涉及以对其他人有害但对您的工作负载更有效的方式更改系统的行为。如果某些东西绝对提供了更好的性能,那么软件只会做那件事,而让您独自一人。如果某些设置通常是有益的,那么维护人员应该将其设为默认设置,而让您自己管它。因此,您必须告诉我们更多有关您如何使用该系统的信息,以便我们知道要修剪哪些内容以及向其中添加哪些内容。 (2认同)