NVMeのblk-mqを無効にし、CFQ、期限、noopを使用する方法は?

NVMeのblk-mqを無効にし、CFQ、期限、noopを使用する方法は?

テスト目的でNVMeドライブに、、、CFQおよびdeadlineを使用したいと思います。noop可能ですか?

"scsi_mod.use_blk_mq=1"grubブートに追加して、SATA SSDでblk-mqを使用できます(参照:BFQスケジューラを有効にして使用する方法は?)。

ただし、NVMeドライブが非blk-mqスケジューラを使用できるように、反対の操作を実行する方法はまだ見つかりませんでした。

ベストアンサー1

/dev/sda <-- SCSI デバイス
/dev/nvme0n1 <-- NVMe デバイス

NVMeドライバはカーネルバージョン3.19以降のblk-mqをサポートしています。 insmodパラメータまたはgrubのカーネルブートオプションを使用してblk-mqを終了することは許可されていません。

$ modinfo -p nvme
use_threaded_interrupts: (int)
use_cmb_sqes:use controller's memory buffer for I/O SQes (bool)
max_host_mem_size_mb:Maximum Host Memory Buffer (HMB) size per controller (in MiB) (uint)
sgl_threshold:Use SGLs when average request segment size is larger or equal to this size. Use 0 to disable SGLs. (uint)
io_queue_depth:set io queue depth, should >= 2

古いnvmeドライバをダウンロードしてカーネルモジュールを再コンパイルできます。http://git.infradead.org/users/willy/linux-nvme.gitblk-mqを無効にしたい場合。しかし、これはいいえたとえば、CFQ を使用できます。これ3.19の関連変更NVMeドライバは、以前に「内部的にキューロジックを[実装しました」と説明した場合、単一のキューブロック層を使用しませんでした。Linuxmdraidデバイスなどのブロックデバイスの他の例があります。


以下のソースは当時正確であり、いくつかの有用な注意事項とリンクが含まれています。ただし、BFQ(BFQはLinux 4.12の一部として許可されています)を含むblk-mq IOスケジューラが導入される前に作成されたため、廃止されました。

https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq)

Linuxストレージマップ:https://www.thomas-krenn.com
https://www.thomas-krenn.com/de/wikiDE/images/d/da/Linux-io-stack-diagram_v1.0.png

おすすめ記事