VMware는 ESXi 호스트에서 스토리지 디바이스의 성능을 향상시키기 위해 HPP(고성능 플러그인)를 제공합니다.

HPP는 NVMe와 같은 고속 디바이스를 위해 NMP 대신 사용됩니다. HPP는 NVMe-oF 대상을 할당하는 기본 플러그인입니다. ESXiend to end NVMe withoutSCSI to NVMe 에뮬레이션을 지원합니다. HPP는 능동/능동 및 암시적 ALUA 대상만 지원합니다.

vSphere 7.0 업데이트 2부터는 HPP가 로컬 NVMe 및 SCSI 디바이스에 대한 기본 플러그인이 되지만 NMP로 교체할 수 있습니다.

HPP 지원 vSphere 7.0 업데이트 2 이상
스토리지 디바이스 로컬 NVMe 및 SCSI

공유 NVMe-oF(능동/능동 및 암시적 ALUA 대상만 해당)

다중 경로 지정
두 번째 수준 플러그인 아니요
SCSI-3 영구 예약 아니요
소프트웨어 에뮬레이션을 사용하는 4Kn 디바이스.

경로 선택 체계

다중 경로 지정을 지원하기 위해 HPP는 I/O 요청에 대한 물리적 경로를 선택할 때 PSS(경로 선택 체계)를 사용합니다.

vSphere Client 또는 esxcli 명령을 사용하여 기본 경로 선택 메커니즘을 변경할 수 있습니다.

vSphere Client에서 경로 메커니즘을 구성하는 방법에 대한 자세한 내용은 경로 선택 정책 변경 항목을 참조하십시오. esxcli 명령을 사용하여 구성하려면 ESXi esxcli HPP 명령 항목을 참조하십시오.

ESXi는 다음과 같은 경로 선택 메커니즘을 지원합니다.

고정
이 체계를 사용하면 지정된 기본 설정 경로가 I/O 요청에 사용됩니다. 기본 설정 경로가 할당되지 않은 경우 호스트에서 부팅 시 검색된 첫 번째 작동 경로가 선택됩니다. 기본 설정 경로를 사용할 수 없으면 호스트는 사용 가능한 대체 경로를 선택합니다. 이전에 정의된 기본 설정된 경로를 다시 사용할 수 있게 되면 호스트가 해당 경로로 돌아옵니다.

고정을 경로 선택 메커니즘으로 구성하는 경우 기본 설정 경로를 선택합니다.

LB-RR(로드 밸런싱 - 라운드 로빈)
HPP에 의해 할당된 디바이스에 대한 기본 체계입니다. 현재 경로에서 지정된 수의 바이트 또는 I/O를 전송한 후, 체계가 라운드 로빈 알고리즘을 사용하여 경로를 선택합니다.
LB-RR 경로 선택 메커니즘을 구성하려면 다음 속성을 지정합니다.
  • IOPS는 디바이스의 경로를 전환하는 기준으로 사용될 경로의 I/O 수를 나타냅니다.
  • 바이트는 디바이스의 경로를 전환하는 기준으로 사용될 경로의 바이트 수를 나타냅니다.
LB-IOPS(로드 밸런싱 - IOPS)
현재 경로에서 지정된 수(기본값 1000)의 I/O를 전송한 후, 미결 I/O 수가 가장 적은 최적의 경로가 시스템에 의해 선택됩니다.

이 메커니즘을 구성하는 경우, 디바이스의 경로를 전환하는 기준으로 사용될 경로의 I/O 수를 나타내도록 IOPS 매개 변수를 지정합니다.

LB-바이트(로드 밸런싱 - 바이트)
현재 경로에서 지정된 바이트 수(기본값 10MB)를 전송한 후, 미결 바이트 수가 가장 적은 최적의 경로가 시스템에 의해 선택됩니다.

이 메커니즘을 구성하려면 바이트 매개 변수를 사용하여 디바이스의 경로를 전환하는 기준으로 사용할 경로의 바이트 수를 지정합니다.

