Linux 에서 디스크 스케줄러가 구성되었는지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 환경에서 구성된 디스크 스케줄러를 확인하는 방법을 살펴봅니다. 활성 I/O 스케줄러를 이해하는 것은 성능 튜닝 및 스토리지 작업 최적화에 매우 중요합니다.

/sys 파일 시스템을 검사하여 블록 장치의 스케줄러 구성을 직접 쿼리하고, dmesg 명령을 사용하여 커널 링 버퍼 내의 스케줄러 정보를 확인하며, 스케줄러를 포함한 장치 구성에 영향을 줄 수 있는 udev 규칙을 검사하여 이를 수행합니다.

cat /sys/block/*/queue/scheduler로 스케줄러 확인

이 단계에서는 Linux 에서 블록 장치가 사용하고 있는 I/O 스케줄러를 확인하는 방법을 살펴봅니다. I/O 스케줄러는 블록 I/O 작업이 스토리지 장치에 제출되는 순서를 결정하는 커널 구성 요소입니다. 서로 다른 스케줄러는 서로 다른 워크로드에 최적화되어 있습니다.

이 정보는 /sys 파일 시스템 내의 파일을 살펴봄으로써 찾을 수 있습니다. /sys 파일 시스템은 커널 데이터 구조에 대한 인터페이스를 제공하는 가상 파일 시스템입니다.

모든 블록 장치의 스케줄러를 확인하기 위해 와일드카드와 함께 cat 명령을 사용할 수 있습니다. * 와일드카드는 모든 문자와 일치하므로 /sys/block/*/queue/scheduler/sys/block/ 아래에 나열된 모든 블록 장치의 스케줄러 파일과 일치합니다.

아직 열려 있지 않다면 터미널을 엽니다. 데스크탑 왼쪽의 Xfce 터미널 아이콘을 클릭하여 터미널을 열 수 있습니다.

이제 다음 명령을 입력하고 Enter 키를 누릅니다.

