3장. 디스크 스케줄러 설정
디스크 스케줄러는 스토리지 장치에 제출된 I/O 요청을 순서를 지정합니다. 다음과 같은 다양한 방법으로 스케줄러를 구성할 수 있습니다.
- TuneD를 사용하여 디스크 스케줄러 설정에 설명된 대로 TuneD를 사용하여 스케줄러를 설정합니다.
-
udev
규칙을 사용하여 디스크 스케줄러 설정에 설명된 대로udev
를 사용하여 스케줄러를 설정합니다. - 임시로 특정 디스크에 대한 스케줄러를 설정하는 데 설명된 대로 실행 중인 시스템에서 스케줄러를 일시적으로 변경합니다.
Red Hat Enterprise Linux에서 블록 장치는 다중 대기열 스케줄링만 지원합니다. 이를 통해 솔리드 스테이트 드라이브(SSD) 및 멀티 코어 시스템으로 블록 계층 성능을 확장할 수 있습니다.
3.1. 사용 가능한 디스크 스케줄러
Red Hat Enterprise Linux에서 다음과 같은 멀티 큐 디스크 스케줄러가 지원됩니다.
none
- FIFO(First-in first-out) 스케줄링 알고리즘을 구현합니다. 간단한 last-hit 캐시를 통해 일반 블록 계층의 요청을 병합합니다.
mq-deadline
요청이 스케줄러에 도달하는 시점에서 요청에 대한 보장된 대기 시간을 제공하려고 합니다. mq-deadline 스케줄러는 대기 중인 I/O 요청을 읽기 또는 쓰기 일괄 처리로 정렬한 다음 LBA(Logical Block addressing) 순서로 실행을 예약합니다. 애플리케이션이 읽기 I/O 작업에서 차단될 가능성이 높기 때문에 기본적으로 읽기 배치는 쓰기 배치보다 우선합니다. mq-deadline이 배치를 처리한 후 프로세서 시간이 얼마나 오래되었는지 확인하고 필요에 따라 다음 읽기 또는 쓰기 배치를 예약합니다.
이 스케줄러는 대부분의 사용 사례에 적합하지만 특히 쓰기 작업이 대부분 비동기적으로 사용되는 경우입니다.
bfq
데스크탑 시스템 및 대화형 작업을 대상으로 합니다.
bfq
스케줄러는 단일 애플리케이션이 모든 대역폭을 사용하지 않도록 합니다. 실제로 스토리지 장치는 유휴 상태인 것처럼 항상 응답성이 높습니다. 기본 구성에서bfq
는 최대 처리량을 달성하는 대신 가장 짧은 대기 시간을 제공하는 데 중점을 둡니다.BFQ
는cfq
코드를 기반으로 합니다. 고정 시간 슬라이스의 각 프로세스에 대해 디스크를 부여하지 않지만 섹터 수에서 측정된 예산을 프로세스에 할당합니다. 이 스케줄러는 대용량 파일을 복사하는 동안 적합하며 이 경우 시스템이 응답하지 않습니다.Kyber
- 스케줄러는 블록 I/O 계층에 제출된 모든 I/O 요청의 대기 시간을 계산하여 대기 시간 목표를 달성하기 위해 자체적으로 튜닝합니다. cache-misses 및 동기 쓰기 요청의 경우 read에 대한 대상 대기 시간을 구성할 수 있습니다. 이 스케줄러는 NVMe, SSD 또는 기타 짧은 대기 시간 장치와 같은 빠른 장치에 적합합니다.
- 기본 디스크 스케줄러
- 다른 스케줄러를 지정하지 않는 한 블록 장치는 기본 디스크 스케줄러를 사용합니다.
특히 NVMe(Non-volatile Memory Express) 블록 장치의 경우 기본 스케줄러는 none이며 Red Hat은 이를 변경하지 않는 것이 좋습니다.
커널은 장치 유형에 따라 기본 디스크 스케줄러를 선택합니다. 자동 선택된 스케줄러는 일반적으로 최적의 설정입니다. 다른 스케줄러가 필요한 경우 udev
규칙 또는 TuneD 애플리케이션을 사용하여 구성합니다. 선택한 장치를 일치시키고 해당 장치에 대해서만 스케줄러를 전환합니다.