VMworld 2017에서 성능 이슈를 해결하고 원인 분석을 하는 동영상을 정리해보았습니다.


VMworld 2017 SER1534BUR - VMware vSphere Performance Troubleshooting and Root Cause Analysis

https://www.youtube.com/watch?v=a_VyvjGeEcQ


ESXTOP

Esxtop은 ESXi host에서 실행되는 실시간 성능 모니터링 도구로 리눅스의 top 명령과 유사합니다. 옵션은 다음과 같습니다.

C: CPU     m: Memory    d: Disk(Adapter)    u: Disk (device)    v:Virtual Disk (소문자)    n: network

V: Virtual Machine view(대문자)    h: help    q: Quit


CPU

VMware에서 VM이나 ESXi 에서 실행되는 작업을 World 라고 부르는데 World가 Schedule 되는 상태는 다음과 같습니다.

World 상태 중 Ready, Costop이 중요 합니다. Ready 각 vCPU 별로 10 이상이 되어서는 안됩니다. 10 이상이라는 것은 VM의 vCPU가 실행되려 할 때 Hypervisor가 pCPU를 할당해주지 못하는 상태입니다. 그리고 Cstop은 3이상이 되어서는 안됩니다. cstop은 vSMP 일때 사용되는 것으로 Core가 2개인 VM이 있을 때 빠른 vCPU가 느린 vCPU를 기다린 시간 입니다. Cstop 값이 높다면 NUMA를 고려해서 physical CPU의 구조를 따르는 것이 좋습니다. 8 개 이상의 vCPU가 필요한 VM은 하나의 코어를 소캣을 각각 생성하는 방법을 고려할 수 있습니다.


CPU Key performance indicator는 다음과 같습니다.

ESXi host: Ready time, Utilization, Load average

VM: Ready time(%RDY), Co-stop(%CSTP), Swap wait(%SWPWT), MaxLimited(%MLMTD)

%USED 와 %RDY가 높다는 것은 CPU가 over-commitment 되었다는 의미 입니다.


Memory

esxtop 에서 m을 누르면 Memory의 상태를 확인할 수 있습니다. PMEM 은 설치된 물리 메모리를 나타내고 VMKMEM은 VMkernel에 관리하는 메모리를 나타냅니다. Minfree 는 VMkernel이 free 상태 유지해야 하는 메모리 양을 나타내고 rsvd는 Resource Pool에 Reserve 된 메모리의 양을 나타냅니다.

ESXi host는 Minfree 의 양을 계산해서 Memory의 state를 표시 합니다. Minfree의 크기는 물리 메모리의 크기에 따라서 자동으로 계산되는데 0~4GB 물리 메모리의 경우 245MB 정도가 할당되고 12~28GB의 경우 696MB 정도가 할당된다. Minfree 대비 어느 정도의 Free 메모리가 남아 있는지에 따라서 Memory State가 High, Clear, Soft 등으로 표시된다.

 

esxtop 에서 j 를 누르면 Ballooning 상태를 확인할 수 있습니다. MEMCTL/MB 값으로 Memory Balloon 상태를 알 수 있으며 MCTL이 Y로 되어 있으면 해당 VM에 Balloon Driver가 설치된 것 입니다. MCTLSZ 값이 0이 아닌 경우 Host의 메모리가 over-commit 되어 Bollandriver가 메모리를 회수하는 것입니다. ZIP은 Host에서 메모리가 압축된 상태를 보여줍니다. CACHESZ로 압축된 캐시의 크기를 보여주고 ZIP/s 와 UNZIP/s 를 통해서 압축을 하는데 사용된 IO를 보여 줍니다.

SWAP은 VM의 성능에 많은 영향을 주는데 SWCUR 값으로 현재 SWAP에 사용된 메모리의 양을 할 수 있고 SWR/s, SWW/s를 통해서 SWAP 동작을 확인할 수 있습니다. SWAP 관련 값들은 0 이상일 경우 SWAP이 발생하였고 SWAP으로 인해 VM의 성능저하가 발생했는지 확인할 수 있습니다.


Network

Network 은 여러가지 지점에서 성능을 확인해봐야 합니다. 우선 Virtual NIC를 살펴보면 Virtual NIC이 사용하는 uplink를 확인해야 하고, Virtual NIC의 대역폭을 확인해야 하고, Virtual NIC의 패킷 수와 평균 패킷 크기 마지막으로 Virtual NIC에서 drop 한 패킷을 확인해야 합니다. 그리고 물리 NIC에서도 대역폭, 패킷 수, 평균 패킷 크기 마지막으로 drop 한 패킷을 확인해야 합니다.


esxtop 에서 n 을 누르면 network의 성능 정보를 볼 수 있습니다. %DRPTX %DRPRX 는 packet이 drop 되었다는 것으로 0 값을 가져야 합니다.

(물리 NIC 마다 NetPol 이라고 불리는 Receive Thread가 할당되어 있습니다. NetPol의 사용량은 esxtop의 vmx의 %SYS  값으로 확인할 수 있습니다.)

Network packet은 Buffer가 부족하면 Drop 됩니다. 패킷을 보내거나 받기 위해서는 버퍼가 필요 합니다. Virtual NIC이나 Virtual switch port의 버퍼를 사용하는데 버퍼의 크기보다 패킷이 더 많은 경우 Drop 하게 됩니다.


Storage

스토리지 성능을 이해 하려면 몇가지 용어를 알아야 합니다. 

IOPS: 초당 Input/output 또는 Read/Write를 한 횟수

SCSI Command: Disk의 명령으로 Read/Write, SCSI reservation 등이 있습니다.

SCSI Reservation: 분산 파일시스템에서 메타 데이터를 보호하기 위해 LUN을 lock 하는 것입니다.

Latency: SCSI 명령이 최초 발생/처리/완료 되는데 걸린 시간으로 보통 ms 단위 입니다.

Throughput: Disk에 전달된 데이터의 총합으로 보통 MBps 단위 입니다.


esxtop 에서 v 를 누르면 VM의 vmdk 디스크의 성능, u를 누르면 LUN의 성능 마지막으로 d를 누르면 HBA/RAID card 시점에서 성능을 확인할 수 있습니다. 

 


CMDS/s 는 초당 Disk에 전달된 명령의 양을 확인할 수 있고 DAVG는 Driver driver에서 실제 디스크 장치까지의 응답 시간으로 15 ~ 20 ms 내의 시간을 가져야 합니다. KAVG는 VMKernel의 응답 시간으로 2 ~ 3ms의 시간을 가져야 합니다. (Guest 가 인식하는 응답 시간은 DAVG+KAVG 입니다).마지막으로 Disk의 ABRTS/s 값은 0이어야 합니다. DAVG가 높고 KAVG가 낮은 경우는 Array에 부하가 많이 걸린 것이고 KAVG가 높고 DAVG가 낮은 경우는 Host에 부하가 걸린 것입니다.

아래 내용을 참고해서 esxtop에 대해서 더 알아볼 수 있습니다.


Interpreting esxtop Statistics

https://communities.vmware.com/docs/DOC-9279


Using esxtop to identify storage performance issues for ESX / ESXi (multiple versions) (1008205)

https://kb.vmware.com/s/article/1008205


감사합니다.

'Virtualization' 카테고리의 다른 글

[VMware] Guest OS Disk timeout 설정  (0) 2019.04.06
VMware vCenter Performance  (0) 2019.02.23
ESXi Internal  (0) 2018.10.20

+ Recent posts