PowerEdge: PERC 또는 HBA 컨트롤러가 NVMe 또는 SSD를 사용하는 경우 Linux 호스트의 성능 문제
Summary: Linux 호스트는 연결된 SSD 또는 NVMe 디바이스와 함께 PERC 또는 HBA 컨트롤러를 사용할 때 스토리지 성능이 저하된다고 보고합니다.
Symptoms
Linux를 실행하는 시스템은 PERC 또는 HBA 컨트롤러를 통해 연결된 SSD 또는 NVMe 드라이브에서 예상보다 낮은 성능을 보입니다. 예상되는 디바이스 또는 플랫폼 기능에 비해 IOPS 감소, 레이턴시 증가 또는 최적이 아닌 처리량 등의 증상이 나타날 수 있습니다.
Cause
최신 PERC RAID 및 HBA 컨트롤러는 기본 미디어가 NVMe인 경우에도 SCSI 디바이스 모델을 통해 OS에 연결된 스토리지 디바이스를 제공합니다. 이러한 디바이스는 SCSI SAS 대상으로 표시되기 때문에 대부분의 Linux 배포판은 회전식 하드 드라이브에 최적화된 레거시 블록 I/O 스케줄링 정책을 자동으로 적용합니다. SSD 또는 NVMe 디바이스가 이러한 HDD 지향 스케줄러를 강제로 통과하면 기본 성능에 비해 처리량이 감소하고 레이턴시가 길어질 수 있습니다.
관련 컨트롤러 모델
- Perc: H740P, H840, H745, H345
- Perc: H750, H755, H350, H355
- Perc: H965, H365
- Perc: H975 시리즈
- HBA345 시리즈
- HBA355 시리즈
- HBA465 시리즈
Resolution
운영 체제 스토리지 최적화 가이드를 참조하십시오. Linux OS는 일반적으로 기본 NVMe 구성에 대한 스케줄러를 "none"으로 설정합니다.
Red Hat Enterprise Linux 8 및 9 "디스크 스케줄러 설정" 가이드:
- 디스크 스케줄러 v8 설정(외부 링크)
- 디스크 스케줄러 v9 설정(외부 링크)
SLES 15-SP6 "I/O 성능 튜닝" 가이드:
- I/O 성능 튜닝(외부 링크)
SSD 및 NVMe 연결 PERC 및 HBA 구성의 경우 블록 스케줄러를 "none"으로 변경하면 성능이 향상될 수 있습니다.
현재 스케줄러를 확인하려면 다음을 수행합니다.
수퍼유저 권한으로 다음을 실행합니다. cat /sys/block/{SD}/queue/scheduler 여기서 {SD}는 /dev (예 sda)
로 설정된 스케줄러를 보여주는 스크린샷 mq-deadline Red Hat Enterprise Linux 9에서 sda

스케줄러를 none으로 설정합니다.
수퍼유저 권한으로 다음을 실행합니다. echo "none" > /sys/block/{SD}/queue/scheduler 여기서 {SD}는 /dev (예 sda)
다음에 대해 스케줄러가 "none"으로 업데이트되는 것을 보여 주는 스크린샷 sda

/dev 블록 장치 이름 변경. A UDEV 디바이스 WWID에 대한 규칙을 추가하여 스케줄러를 영구적으로 "none"으로 변경할 수 있습니다. 생성에 대한 지침은 OS 사용자 가이드를 참조하십시오. UDEV 블록 장치 매개변수를 설정하기 위한 규칙 또는 유사한 메커니즘.
컨트롤러 및 드라이브 성능을 극대화하려면 추가 OS 설정 조정 및 전원 프로파일 변경이 필요할 수 있습니다. OS 성능 튜닝 및 BIOS 전원 프로파일 설명서를 참조하십시오.