的 I/O 调度程序 AL2 - Amazon Linux 2
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的 I/O 调度程序 AL2

I/O scheduler is a part of the Linux operating system that sorts and merges I/O请求和决定了它们的处理顺序。

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/O调度程序对固态设备和虚拟化环境的影响较小。这是因为对于固态设备而言,顺序访问与随机访问没有区别,而对于虚拟化环境,则由主机提供自定义的调度层。

本主题讨论亚马逊 Linux I/O 计划程序。有关其它 Linux 发行版使用的输入/输出调度器的更多信息,请参阅其文档。

支持的调度器

亚马逊 Linux 支持以下 I/O 调度程序:

  • deadline— Deadl in I/O e 调度器对 I/O 请求进行排序,并按最高效的顺序处理请求。它保证每个待处理时间过长的I/O request. It also gives I/O请求都有更高的优先级的开始时间。

  • cfq完全公平队列 (CFQ) I/O 调度程序尝试将I/O resources between processes. It sorts and inserts I/O请求公平地分配到每个进程的队列中。

  • noop— “无操作” (noop) I/O scheduler inserts all I/O 请求放入 FIFO 队列,然后将它们合并为一个请求。此调度器不会排序任何请求。

默认调度器

无操作 (noop) 是 Amazon Linux 的默认 I/O 调度程序。使用此调度器的原因如下:

  • 许多实例类型都使用虚拟化设备,其中底层主机会为实例执行调度。

  • 固态设备用于许多实例类型,在这些实例类型中, I/O 调度程序的优势影响较小。

  • 它是侵入性最小的 I/O 调度程序,可以根据需要对其进行自定义。

更改调度器

更改 I/O 调度器可以提高或降低性能,具体取决于调度程序是在给定时间内完成更多还是更少的 I/O 请求。这在很大程度上取决于您的工作负载、正在使用的实例类型的生成以及正在访问的设备的类型。如果您更改正在使用的 I/O 调度程序,我们建议您使用诸如 iotop 之类的工具来衡量 I/O 性能并确定更改是否对您的用例有利。

您可以使用以下命令查看设备的 I/O 调度程序,该命令nvme0n1用作示例。将以下命令中的 nvme0n1 替换为您实例上的 /sys/block 中列出的设备。

$ cat /sys/block/nvme0n1/queue/scheduler

要为设备设置 I/O 调度程序,请使用以下命令。

$ echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler

例如,要将xvda设备的 I/O 调度程序设置为cfqnoop请使用以下命令。

$ echo cfq > /sys/block/xvda/queue/scheduler