我们的系统具有旋转机械磁盘和 NVME 存储。我们希望通过取消任何 IO 调度程序来减少 IO 的 CPU 开销。我们想在 Linux 启动命令行上指定它;即在GRUB_CMDLINE_LINUX
文件中/etc/default/grub
。
- 对于机械磁盘,我们可以附加
elevator=noop
到命令行。这对应于中的noop
值/sys/block/sda/queue/scheduler
- 对于 NVME 存储,我们改为使用
none
in/sys/block/nvme0n1/queue/scheduler
; 大概(无法确认)可以在引导时通过附加elevator=none
.
这变成了一个两部分的问题:
elevator=none
用于 NVME 存储的值是否正确GRUB_CMDLINE_LINUX
?- 可以在 中指定这两个值
GRUB_CMDLINE_LINUX
吗?
如果第二个是正确的,我猜这elevator=noop
将为旋转磁盘正确设置,但 NVME 控制器会优雅地忽略它;然后elevator=none
将为 NVME 磁盘正确设置,但旋转磁盘控制器将优雅地忽略.
I/O 调度程序在引导时全局分配。
即使您使用多个
elevator=[value]
分配,也只有最后一个会生效。要自动/永久设置每个设备的调度程序,您可以使用
udev
规则、systemd
服务或配置和性能调整工具,例如tuned
.至于您的另一个问题,答案是肯定的,
elevator=none
是用于 NVME 存储的正确值。