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

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

방금 ukuu(Ubuntu 커널 업데이트 유틸리티)를 사용하여 Ubuntu 17.04에 Linux 커널 버전 4.12를 설치했습니다.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 릴리스의 새로운 스케줄러 중 하나를 어떻게 사용합니까?

답변1

저는 Ubuntu에 있지 않지만 Fedora에서 수행한 작업이 도움이 될 수 있습니다.

BFQ는 blk-mq(다중 대기열 블록 IO 대기열 메커니즘) 스케줄러이므로 부팅 시 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

/etc/modules-load.d/bfq.confinclude 를 추가하면 됩니다 bfq.

blk_mq를 활성화하면 blk_mq가 아닌 스케줄러의 사용이 비활성화되므로 noop cfq 및 mq가 아닌 기한을 잃게 됩니다.

분명히 blk_mq 스케줄링 시스템은 grub에서 엘리베이터 플래그를 지원하지 않으며 대신 udev 규칙을 사용할 수 있습니다. 이것의 장점은 보다 세밀한 제어를 제공한다는 것입니다.

/etc/udev/rules.d/60-scheduler.rules존재하지 않는 경우 생성하고 추가하십시오.

ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"

지적한대로여기원하는 경우 속성을 사용하여 udev 규칙에서 회전(HDD) 장치와 비회전(SSD) 장치를 구별할 수 있습니다 ATTR{queue/rotational}. BFQ 개발자 Paolo Valente는 LinuxCon Europe에서 BFQ가 낮은 대기 시간 보장 측면에서 noop또는 스케줄러보다 더 나은 선택이 될 수 있다고 지적했으며 deadline이는 SSD와 함께 사용하기에 좋은 권장 사항이기도 합니다.

바울의 비교:https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be

저장한 다음 다시 로드하고 트리거하십시오 udev rules.

sudo udevadm control --reload
sudo udevadm trigger

답변2

위대함을 확장하다로물로 베네데티가 대답했다.:

udev 규칙을 사용하여 bfq 스케줄러가 특정 장치에서 실제로 사용 가능한지 여부를 테스트할 수 있습니다 PROGRAM=="/bin/grep -E -q '(^|[[:space:]])bfq($|[[:space:]])' '$sys$devpath/queue/scheduler'". 이는 효과적으로 대체되며 DRIVERS=="sd|sr"잊어버린 경우 트리거되지 않습니다.scsi_mod.use_blk_mq=1

하찮은 일:

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

답변3

위의 제안을 구현한 결과를 커뮤니티와 공유하고 싶었습니다.로물로 베네데티.

명령을 사용할 때 이 작업을 수행해야 합니다.

nice -n 17 tar cf - . | ( cd ${there} ; nice -n 17 tar xvpf - )

(루트 장치의 /DB001_F5)를 (별도 장치의 /site/DB002_F5)로 파티션합니다.250GB 이미지,내 시스템을 사용할 수 없습니다.. 나는 좋은 명령이 이 문제를 처리해야 한다는 인상을 받았습니다... 하지만 사실은 그렇지 않습니다!

구현 후, 응용 프로그램, 작업 공간 또는 커서 상호 작용을 전환할 때 매우 작은 지연(1/2 - 1초)이 발생합니다.

구현 전, 지연은,농담 아니야, 분 단위로! 마우스나 스크롤 버튼에서 즉각적인 반응을 얻을 수 없으며 이것이 "달팽이 메일" 상호 작용과 반대되는 상호 작용이라고 생각하지도 않습니다.

이전 전송의 "조정"에는 약 90분이 소요된다는 점도 주목할 가치가 있습니다. 그 후에는 48시간밖에 걸리지 않았습니다.

29.23user 
902.53system 
47:39.63elapsed 
32%CPU 
(0avgtext+0avgdata 3160maxresident)k

궁금하신 분들을 위해 대기 시간이 짧은 커널 버전을 사용해 보았지만 향상된 대화형 응답 우선 순위의 이점을 제공하지 않습니다.

내 데스크탑 구성 내 데스크탑은우분투메이트 20.04 LTS.

Linux {myhost} 5.4.0-94-generic #106-Ubuntu SMP 
Thu Jan 6 23:58:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
4 GB RAM
Only HDDs

관련 정보