Latency Round Robin Path Selection Policy – Latency PSP Deep Dive

Problem

기존의 경로 선택 정책(PSP)에서는 최적의 경로를 선택하는 데 필요한 로직이나 인텔리전스가 없습니다. 많은 스토리지 파트너는 일반적으로 최상의 성능과 장애 조치를 제공하는 Round Robin PSP를 사용합니다. 기본 RR PSP는 1000으로, 현재 경로에서 1000개의 IO가 전송될 때까지 다음 경로가 사용되지 않습니다. 일부 스토리지 공급업체는 이 값을 1로 변경하여 다른 모든 IO를 다음 경로로 보낼 것을 권장합니다. 이 방법은 성능과 장애 조치에 도움이 될 수 있지만 여전히 로직이나 인텔리전스가 없습니다. 따라서 경로에 지연 시간이 길거나 HW 문제가 있는 경우에도 해당 경로는 여전히 IO가 발행됩니다. 바로 여기에 문제가 있습니다.

Solution

vSphere 6.7 U1에서는 경로의 대기 시간 및 OIO(Outstanding IO)를 능동적으로 모니터링하는 라운드 로빈(RR) 경로 선택 정책(PSP)의 새로운 하위 정책인 VMW_PSP_RR을 도입했습니다. 이 정책은 활성 및 사용 가능한 각 경로의 경로 지연 시간과 OIO를 고려합니다. 이는 경로를 모니터링하고 시간과 OIO 수를 기준으로 경로당 평균 지연 시간을 계산하는 알고리즘을 통해 수행됩니다. 지연 시간 정책을 사용하는 경우 로직은 경로당 16개의 IO를 모니터링하여 작동 평균을 계산합니다. 이 작업 평균은 각 경로에 대한 값이 됩니다. 샘플 기간이 완료되면 지연 시간이 가장 짧은 경로에 대한 알고리즘의 계산에 따라 나머지 IO가 전달됩니다. 지연 시간 메커니즘을 사용할 경우, 라운드 로빈 정책은 이후 최적의 경로를 동적으로 선택하여 성능과 로드 밸런싱을 개선합니다.

Details

지연 시간 정책이 활성화되면 알고리즘은 사용 가능한 모든 경로를 샘플링하여 각각에 대한 OIO와 지연 시간을 확인합니다. 아래 다이어그램에서 경로 2는 OIO가 2개이고 지연 시간이 5ms이며 경로 1은 OIO가 5개이고 지연 시간이 1ms인 것을 볼 수 있습니다. P(avgLatency) = (Completiont – Issuet) / P(Sampling IO count) 계산을 사용하면 해당 샘플 주기에 대해 IO를 전송하도록 경로 1이 선택됩니다.

로직에 대해 좀 더 자세히 살펴보면 아래 다이어그램에서 작동 방식을 확인할 수 있습니다.

범례:

  • T = 샘플링을 다시 시작해야 하는 간격
  • m = 경로당 샘플링 IO 수
  • T1 < T2 < T3 —————> 10MS < 20MS < 30MS
  • T1/M < T2/M < T3/M —–> 10/16 < 20/16 < 30/16

테스트 결과, 절반의 경로에서 최대 100ms의 지연 시간이 발생한 경우에도 지연 시간 정책이 거의 전체 처리량을 유지하는 것으로 나타났습니다.

테스트 결과

무작위 100% 읽기, 32개의 OIO, 2명의 워커, 4개의 경로 중 2개 경로에서 지연이 발생했습니다.

무작위 70% 읽기/30% 쓰기, 32개의 OIO, 2명의 작업자, 4의 2개 경로에 지연이 도입되었습니다.

그래프를 살펴보면 처리량, 지연 시간, CPU 사용률이 전 범위에서 더 일정하게 유지되는 것을 확인할 수 있습니다. Latency RR PSP는 기존 PSP에 비해 훨씬 더 일관되고 높은 성능을 제공하는 경향이 있습니다.

Configuring

CLI를 통해 VMW_PSP_RR 정책이 활성화되어 있는지 확인하려면 다음과 같이 하세요.

esxcfg-advcfg  -g /Misc/EnablePSPLatencyPolicy

정책이 활성화되면 값은 1이 되며, 6.7 U1에서는 기본적으로 활성화되어 있습니다.

Value of EnablePSPLatencyPolicy is 1

VMW_PSP_RR에 대해 지연 시간 기반 하위 정책을 사용하도록 구성 옵션을 활성화합니다:

esxcfg-advcfg -s 1 /Misc/EnablePSPLatencyPolicy

