低延迟 IO 调度程序

低延迟 IO 调度程序

我有一些虚拟机运行的是 Ubuntu 基于云的映像 14.04-1 LTS 版本。我想查看虚拟机上不同 IO 调度程序的 IO 性能,所以我/sys/block/<drive>/queue/scheduler在客户操作系统上转到 更改 IO 调度程序。通常,应该有cfqdeadlinenoop可供选择。但我看到的是none。这是否意味着 Canonical 已删除基于云的映像中的 I/O 调度程序,或者none此处的调度程序是重命名的noop调度程序?如果系统中没有 I/O 调度程序会发生什么?所有 io 请求都按 FIFO 顺序直接发送到主机?

谢谢您的启发!

答案1

这个 Debian Wiki

低延迟 IO 调度程序

(对于使用 NVMe 协议而非 SATA 的 SSD,此步骤不是必需的,因为它们会绕过传统的 I/O 调度程序并改用模块blk-mq。)

默认 I/O 调度程序会将数据排队以尽量减少 HDD 上的寻道,而这对于 SSD 来说不是必需的。因此,请使用"deadline"仅确保批量事务不会减慢小事务速度的调度程序:安装sysfsutils

echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf

(调整 sdX 以匹配您的 SSD)重新启动或

echo deadline > /sys/block/sdX/queue/scheduler

因此,答案是:none不是的别名noopnone表示“未使用调度程序”。

答案2

似乎在内核 >= 3.13 上none不再是别名noop。当blk-mq输入/输出框架正在使用中;这意味着完全绕过旧的调度程序,因为blk-mq(现在)根本没有调度程序可供选择。

在早期内核中,none实际上是 的一个记录不全的别名noop。请参阅这里更多细节。

答案3

None 不是 noop 的别名。

显示 None 是因为没有使用调度程序。使用 NVMe 协议而非 SATA 的 SSD 会绕过传统的 I/O 调度程序。

答案4

https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers

none (多队列) 多队列无操作 I/O 调度程序。不重新排序请求,开销最小。非常适合快速随机 I/O 设备(如 NVME)。

相关内容