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 드라이버는 이전에 "내부적으로 대기열 로직을 [구현"했습니다"라고 설명하면 단일 대기열 블록 계층을 사용하지 않았습니다. Linux mdraid장치 와 같은 블록 장치의 다른 예가 있습니다 .


다음 출처는 당시 정확했으며 몇 가지 유용한 참고 사항과 링크를 포함하고 있습니다. 그러나 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

관련 정보