GUI에서 값을 확인하려면 ESXi/vSphere 호스트의 고급 설정으로 이동하여 설정을 편집한 후 “Misc.EnablePSPLatencyPolicy”를 검색합니다. 여기에서 값을 확인하거나 변경할 수 있습니다. “1”은 활성화되고 “0”은 비활성화됩니다.

중요 참고: 이는 특정 대상에 대기 시간 PSP가 활성화되어 있음을 의미하는 것이 아니라 호스트가 해당 기능을 활성화했음을 의미합니다.

특정 디바이스 설정 및 유효성 검사:

대상의 현재 디바이스 하위 정책을 확인하려면 다음 명령을 사용합니다:

esxcli storage nmp psp roundrobin deviceconfig get -d <Device_ID>

Example: esxcli storage nmp device list -d naa.624a9370b97601e346f64ba900011028

NVMeoF 대상의 현재 하위 정책을 확인합니다:

esxcli storage hpp device list -d <NVMeoF Device_ID>

Example: esxcli storage hpp device list -d eui.0000000000000990742b0f00000006d0

대상의 지연 시간 기반 하위 정책으로 전환하려면 다음 명령을 사용합니다:

esxcli storage nmp psp roundrobin deviceconfig set -d <Device_ID> --type=latency

Example: esxcli storage nmp psp roundrobin deviceconfig set -d naa.624a9370b97601e346f64ba900011028 –type=latency

지연 시간을 평가하기 위한 기본 평가 시간 또는 샘플링 IO 수를 변경하려면 다음 명령을 사용합니다.

참고: 기본값을 변경하기 전에 스토리지 공급업체에 문의하세요. 공급업체에서는 기본값이 적절하다고 판단하고 있습니다.

지연 시간 평가 시간

esxcli storage nmp psp roundrobin deviceconfig set -d <Device_ID> --type=latency --latency-eval-time=18000

샘플링 IO 수입니다:

esxcli storage nmp psp roundrobin deviceconfig set -d <Device_ID> --type=latency --num-sampling-cycles=32

디바이스 구성 및 하위 정책을 확인하려면 다음과 같이 하세요:

esxcli storage nmp device list -d <Device_ID>

Usageesxcli storage nmp psp roundrobin deviceconfig set [cmd options]

Description:

 set         Allow setting of the Round Robin path options on a given device controlled by the Round Robin Selection Policy.

Cmd options:

 -B|–bytes=<long>   When the –type option is set to ‘bytes’ this is the value that will be assigned to the byte limit value for this device.

 -g|–cfgfile         Update the config file and runtime with the new setting. In case the device is claimed by another PSP, ignore any errors when applying to runtime configuration.

 -d|–device=<str>    The device you wish to set the Round Robin settings for. This device must be controlled by the Round Robin Path Selection Policy (except when -g is specified)(required)

-I|–iops=<long>     When the –type option is set to ‘iops’ this is the value that will be assigned to the I/O operation limit value for this device.

 -T|–latency-eval-time=<long>    When the –type option is set to ‘latency’ this value can control at what interval (in ms) the latency of paths should be evaluated.

 -S|–num-sampling-cycles=<long>  When the –type option is set to ‘latency’ this value will control how many sample IOs should be issued on each path to calculate latency of the path.

 -t|–type=<str>      Set the type of the Round Robin path switching that should be enabled for this device. Valid values for type are:

       bytes: Set the trigger for path switching based on the number of bytes sent down a path.

       default: Set the trigger for path switching back to default values.

       iops: Set the trigger for path switching based on the number of I/O operations on a path.

       latency: Set the trigger for path switching based on latency and pending IOs on path.

 -U|–useano=<bool>   Set useano to true, to also include non-optimized paths in the set of active paths used to issue I/Os on this device, otherwise set it to false.

For host profiles: Stateless

‘Edit host profile’ 창에서 지연 시간 하위 정책의 ‘latencyEvalTime’ 및 ‘samplingIOCount’와 같은 추가 매개 변수를 변경할 수 있습니다.

“Copy settings to Host Profile” 설정을 호스트 프로필에 복사” 창에서 대기 시간 하위 정책 설정을 추출된 다른 프로필에 복사할 수 있습니다.

For host profiles: Stateful

설정은 Esx.conf를 사용하여 재부팅할 때에도 지속됩니다.

/storage/plugin/NMP/device[naa.624a9370b97601e346f64ba900011028]/rrNumSamplingCycles = “32”

/storage/plugin/NMP/device[naa.624a9370b97601e346f64ba900011028]/rrPolicy = “latency”

/storage/plugin/NMP/device[naa.624a9370b97601e346f64ba900011028]/rrLatencyEvalTime = “30000”

스테이트풀에서는 하위 정책을 사용하는 디바이스가 호스트 간에 공유되는 경우 호스트프로필을 사용하여 지연 시간 하위 정책 설정도 적용할 수 있습니다.

