방금 ukuu를 사용하여 Ubuntu 17.04에 Linux 커널 버전 4.12를 설치했습니다 (Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ).
문제는 사용 가능한 I / O 스케줄러를 확인할 때 BFQ 나 Kyber I /를 찾을 수 없다는 것입니다. O 스케줄러 :
cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq]
이 Linux 버전에서 새로운 스케줄러 중 하나를 사용하는 방법은 무엇입니까?
답변
저는 Ubuntu에 없지만 Fedora에서 한 작업이 도움이 될 수 있습니다.
BFQ는 blk-mq (Multi-Queue Block IO Queuing)입니다. Mechanism) 스케줄러이므로 부팅시 blk-mq를 활성화하고 / etc / default / grub 파일을 편집 한 다음 scsi_mod.use_blk_mq=1
를 GRUB_CMDLINE_LINUX
, 이것은 내 grub 파일입니다. 예를 들면 다음과 같습니다.
GRUB_TIMEOUT=3 GRUB_DISTRIBUTOR="$(sed "s, release .*$,,g" /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=false GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="quiet vt.global_cursor_default=0 scsi_mod.use_blk_mq=1" GRUB_DISABLE_RECOVERY="true"
그 후에 grub을 업데이트해야합니다. Fedora에서는 sudo grub2-mkconfig -o /path/to/grub.cfg
를 사용해야하며, 부팅 방법에 따라 다릅니다. Ubuntu에서는 간단히 실행할 수 있습니다.
sudo update-grub
재부팅하고 다음이 표시되는 경우 :
cat /sys/block/sda/queue/scheduler [mq-deadline] none
아마도 커널이 BFQ를 모듈로 로 컴파일되었으며 카이 버의 경우도 마찬가지입니다.
sudo modprobe bfq sudo cat /sys/block/sda/queue/scheduler [mq-deadline] bfq none
bfq
파일을 추가하여 부팅시 추가 할 수 있습니다.
.
blk_mq를 활성화하면 blk_mq가 아닌 스케줄러를 사용할 수 없으므로 noop cfq 및 non mq deadline
분명히 blk_mq 스케줄링 시스템은 grub에서 엘리베이터 플래그를 지원하지 않습니다. 대신 udev 규칙을 사용할 수 있으며보다 세밀한 제어를 제공 할 수 있습니다.
/etc/udev/rules.d/60-scheduler.rules
가 존재하지 않는 경우 생성하고 다음을 추가합니다.
ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"
지시대로 여기 에서 회전을 구분할 수 있습니다. l (HDD) 및 비 회전 (SSD) 장치는 ATTR{queue/rotational}
속성을 사용하는 udev 규칙에 있습니다. BFQ 개발자 인 Paolo Valente는 LinuxCon Europe에서 BFQ가 noop
또는 deadline
스케줄러보다 더 나은 선택이 될 수 있다고 지적했습니다. 짧은 지연 시간을 보장하므로 SSD에도 사용하는 것이 좋습니다.
Paolo의 비교 : https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be
저장하고 새로 고침하고 udev rules
:
sudo udevadm control --reload sudo udevadm trigger
댓글
Answer
To 확장 RomuloPBenedetti 답변 :
udev 규칙에서.이는 사실상 DRIVERS=="sd|sr"
를 대체하며 scsi_mod.use_blk_mq=1
트리 비아 :
-
PROGRAM
-프로그램을 실행하여 일치 항목이 있는지 확인합니다. 프로그램이 성공적으로 반환되면 키는 true입니다. 절대 경로가 지정되지 않은 경우 프로그램은 / lib / udev에있을 것으로 예상됩니다. -
$sys
-sysfs 마운트 지점 (/sys
). -
$devpath
-장치의 devpath (/ devices / pci /…).
죄송합니다 " 처음에 g 일부 시스템에서 커널을로드하는 것입니다 ('는 완전 정지 패닉이 아니며 커널 내부에서 null 역 참조 일뿐입니다). ' 찾고 있지 않다면 놓칠 수 있지만 ' 편집증이라면 무언가가 고장났다는 신호일 수 있습니다.
ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"
장치 이름에 대한 패턴 일치를 피하여 일치를 더 정확하게 만듭니다. ' 파티션 장치에 ' " queue /가 없기 때문에 일치하지 않습니다. scheduler " 속성.echo bfq > /sys/block/sda/queue/scheduler
루트로. (sudo는 Ubuntu 18.04에서 저에게 적합하지 않았습니다.) 이렇게하면 즉시 적용됩니다.