cat /sys/block/*/queue/scheduler

다음과 유사한 출력을 볼 수 있습니다.

noop [deadline] cfq
noop [deadline] cfq

출력은 사용 가능한 스케줄러를 보여주며 현재 사용 중인 스케줄러는 대괄호 []로 묶여 있습니다. 이 예제에서는 deadline 스케줄러가 현재 블록 장치에 대해 활성화되어 있습니다.

어떤 스케줄러가 활성화되어 있는지 이해하는 것은 특히 서버 환경 또는 특정 스토리지 요구 사항이 있는 시스템에서 성능 튜닝에 중요할 수 있습니다.

dmesg 에서 스케줄러 확인

이전 단계에서는 /sys 파일 시스템을 사용하여 현재 활성 I/O 스케줄러를 확인했습니다. 커널 및 장치 초기화에 대한 정보를 찾을 수 있는 또 다른 곳은 dmesg 명령을 사용하여 볼 수 있는 커널 링 버퍼입니다.

dmesg 명령은 커널의 메시지 버퍼를 출력합니다. 이 버퍼에는 부팅 및 런타임 중에 커널에서 생성된 메시지가 포함되어 있으며, 감지된 하드웨어 및 장치 드라이버에 대한 정보가 포함됩니다.

dmesg를 사용하여 시스템 부팅 프로세스 중에 블록 장치 및 구성된 스케줄러와 관련된 메시지를 볼 수 있습니다. dmesg의 출력은 상당히 길 수 있으므로 grep 명령을 사용하여 출력을 필터링하고 "scheduler"라는 단어가 포함된 줄을 찾습니다.

터미널에 다음 명령을 입력하고 Enter 키를 누릅니다.

dmesg | grep scheduler

| 기호는 파이프라고 합니다. 왼쪽의 명령 (dmesg) 의 출력을 가져와 오른쪽의 명령 (grep) 에 입력으로 보냅니다. 그런 다음 grep scheduler는 수신한 입력에서 "scheduler"라는 단어가 포함된 줄을 검색합니다.

다음과 유사한 출력을 볼 수 있습니다.

[    X.XXXXXX] io scheduler noop registered
[    X.XXXXXX] io scheduler deadline registered
[    X.XXXXXX] io scheduler cfq registered
[    X.XXXXXX] sdX: [sd-mod] Asking for cache data failed
[    X.XXXXXX] sdX: [sd-mod] Assuming drive cache: write through
[    X.XXXXXX] sdX: [sd-mod] Enabled discard support
[    X.XXXXXX] sdX: [sd-mod] **Using deadline scheduler**

"Using [scheduler name] scheduler"를 언급하는 줄을 찾습니다. 이는 부팅 중에 블록 장치에 대해 선택된 스케줄러를 확인합니다. 출력은 특정 시스템 구성에 따라 약간 다를 수 있지만, 등록된 스케줄러와 사용 중인 스케줄러에 대한 언급을 볼 수 있습니다.

이 방법은 부팅 프로세스에서 기록 정보를 제공하는 반면, /sys 파일 시스템을 확인하면 현재 상태를 알 수 있습니다. 둘 다 시스템의 I/O 구성을 이해하는 데 유용한 방법입니다.

/etc/udev/rules.d 에서 udev 규칙 검토

이전 단계에서는 /sysdmesg를 사용하여 활성 I/O 스케줄러를 확인하는 방법을 배웠습니다. 이제 장치가 감지될 때 시스템이 스케줄러를 자동으로 설정하도록 구성될 수 있는 방법을 살펴보겠습니다. 이는 종종 udev에 의해 처리됩니다.

udev는 Linux 커널용 장치 관리자입니다. /dev에서 장치 노드를 관리하고 하드웨어 장치가 시스템에 추가되거나 제거될 때 모든 사용자 공간 이벤트를 처리합니다. udev는 규칙을 사용하여 장치를 일치시키고 권한 설정 또는 I/O 스케줄러와 같은 장치 매개변수 구성과 같은 작업을 수행합니다.

udev 규칙은 일반적으로 /etc/udev/rules.d/ 디렉토리에 저장됩니다. 이러한 파일에는 .rules 확장자가 있습니다. 이러한 파일을 검사하여 특정 장치에 대한 I/O 스케줄러를 특별히 설정하는 규칙이 있는지 확인할 수 있습니다.

먼저 ls 명령을 사용하여 /etc/udev/rules.d/ 디렉토리의 파일을 나열해 보겠습니다.

ls /etc/udev/rules.d/

블록 장치 또는 스토리지와 관련된 파일을 포함하여 파일 목록이 표시됩니다. 출력은 다음과 유사할 수 있습니다.

10-snapd.rules  50-cloudimg-settings.rules  70-snap.core.rules  70-snap.lxd.rules  70-snap.microk8s.rules  70-snap.snapd.rules  70-snap.snapd-desktop-integration.rules  99-vmware-scsi-udev.rules

이제 이러한 파일 중 하나를 살펴보고 스케줄러와 관련된 규칙이 있는지 확인해 보겠습니다. cat 명령을 사용하여 파일의 내용을 표시합니다. 예를 들어 99-vmware-scsi-udev.rules를 살펴보겠습니다 (정확한 파일 이름은 환경에 따라 약간 다를 수 있지만 스토리지 또는 장치와 관련된 파일을 찾으십시오).

cat /etc/udev/rules.d/99-vmware-scsi-udev.rules

특정 장치 속성과 일치한 다음 속성을 설정하는 규칙을 볼 수 있습니다. ATTR 키워드를 사용하여 장치 속성과 일치하고 ATTR{queue/scheduler} 속성을 사용하여 스케줄러를 설정하는 줄을 찾습니다.

예를 들어, deadline 스케줄러를 설정하는 규칙은 다음과 유사할 수 있습니다.

## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"

이 규칙은 특정 공급업체 및 모델 속성을 가진 블록 장치 (SUBSYSTEM=="block") 와 일치하고 추가되거나 변경될 때 스케줄러를 deadline으로 설정합니다.

이러한 규칙을 검사하여 시스템에서 기본 I/O 스케줄러가 어떻게 구성될 수 있는지 이해할 수 있습니다.

요약

이 Lab 에서는 두 가지 주요 방법을 사용하여 Linux 에서 구성된 디스크 스케줄러를 확인하는 방법을 배웠습니다. 먼저, cat 명령을 사용하여 /sys/block/*/queue/scheduler의 내용을 검사하여 /sys 파일 시스템을 활용했습니다. 이를 통해 사용 가능한 스케줄러를 확인하고 대괄호로 표시된 현재 사용 중인 스케줄러를 식별할 수 있었습니다.

둘째, dmesg 명령을 사용하여 커널 링 버퍼를 탐색하여 장치 초기화 중에 스케줄러 정보를 확인했습니다. 이는 활성 스케줄러를 확인하고 스토리지 장치와 관련된 커널 메시지에 대한 통찰력을 얻는 또 다른 방법을 제공합니다. 마지막으로, 제공된 내용에서는 자세한 단계가 완전히 제공되지 않았지만, 스케줄러 구성의 잠재적 위치로 /etc/udev/rules.d에서 udev 규칙을 검사하는 방법에 대해 간략하게 언급했습니다.