Setting via CLI

ESXCli 명령을 실행하여 ‘latency-eval-time‘을 변경합니다:

esxcli storage nmp psp roundrobin deviceconfig set --type=latency --latency-eval-time=30000 --device=<Device_ID>

설정을 확인하려면 다음과 같이 하세요:

esxcli storage nmp device list -d <Device_ID>

Example:

esxcli storage nmp device list -d naa.624a9370b97601e346f64ba900011028

naa.624a9370b97601e346f64ba900011028

Device Display Name: PURE Fibre Channel Disk (naa.624a9370b97601e346f64ba900011028)

Storage Array Type: VMW_SATP_ALUA

Storage Array Type Device Config: {implicit_support=on; explicit_support=off; explicit_allow=on; alua_followover=on; action_OnRetryErrors=on; {TPG_id=0,TPG_state=AO}}

Path Selection Policy: VMW_PSP_RR

Path Selection Policy Device Config: {policy=latency,latencyEvalTime=30000,samplingCycles=16,curSamplingCycle=1,useANO=0; CurrentPath=vmhba5:C0:T1:L7: NumIOsPending=0,latency=0}

Path Selection Policy Device Custom Config:

Working Paths: vmhba4:C0:T0:L7, vmhba6:C0:T1:L7, vmhba6:C0:T0:L7, vmhba5:C0:T1:L7, vmhba5:C0:T0:L7, vmhba4:C0:T1:L7, vmhba3:C0:T0:L7, vmhba3:C0:T1:L7

Is USB: false

ESXCli 명령을 실행하여 ‘num-sampling-cycles’를 변경합니다:

esxcli storage nmp psp roundrobin deviceconfig set --type=latency --num-sampling-cycles=32 --device=<Device_ID>

설정을 확인하려면 다음과 같이 하세요:

esxcli storage nmp device list -d <Device_ID>

Example:

esxcli storage nmp device list -d naa.624a9370b97601e346f64ba900011028

naa.624a9370b97601e346f64ba900011028

Device Display Name: PURE Fibre Channel Disk (naa.624a9370b97601e346f64ba900011028)

Storage Array Type: VMW_SATP_ALUA

Storage Array Type Device Config: {implicit_support=on; explicit_support=off; explicit_allow=on; alua_followover=on; action_OnRetryErrors=on; {TPG_id=0,TPG_state=AO}}

Path Selection Policy: VMW_PSP_RR

Path Selection Policy Device Config: {policy=latency,latencyEvalTime=30000,samplingCycles=32,curSamplingCycle=1,useANO=0; CurrentPath=vmhba5:C0:T1:L7: NumIOsPending=0,latency=0}

Path Selection Policy Device Custom Config:

Working Paths: vmhba4:C0:T0:L7, vmhba6:C0:T1:L7, vmhba6:C0:T0:L7, vmhba5:C0:T1:L7, vmhba5:C0:T0:L7, vmhba4:C0:T1:L7, vmhba3:C0:T0:L7, vmhba3:C0:T1:L7

Is USB: false

Supported Protocols

모든 주요 프로토콜이 지원됩니다: FC, iSCSI, NVMeoF. 변경하기 전에 반드시 스토리지 공급업체에 문의하세요. 설정을 변경하는 경우 동일한 대상에 대한 모든 호스트에서 변경해야 합니다.

UI에서 NVMeoF 대상에 대한 지연 시간 PSP 설정 예시:

Checking NVMe target using esxcli:

esxcli storage hpp device list -d eui.0000000000000990742b0f00000006d0

eui.0000000000000990742b0f00000006d0

  Device Display Name: NVMe TCP Disk (eui.0000000000000990742b0f00000006d0)

  Path Selection Scheme: LB-Latency

  Path Selection Scheme Config: {latencyEvalTime=30000,samplingCycles=16;}

  Current Path: vmhba68:C0:T4:L10

  Working Path Set: vmhba67:C0:T3:L10, vmhba67:C0:T4:L10, vmhba68:C0:T3:L10, vmhba68:C0:T4:L10

  Is SSD: true

  Is Local: false

  Paths: vmhba67:C0:T3:L10, vmhba67:C0:T4:L10, vmhba68:C0:T3:L10, vmhba68:C0:T4:L10

  Use ANO: false

Example of how well the Latency RR PSP works with a stretch cluster (vMSC)

Courtesy of Cody Hosterman @ Pure Storage https://www.codyhosterman.com/2018/10/latency-based-psp-in-esxi-6-7-update-1-a-test-drive/

