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.