Vmware ESXi высокий disk latency - отключаем ATS heartbeat на datastore.
Симптом
Тормозили нагруженные виртуальные машины, при этом по мониторингу vSphere наблюдалась весьма интересная картина.
На виртуальной машине Disk latency time составлял до нескольких секунд. Конечно, в таком случае чего удивляться, что система тормозит.

НО, с точки зрения системы хранения и ГИПЕРВИЗОРА ESXi на котором виртуальная машина жила картина была очень и очень хорошей - Disk latency time на хосте с множеством виртуальных машин по всем дискам не превышал 200 мс. Три секунды показанные виртуальной машиной и близко не стоят к показанной цифре.

Несоответствие потребовало детального разбора в происходящем.
Причины
В логах зафиксировано большое количество сообщений о не корректных блокировках:
В логах ESXi выявлены сообщения, которые указывают на недоступность путей, а именно для vmhba2 и vmhba3:
2020-02-06T13:33:07.786Z cpu1:2098525)WARNING: NMP: nmp_PathDetermineFailure:3462: Cmd (0x9e) PDL error (0x5/0x25/0x0) - path vmhba2:C0:T2:L0 device naa.6005076300808cc89000000000000006 - triggering path failover
2020-02-06T13:33:07.786Z cpu1:2098525)NMP: nmp_ThrottleLogForDevice:3802: Cmd 0x9e (0x459a8126abc0, 0) to dev "naa.6005076300808cc89000000000000006" on path "vmhba2:C0:T2:L0" Failed: H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0. Act:FAILOVER
2020-02-06T13:33:07.786Z cpu1:2098525)WARNING: NMP: nmp_DeviceRetryCommand:133: Device "naa.6005076300808cc89000000000000006": awaiting fast path state update for failover with I/O blocked. No prior reservation exists on the device.
2020-02-06T13:33:07.846Z cpu7:2097952)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:748: Path "vmhba3:C0:T2:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
2020-02-06T13:33:07.846Z cpu7:2097952)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:748: Path "vmhba2:C0:T5:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
2020-02-06T13:33:07.847Z cpu7:2097952)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:748: Path "vmhba3:C0:T3:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
2020-02-06T13:33:07.847Z cpu7:2097952)VMW_SATP_ALUA: satp_alua_issueCommandOnPath:748: Path "vmhba2:C0:T2:L0" (PERM LOSS) command 0xa3 failed with status Device is permanently unavailable. H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x25 0x0.
В соответствии с KB ESXi host loses connectivity to a VMFS3 and VMFS5 datastore (2113956)
Потребовалось отключение "ATS heartbeat " на всех ESXi, которые имют жоступ к системе хранеия данных, а точнее к datastore
Для началла проверяли установленное значение коммандой
esxcli system settings advanced list -o /VMFS3/UseATSForHBonVMFS5
Вывод:
Path: /VMFS3/UseATSForHBOnVMFS5
Type: integer
Int Value: 1 <------1 - ATS heartbeat ВКЛЮЧЕН
Default Int Value: 1
Min Value: 0
Max Value: 1
String Value:
Default String Value:
Valid Characters:
Description: Use ATS for HB on ATS supported VMFS5 volumes
Выключаем ATS heartbeat на каждом ESXi подключенном к datastore
esxcli system settings advanced set -i 0 -o /VMFS3/UseATSForHBOnVMFS5
Проверяем статус выключения коммандой
esxcli system settings advanced list -o /VMFS3/UseATSForHBonVMFS5
Вывод:
Path: /VMFS3/UseATSForHBOnVMFS5
Type: integer
Int Value: 0 <------0 - ATS heartbeat ВЫКЛЮЧЕН
Default Int Value: 1
Min Value: 0
Max Value: 1
String Value:
Default String Value:
Valid Characters:
Description: Use ATS for HB on ATS supported VMFS5 volumes
Результат
После отключения ATS heartbeat во первых ощутимо улучшилась производительность тормозящих систем, во вторых несоответствие выровнялось - показатели disk latency виртуальной машины уже были в пределах (не превышали) показатели для всего ESXi хоста.