Grub2

如何在核心啟動命令行上指定多個調度程序?

  • September 10, 2018

我們的系統具有旋轉機械磁碟和 NVME 儲存。我們希望通過取消任何 IO 調度程序來減少 IO 的 CPU 成本。我們想在 Linux 啟動命令行上指定它;即在GRUB_CMDLINE_LINUX文件中/etc/default/grub

  • 對於機械磁碟,我們可以附加elevator=noop到命令行。這對應於中的noop/sys/block/sda/queue/scheduler
  • 對於 NVME 儲存,我們改為使用nonein /sys/block/nvme0n1/queue/scheduler; 大概(無法確認)可以在引導時通過附加elevator=none.

這變成了一個兩部分的問題:

  1. elevator=none用於 NVME 儲存的值是否正確GRUB_CMDLINE_LINUX
  2. 可以在 中指定這兩個值GRUB_CMDLINE_LINUX嗎?

如果第二個是正確的,我猜這elevator=noop將為旋轉磁碟正確設置,但 NVME 控制器會優雅地忽略它;然後elevator=none將為 NVME 磁碟正確設置,但旋轉磁碟控制器將優雅地忽略*.*

I/O 調度程序在引導時全域分配。

即使您使用多個elevator=[value]分配,也只有最後一個會生效。

要自動/永久設置每個設備的調度程序,您可以使用udev規則systemd服務或配置和性能調整工具,例如tuned.

至於您的另一個問題,答案是肯定的,elevator=none是用於 NVME 儲存的正確值。

引用自:https://unix.stackexchange.com/questions/467635