カーネルブートコマンドラインで複数のスケジューラを指定する方法は?

カーネルブートコマンドラインで複数のスケジューラを指定する方法は?

私たちのシステムには、回転するメカニカルディスクとNVMEストレージの両方があります。 IOスケジューラを削除してIOのCPUオーバーヘッドを減らしたいと思います。 Linux起動コマンドライン、つまりGRUB_CMDLINE_LINUXファイルにそれを指定しようとしています/etc/default/grub

  • elevator=noopメカニカルディスクの場合は、コマンドラインに追加できます。これはnoop次の値に対応します。/sys/block/sda/queue/scheduler
  • noneNVMEストレージの場合は、inを代わりに使用します/sys/block/nvme0n1/queue/scheduler。おそらく(確認できません)起動時に接続すると可能ですelevator=none

これは2つの部分からなる質問です。

  1. elevator=noneNVMEストレージに使用されている値は正しいですかGRUB_CMDLINE_LINUX
  2. これら2つの値をに指定できますかGRUB_CMDLINE_LINUX

elevator=noop2番目の項目が正しい場合は、回転ディスクに対して正しく設定されているように見えますが、NVMEコントローラは正常に無視し、elevator=noneNVMEディスクには正しく設定されますが、回転ディスクコントローラは正常に無視します。それ

答え1

I/Oスケジューラの割り当てグローバル起動時に。
複数の割り当てを使用しても、elevator=[value]最後の割り当てのみが適用されます。
利用可能な各デバイスのスケジューラを自動/永続的に設定するにはudevルールsystemd提供するまたは、次の構成およびパフォーマンス調整ツールtuned
他の質問に対する答えは「はい」です。elevator=noneこれは NVME ストレージに使用する正しい値です。

関連情報