로드 밸런싱 - 지연 시간(LB - 지연 시간)
이 메커니즘은 다음과 같은 경로 특성을 고려하여 최적의 경로를 동적으로 선택함으로써 로드 밸런싱 결과를 개선합니다.
  • 지연 시간 평가 시간 매개 변수는 경로의 지연 시간을 평가해야 하는 시간 간격(밀리초)을 나타냅니다.
  • 경로당 샘플링 I/O 매개 변수는 경로의 지연 시간을 계산하기 위해 각 경로에서 실행해야 하는 샘플 I/O 수를 제어합니다.

HPP 모범 사례

고속 스토리지 디바이스에서 가장 빠른 처리량을 달성하려면 다음 권장 사항을 따르십시오.

  • HPP를 지원하는 vSphere 버전을 사용합니다.
  • 로컬 NVMe 및 SCSI 디바이스와 NVMe-oF 디바이스에 HPP를 사용합니다.
  • NVMe over Fibre Channel 디바이스를 사용하는 경우 파이버 채널 스토리지에 대한 일반 권장 사항을 따르십시오. Fibre Channel SAN과 함께 ESXi 사용의 내용을 참조하십시오.
  • NVMe-oF를 사용하는 경우 동일한 네임스페이스에 액세스하기 위해 전송 유형을 혼합하지 마십시오.
  • NVMe-oF 네임스페이스를 사용하는 경우 호스트에 활성 경로가 표시되는지 확인합니다. 활성 경로가 검색될 때까지 네임스페이스를 등록할 수 없습니다.
  • VM을 구성할 때 VMware 반가상화 컨트롤러를 사용하거나 NVMe 컨트롤러를 추가할 수 있습니다. 두 유형 모두 장점과 단점이 있습니다. 사용자 환경에 가장 적합한 유형을 확인하려면 "vSphere 가상 시스템 관리" 설명서의 SCSI, SATA 및 NVMe 스토리지 컨트롤러 조건, 제한 및 호환성을 참조하십시오.
  • 지연 시간에 민감한 임계값을 설정합니다.
  • 단일 VM이 해당 디바이스의 I/O 워크로드 중 상당 부분을 생성하는 경우 여러 가상 디스크로 I/O를 분산하는 것이 좋습니다. VM의 별도 가상 컨트롤러에 디스크를 연결합니다.

    그렇지 않으면 특정 가상 스토리지 컨트롤러에서 I/O를 처리하는 작업을 담당하는 CPU 코어의 포화 상태로 인해 I/O 처리량이 제한될 수 있습니다.

NGUID ID 형식만 지원하는 NVMe 디바이스의 디바이스 식별자에 대한 자세한 내용은 NGUID 디바이스 식별자가 있는 NVMe 디바이스 항목을 참조하십시오.

고성능 플러그인 및 경로 선택 체계를 사용하도록 설정

HPP(고성능 플러그인)는 로컬 NVMe 및 SCSI 디바이스와 NVMe-oF 대상을 할당하는 기본 플러그인입니다. 필요한 경우 NMP로 교체할 수 있습니다. vSphere 7.0 업데이트 1 및 이전 버전에서 NMP는 로컬 NVMe 및 SCSI 디바이스에 대한 기본 플러그인을 유지하지만 HPP로 교체할 수 있습니다.

esxcli storage core claimrule add 명령을 사용하여 ESXi 호스트에서 HPP 또는 NMP를 사용하도록 설정합니다.

esxcli storage core claimrule add를 실행하려면 ESXi Shell 또는 vSphere CLI를 사용하면 됩니다. 자세한 내용은 "ESXCLI 시작" 및 "ESXCLI 참조" 항목을 참조하십시오.

이 항목의 예는 HPP를 사용하도록 설정하고 PSS(경로 선택 체계)를 설정하는 방법을 보여줍니다.
참고: PXE 부팅 ESXi 호스트에서는 HPP를 사용하도록 설정할 수 없습니다.

사전 요구 사항

VMware NVMe 스토리지 환경을 설정합니다. 자세한 내용은 VMware NVMe 스토리지 정보의 내용을 참조하십시오.

