Ubuntu 16.04가 모든 드라이브 IO 스케줄러를 "마감"으로 설정 한 이유는 무엇입니까?


17

방금 노트북의 두 번째 파티션에 Xubuntu 16.04-64bit를 설치했습니다. 시간이 조금 느려 보였으므로 해당 드라이브에 사용중인 IO 스케줄러를 확인하여 deadline모든 드라이브 에 해당되는 것으로 나타났습니다 . SSD와 하드 드라이브가 몇 개 있으므로 "마감"이 SSD와 cfq하드 드라이브에 가장 적합하다는 것을 알고 있습니다.

다른 파티션에서 14.04로 부팅 cfq했으며 회전 드라이브와 deadlineSSD를 사용하고 있습니다. 또한 /etc/udev/rules.d14.04가 드라이브 유형을 구성하기 위해 규칙을 사용하고 있는지 확인했지만 거기에 없었으므로 커널이 수행한다고 가정합니다.

그래서 이것이 버그인지 또는 지금 모든 것에 대해 "마감"을 사용하고 있는지 궁금합니다.

업데이트 : /etc/udev/rules.d에 대해 쓴 의견은 실수입니다. 실제로 몇 년 전 SSD를 사용하기 시작한 이후 회전 유형에 따라 스케줄러를 변경하기 위해 udev 규칙을 사용했습니다 (아래 답변과 동일). 방금 잊어 버린 것 같아요. 어쨌든, 내가 사용한 참고 문헌 중 하나는 데비안 SSD 최적화 위키 였습니다.

그것이 포함되어 있다면 좋은 생각이 아닙니까? 그냥 제안!

답변:


6

14.04 릴리스에서는 3.13 커널의 기본 스케줄러 가 CFQ에서 최종 기한 으로 변경되었습니다 .

더 이상 별도의 서버 커널이 없으며 CFQ 쉴더는 KVM 쓰기 시간 초과와 같은 많은 서버 사용 시나리오에 적합하지 않습니다 . USB 장치가 있는 데스크탑에서도 성능이 저하됩니다 .


1
읽어 주셔서 감사합니다. SD 카드 및 TWRP의 Android 태블릿에서 자주 발생하는 USB 문제. 후자에서는 몇 분 동안 끝이 멈 춥니 다. KVM 문제는 내 SSD (Deadline 포함)에 있으므로 VB 게스트에 표시되지 않습니다.
— curt54

32

Ubuntu Kernel Team은 정기적으로 다른 파일 시스템 및 I / O 스케줄러에서 다양한 시뮬레이션 된 워크로드에 대한 많은 분석을 실행하여 가장 일반적인 I / O 스케줄러 선택에 대한 아이디어를 얻습니다. 일반적인 대답은 모든 다른 종류의 매체에 대해 모든 다른 유형의 설치에서 일반 구성에 대한 완벽한 I / O 스케줄러 선택이 없다는 것입니다. 기억해야 할 핵심 사항은 다음과 같습니다.

  1. 시스템이 SSD로 이동하고 있으므로 noop 또는 데드 라인이 가장 좋습니다. noop은 데드 라인보다 CPU 오버 헤드가 적습니다.

  2. CFQ 대 마감일은 어려운 일입니다. CFQ는 더 큰 유연성을 허용합니다. 그러나 광범위한 시뮬레이션 된 I / O 작업의 경우 마감 시간이 CFQ보다 대기 시간이 짧고 처리량이 약간 더 높았습니다.

  3. 다양한 파일 시스템 및 I / O 스케줄러에 대해 정기적으로 커널을 벤치 마크합니다 (각 커널 테스트를 완료하는 데 3 일 이상이 소요됩니다). 이 정보 및 기타 여러 가지 자료를 통해 최선의 선택에 대한 정보에 근거한 결정을 내리려고합니다.

http://kernel.ubuntu.com/~cking/fs-tests/

모든 I / O 스케줄러에는 장단점이 있으므로 모든 기본값은 완벽하지 않으며 Ubuntu 커널 팀은 강력한 데이터와 이유 때문에 다른 방법으로 변경을 표시하는 경우 항상 기본 선택에 대한 입력을 기꺼이합니다.


5
우리는 Ubuntu Zesty 4.10 커널의 기본값으로 CFQ를 사용하도록 이동했으며 플래시 장치와 같은 느린 장치의 더티 캐시 쓰기 저장 문제를 해결하므로 새로운 CONFIG_BLK_WBT_MQ (Multiqueue writeback throttling)도 활성화했습니다.
— Colin Ian King

1
커널 4.12에 BFQ가 기본으로 표시 될까요?
— JauntyDoe

우리는 이것을 4.12 / 4.13에 대해 평가할 것입니다. 나는 kyber와 함께 초기 테스트를했지만 이번 주 4.12가 끝나면 다시 다시 방문 할 것입니다.
— 콜린 이안 킹

원칙적 으로이 질문은 16.04 커널에 관한 것이지만 여전히 검색에서 나타납니다 :-). 최신 업데이트는 다음과 같습니다. Ubuntu는 Ubuntu 17.04 (zesty) ~ 18.10 (cosmic) 에서 업스트림 기본값과 일치하는 CFQ로 다시 전환되었습니다 .
— sourcejedi

1
추가 업데이트 : Linux는 CFQ 또는 BFQ (적어도 기본적으로는)가 함께 작동하지 않기 때문에 WBT를 비활성화했습니다. 2) WBT로 해결 된 문제를 평가하려면 장치마다 다른 문제 (펌웨어마다 다름)를 알아야합니다. 벤치 마크 결과에서 사용 된 장치 유형을 찾을 수조차 없습니다. 3) WBT가 해결하는 것에 대한 귀하의 설명이 궁금합니다. WBT 패치 세트 v2의 표지를 보면 WBT는 빠른 플래시에서 버퍼링 된 쓰기를 처리하도록 설계되어 큐가 매우 깊을 수 있으며 동일한 장치에서 독자의 굶주림을 피할 수 있습니다.
— sourcejedi

9

개발자 deadline가 기본 스케줄러 로 선택한 이유를 모르겠습니다. 대부분의 새 컴퓨터에는 일반적으로 시스템이 설치된 SSD가 제공되기 때문일 수 있습니다. 스케줄러를 아직 설치하지 않은 경우 수동으로 스케줄러를 설정할 수 있습니다 ... install gksu:

터미널을 열고 다음을 실행하십시오.

sudo apt install gksu  

그런 다음이 명령을 실행하십시오.

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

다음 텍스트를 빈 파일에 붙여넣고 변경된 파일을 저장하십시오.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

운영 체제를 재부팅하면 HDD 및 SSD에 최적의 스케줄러를 사용하게됩니다.


예, 이것은 질문의 업데이트에 따라 내가 사용한 것입니다. 그러나 오늘날 두 가지 유형의 드라이브를 모두 사용하는 것이 일반적이므로 모든 Linux 배포판에이 규칙이 포함되어 있다고 생각합니다.
— curt54
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.