기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AL2용 I/O 스케줄러
I/O 스케줄러는 I/O 요청을 정렬 및 병합하고 처리 순서를 결정하는 Linux 운영 체제의 일부입니다.
I/O 스케줄러는 탐색 시간이 비싸고 같은 위치에 있는 요청을 병합하는 것이 최적인 마그네틱 하드 드라이브와 같은 디바이스에 특히 유용합니다. I/O 스케줄러는 솔리드 스테이트 디바이스와 가상 환경에서 효과가 적습니다. 솔리드 스테이트 디바이스의 경우 순차 액세스와 무작위 액세스가 다르지 않고 가상 환경의 경우 호스트가 자체 스케줄링 계층을 제공하기 때문입니다.
이 주제에서는 Amazon Linux I/O 스케줄러에 대해 설명합니다. 다른 Linux 배포판에서 사용하는 I/O 스케줄러에 대한 자세한 내용은 해당 설명서를 참조하세요.
지원되는 스케줄러
Amazon Linux는 다음과 같은 I/O 스케줄러를 지원합니다.
-
deadline- 기한 I/O 스케줄러는 I/O 요청을 정렬하고 가장 효율적인 순서로 처리합니다. 각 I/O 요청의 시작 시간을 보장합니다. 또한 너무 오랫동안 보류 중인 I/O 요청에 더 높은 우선순위를 부여합니다. -
cfq- 완전히 공정한 대기열(CFQ) I/O 스케줄러는 프로세스 간에 I/O 리소스를 공정하게 할당하려고 합니다. I/O 요청을 정렬하여 프로세스별 대기열에 삽입합니다. -
noop- 작업 없음(noop) I/O 스케줄러는 모든 I/O 요청을 FIFO 대기열에 삽입한 다음 단일 요청으로 병합합니다. 이 스케줄러는 요청 정렬을 수행하지 않습니다.
기본 스케줄러
작업 없음(noop)은 Amazon Linux의 기본 I/O 스케줄러입니다. 이 스케줄러는 다음과 같은 이유로 사용됩니다.
-
대부분의 인스턴스 유형은 기본 호스트가 인스턴스에 대한 예약을 수행하는 가상 디바이스를 사용합니다.
-
솔리드 스테이트 디바이스는 I/O 스케줄러의 이점이 효과가 적은 많은 인스턴스 유형에 사용됩니다.
-
침범성이 가장 적은 I/O 스케줄러이며 필요한 경우 사용자 지정할 수 있습니다.
스케줄러 변경
I/O 스케줄러를 변경하면 스케줄러가 주어진 시간에 완료되는 I/O 요청의 수를 늘리는지 아니면 줄이는지에 따라 성능이 향상되거나 저하될 수 있습니다. 이는 주로 워크로드, 사용 중인 인스턴스 유형의 생성 및 액세스 중인 디바이스 유형에 따라 달라집니다. 사용 중인 I/O 스케줄러를 변경하는 경우 iotop과 같은 도구를 사용하여 I/O 성능을 측정하고 변경 사항이 사용 사례에 유용한지 여부를 확인하는 것이 좋습니다.
예를 들어 nvme0n1과 같은 명령을 사용하여 디바이스에 대한 I/O 스케줄러를 볼 수 있습니다. 다음 명령에서 nvme0n1을 인스턴스의 /sys/block에 나열된 디바이스로 대체합니다.
$cat /sys/block/nvme0n1/queue/scheduler
디바이스에 대한 I/O 스케줄러를 설정하려면 다음 명령을 사용합니다.
$echocfq|deadline|noop> /sys/block/nvme0n1/queue/scheduler
예를 들어, xvda 디바이스에 대해 noop에서 cfq로 I/O 스케줄러를 설정하려면 다음 명령을 사용합니다.
$echocfq> /sys/block/xvda/queue/scheduler