프로시저

  1. esxcli storage core claimrule add 명령을 실행하여 HPP 할당 규칙을 생성합니다.
    다음 방법 중 하나를 사용하여 할당 규칙을 추가합니다.
    방법 설명
    NVMe 컨트롤러 모델 기반 esxcli storage core claimrule add –-type vendor --nvme-controller-model

    예: esxcli storage core claimrule add --rule 429 --type vendor --nvme-controller-model "ABCD*" --plugin HPP

    PCI 벤더 ID 및 하위 벤더 ID 기반 esxcli storage core claimrule add –-type vendor –-pci-vendor-id –-pci-sub-vendor-id

    예: esxcli storage core claimrule add --rule 429 --type vendor --pci-vendor-id 8086 --pci-sub-vendor-id 8086 --plugin HPP.

  2. PSS를 구성합니다.
    다음 방법 중 하나를 사용합니다.
    방법 설명
    디바이스 ID를 기반으로 PSS 설정 esxcli storage hpp device set

    예: esxcli storage hpp device set --device=device --pss=FIXED --path=preferred path

    벤더/모델을 기반으로 PSS 설정 esxcli storage core claimrule add 명령과 함께 --config-string 옵션을 사용합니다.

    예: esxcli storage core claimrule add -r 914 -t vendor -V vendor -M model -P HPP --config-string "pss=LB-Latency,latency-eval-time=40000"

  3. 변경 내용을 적용하려면 호스트를 재부팅합니다.

지연 시간에 민감한 임계값 설정

스토리지 디바이스에 HPP를 사용하는 경우 I/O가 I/O 스케줄러를 피할 수 있도록 지연 시간에 민감한 임계값을 디바이스에 대해 설정합니다.

기본적으로 ESXi는 I/O 스케줄러를 통해 모든 I/O를 전달합니다. 그러나 스케줄러를 사용하면 내부 대기열이 생성되어 고속 스토리지 디바이스의 효율성이 떨어집니다.

지연 시간에 민감한 임계값을 구성하고 직접 전송 메커니즘을 사용하도록 설정하면 I/O가 스케줄러를 우회할 수 있습니다. 이 메커니즘을 사용하도록 설정하면 I/O가 PSA에서 HPP를 통해 디바이스 드라이버에 직접 전달됩니다.

직접 전송이 올바르게 작동하려면 확인된 평균 I/O 지연 시간이 지정된 지연 시간 임계값보다 낮아야 합니다. I/O 지연 시간이 지연 시간 임계값을 초과하면 시스템이 직접 전송을 멈추고 일시적으로 I/O 스케줄러를 사용하며, 평균 I/O 지연 시간이 지연 시간 임계값 아래로 다시 감소하면 직접 전송이 재개됩니다.

HPP에 의해 할당되는 디바이스 제품군에 대한 지연 시간 임계값을 설정할 수 있습니다. 벤더 및 모델 쌍, 컨트롤러 모델, PCIe 벤더 ID 및 하위 벤더 ID 쌍을 사용하여 지연 시간 임계값을 설정합니다.

프로시저

  1. 다음 명령을 실행하여 디바이스에 대해 지연 시간에 민감한 임계값을 설정합니다.
    esxcli storage core device latencythreshold set -t 밀리 초 단위의 값

    다음 옵션 중 하나를 사용합니다.

    옵션
    벤더/모델 표시된 벤더 및 모델을 사용하는 모든 디바이스에 대한 지연 시간에 민감한 임계값 매개 변수를 설정합니다. esxcli storage core device latencythreshold set -v 'vendor1' -m 'model1' -t 10
    NVMe 컨트롤러 모델 표시된 컨트롤러 모델을 사용하는 모든 NVMe 디바이스에 대한 지연 시간에 민감한 임계값을 설정합니다. esxcli storage core device latencythreshold set -c 'controller_model1' -t 10
    PCIe 벤더/하위 벤더 ID PCIe 벤더 ID가 0x8086이고 PCIe 하위 벤더 ID가 0x8086인 디바이스의 지연 시간에 민감한 임계값을 설정합니다. esxcli storage core device latencythreshold set -p '8086' -s '8086' -t 10
  2. 지연 시간 임계값이 설정되어 있는지 확인합니다.
    esxcli storage core device latencythreshold list
    Device                Latency Sensitive Threshold
    --------------------  ---------------------------
    naa.55cd2e404c1728aa               0 milliseconds
    naa.500056b34036cdfd               0 milliseconds
    naa.55cd2e404c172bd6              50 milliseconds
    
  3. 지연 시간에 민감한 임계값의 상태를 모니터링합니다. VMkernel 로그에서 다음 항목을 확인합니다.
    • Latency Sensitive Gatekeeper turned on for device device. Threshold of XX msec is larger than max completion time of YYY msec
    • Latency Sensitive Gatekeeper turned off for device device. Threshold of XX msec is exceeded by command completed in YYY msec

