BFQ 스케줄러를 활성화하고 사용하는 방법은 무엇입니까?

방금 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=1GRUB_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 

댓글

  • 참고 : Linux가 설치된 컴퓨터에서는 '이 작업을 수행하지 마십시오. < 4.15를 일시 중지 할 수있을 것으로 예상됩니다. < 4.15는 안전한 SCSI 정지 " 수정.
  • 또한 커널 4.14에서 blk-mq를 활성화하면 커널

죄송합니다 " 처음에 g 일부 시스템에서 커널을로드하는 것입니다 ('는 완전 정지 패닉이 아니며 커널 내부에서 null 역 참조 일뿐입니다). ' 찾고 있지 않다면 놓칠 수 있지만 ' 편집증이라면 무언가가 고장났다는 신호일 수 있습니다.

  • ' 약간 더 정확한 udev 규칙을 사용하는 것이 좋습니다. 여기에 표시된 것을 시도했을 때 udev는 이름이 해당 패턴과 일치하지만 BFQ 스케줄러를 사용할 수있는 SCSI 블록 장치가 아닌 ' 일부 장치에 대해 스케줄러를 설정하려고했습니다. 최종적으로 사용한 규칙은 다음과 같습니다. ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq" 장치 이름에 대한 패턴 일치를 피하여 일치를 더 정확하게 만듭니다. ' 파티션 장치에 ' " queue /가 없기 때문에 일치하지 않습니다. scheduler " 속성.
  • 또한 중요한 점은 커널 4.15-4.16이 BFQ를 사용하는 동안 드라이브의 파티션 구성표를 업데이트 할 수있는 매우 심각한 버그가 있다는 것입니다. 완전한 I / O 잠금으로 이어집니다. 참조 : lkml.org/lkml/2017/12/1/80
  • 또한 echo bfq > /sys/block/sda/queue/scheduler 루트로. (sudo는 Ubuntu 18.04에서 저에게 적합하지 않았습니다.) 이렇게하면 즉시 적용됩니다.
  • Answer

    To 확장 RomuloPBenedetti 답변 :

    udev 규칙에서.이는 사실상 DRIVERS=="sd|sr"를 대체하며 scsi_mod.use_blk_mq=1

    트리 비아 :

    • PROGRAM-프로그램을 실행하여 일치 항목이 있는지 확인합니다. 프로그램이 성공적으로 반환되면 키는 true입니다. 절대 경로가 지정되지 않은 경우 프로그램은 / lib / udev에있을 것으로 예상됩니다.
    • $sys-sysfs 마운트 지점 (/sys).
    • $devpath-장치의 devpath (/ devices / pci /…).

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다