경로의 초기 설정은 최적화/비최적화로 태그가 지정되지 않습니다. 그 후 모든 경로에 IO가 전송되며 원격 어레이가 쓰기를 승인할 때까지 기다려야 합니다. esxtop에서 경로 세부 정보를 보려면 디스크의 “P”와 에서 “d”를 선택합니다. 이 구성을 사용하면 워크로드가 약 8,500 IOPS를 푸시합니다.

경로에 최적화/비최적화로 태그를 변경하면 호스트가 어떤 경로가 로컬 경로인지 아닌지를 알 수 있습니다. 이는 성능에 큰 도움이 될 수 있습니다. 여기에서는 원격 배열 경로가 사용되지 않는 것을 볼 수 있습니다. 경로를 최적화하면 워크로드가 13,500 IOPS로 증가합니다.

UI에서 활성 IO가 있는 경로와 IO가 없는 다른 사용 가능한 경로도 확인할 수 있습니다.

이제 optimized/non-optimized 태그가 제거되고 지연 시간 RR 정책이 활성화되었습니다. 거의 즉시 최적화되지 않거나 원격 배열 경로가 삭제됩니다.

잠시 후, 지연 시간이 긴 모든 경로는 더 이상 IO가 전송되지 않고 지연 시간이 짧은 로컬 경로만 사용됩니다. 이는 지연 시간이 짧은 RR PSP에 의해서만 이루어집니다. 또한 IOPS는 13,500으로 돌아갑니다. 이 예제에서는 최적화/비최적화 태그가 사용되지 않았음을 기억하세요.

몇 가지 검증과 테스트를 거친 후, 일부 스토리지 파트너는 이를 어레이에 대한 기본 SATP 클레임 규칙으로 설정했습니다.

다음 명령 예제를 사용하여 대상에서 지연 시간 정책을 사용하고 있는지 확인할 수 있습니다.

esxcli storage nmp device list -d naa.6742b0f0000006d0000000000000007f

naa.6742b0f0000006d0000000000000007f

  Device Display Name: NFINIDAT iSCSI Disk (naa.6742b0f0000006d0000000000000007f)

  Storage Array Type: VMW_SATP_ALUA

  Storage Array Type Device Config: {implicit_support=on; explicit_support=off; explicit_allow=on; alua_followover=on; action_OnRetryErrors=off; {TPG_id=1,TPG_state=AO}}

  Path Selection Policy: VMW_PSP_RR

  Path Selection Policy Device Config: {policy=latency,latencyEvalTime=180000,samplingCycles=16,curSamplingCycle=11,useANO=0; CurrentPath=vmhba64:C0:T3:L11: NumIOsPending=0,latency=0}

  Path Selection Policy Device Custom Config:

  Working Paths: vmhba64:C0:T3:L11, vmhba64:C1:T3:L11, vmhba64:C6:T3:L11, vmhba64:C7:T3:L11

  Is USB: false

Customer Observed Results

이 정책을 활성화했거나 사용 중인 고객은 훨씬 더 일관된 성능을 경험했습니다. vMSC가 아닌 기존 설정에서 경로가 지속적으로 사용되지 않는다고 보고한 고객이 몇 명 있었습니다. 일반적으로 이러한 결과는 경로 문제를 나타냅니다. HW 오류, 케이블 불량, GBIC, HBA 등일 수 있습니다. 경로 문제가 강조 표시되는 이유는 지연 시간 PSP가 다른 경로보다 높은 지연 시간을 관찰하고 결국 해당 경로를 회피하기 때문입니다. 문제를 자세히 살펴본 고객들은 결국 지연 시간 PSP의 문제가 아니라 사용되지 않는 경로의 물리적 문제를 발견하게 됩니다.

Summary

점점 더 많은 공급업체가 지연 시간이 짧은 RR PSP로 전환할 계획을 세우고 검증하고 있습니다. 이 솔루션은 고객 설정을 간소화하고 매우 우수하고 지능적인 경로 선택 및 장애 조치를 제공합니다. 귀사 또는 귀사의 공급업체가 지연 시간 RR PSP를 사용하고 있지 않다면 반드시 살펴봐야 할 사항입니다. 아래에서 경로 옵션을 확인하고 수정할 수 있는 리소스를 제공합니다.

Resources


Author

Jason Massae는 Broadcom의 VMware에서 코어 스토리지, vVols, vSAN을 담당하는 기술 마케팅 아키텍트입니다. 외부 스토리지에 중점을 두고 있는 Jason은 vSphere 스토리지를 위한 VMFS, NFS, vVols, NVMeoF 및 vSAN 솔루션과 관련된 업무를 담당하고 있습니다. 고객과 긴밀히 협력하고 엔지니어링을 통해 고객이 최상의 스토리지 솔루션과 배포를 최적화할 수 있도록 지원하는 콘텐츠 자료를 개발합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like