ESXi esxcli HPP 명령

ESXi Shell 또는 vSphere CLI 명령을 사용하여 고성능 플러그인을 구성하고 모니터링할 수 있습니다.

"ESXCLI 시작" 에서 개요를 확인하고 esxcli 명령 사용에 대한 세부 정보는 "ESXCLI 참조" 에서 참조하십시오.

명령 설명 옵션
esxcli storage hpp path list 현재 고성능 플러그인에서 할당된 경로를 나열합니다. -d|--device=디바이스 특정 디바이스에 대한 정보를 표시합니다.

-p|--path=경로 출력을 특정 경로로 제한합니다.

esxcli storage hpp device list 현재 고성능 플러그인에서 제어되는 디바이스를 나열합니다. -d|--device=디바이스 특정 디바이스를 표시합니다.
esxcli storage hpp device set HPP 디바이스에 대한 설정을 구성합니다. -B|--bytes=long 경로가 전환된 후 경로의 최대 바이트입니다.

--cfg-file 새 설정으로 구성 파일 및 런타임을 업데이트합니다. 다른 PSS에 의해 디바이스가 할당되는 경우, 런타임 구성에 적용할 때 오류를 무시합니다.

-d|--device=디바이스 작동할 HPP 디바이스입니다. 디바이스에서 보고하는 UID를 사용합니다. 필수.

-I|--iops=long 경로가 전환된 후 경로의 최대 IOPS입니다.

-T|--latency-eval-time=long 경로의 지연 시간을 평가해야 하는 간격(ms)을 제어합니다.

-L|--mark-device-local=bool HPP가 디바이스를 로컬로 처리할지 여부를 설정합니다.

-M|--mark-device-ssd=bool HPP가 디바이스를 SSD로 취급할지 여부를 지정합니다.

-p|--path=str 디바이스의 기본 설정 경로로 설정할 경로입니다.

-P|--pss=pss_이름 디바이스에 할당할 경로 선택 체계입니다. 값을 지정하지 않으면 시스템이 기본값을 선택합니다. 경로 선택 체계에 대한 설명은 VMware 고성능 플러그인 및 경로 선택 체계 항목을 참조하십시오. 옵션은 다음과 같습니다.
  • 고정

    -p|--path=str 하위 옵션을 사용하여 기본 경로를 설정합니다.

  • LB-바이트

    -B|--bytes=long 하위 옵션을 사용하여 입력을 지정합니다.

  • LB-IOPS

    -I|--iops=long 하위 옵션을 사용하여 입력을 지정합니다.

  • LB-지연 시간

    하위 옵션에는 다음이 포함됩니다.

    -T|--latency-eval-time=long

    -S|--sampling-ios-per-path=long

  • LB-RR 기본값

    하위 옵션에는 다음이 포함됩니다.

    -B|--bytes=long

    -I|--iops=long

-S|--sampling-ios-per-path=long 경로의 지연 시간을 계산하기 위해 각 경로에서 실행해야 하는 샘플 I/O 수를 제어합니다.

-U|--use-ano=bool 이 디바이스에서 I/O를 발급하는 데 사용되는 활성 경로 집합에 최적화되지 않은 경로를 포함하려면 옵션을 true로 설정합니다. 그렇지 않으면 옵션을 false로 설정합니다.

esxcli storage hpp device usermarkedssd list 사용자가 SSD로 표시하거나 표시 해제한 디바이스를 나열합니다. -d|--device=디바이스 출력을 특정 디바이스로 제한합니다.