-
ESXTOP cpu 메트릭 분석VMware/vSphere 2018. 5. 1. 12:051) CPU-01. 'e' 버튼을 통해 특정 월드의 구성원 (NWLD) 정보가 확인 가능하다.<<확장 전>><<확장 후>>위에 대해 설명하자면 'MCS03'은 하나의 Process이며 각 월드의 구성원들은Thread이다.운영체제론에 대해 공부한 사람은 Process와 Thread의 차이점에 대해 알 것이다.<<Process, Thread>>위와 같이 프로세스에 할당 받은 자원을 공유 하면서 각 쓰레드는 CPU를 할당받을 수 있다.VMware 관점에서 보면 쓰레드를 통해 CPU 유휴 Time 없이 더욱 부지런하게 CPU 스케줄링을 받을 수 있다는 것이다.어쨋든, 위 프로세스를 구성하는 각 쓰레드에 대해 설명하자면 아래와 같다.( vmware.log를 'thread' 로 게더링 하면 확인할 수 있다. )thread 0 - vmxthread 1 - svga ( 3D )thread 2 - mks ( Mouse, Keyboard, Screen )thread 3 - vmast로 추정... ( 메모리 스캔에 사용된다고 한다. )thread 4~5 - vCPUthread 6~7 - vthread여기서 의문인 점은 vmx-vthread-#인데 VM에 테스트 결과 'SCSi Controller'를추가할 시 vmx-vthread-# 가 추가된다.-02. PCPU, Core UTIL, USED아래 그림을 보면 알겠지만, PCPU는 HT enable 시 기준으로 논리적 코어를 나타내며 CORE은 물리적 코어를 나타낸다.<<PCPU, CORE>>CORE UTIL% 이란 ??적어도, 하나의 PCPU가 사용 된 시간의 백분율이다. 얘기하자면 CORE의 모든 PCPU가 IDLE 상태일 때의 반대값이라는 뜻이다.자 그럼 여기서 PCPU01 UTIL% + PCPU02 UTIL% = CORE01 UTIL% 이냐 ?답은 아니다. 먼저 공식화 하자면PCPU01% or PCPU02% <= CORE01 UTIL% <= PCPU01% + PCPU02% 이다.이는 아래 예시를 통한PCPU UTIL과 CORE UTIL의 차이점으로 알 수 있다.<< PCPU, CORE UTIL 차이>>PCPU01 -----+++++ (50% 사용)PCPU02 +++++----- (50% 사용)CORE01 ++++++++++ (100% 사용)PCPU01 +++++----- (50% 사용)PCPU02 +++++----- (50% 사용)CORE01 +++++----- (50% 사용)PCPU01 --+++++--- (50% 사용)PCPU02 ---+++++-- (50% 사용)CORE01 --++++++-- (60% 사용)다음으로 PCPU USED란 ??PCPU UTIL중에 수행 된 '유효한 작업의 양'을 나타내며, '유효한 작업의 양'의 개념을이해하려면 위 쓰레드 개념을 알면 수월할 것이다.UTIL과 USED가 다른 경우에는 2가지 이유는 'Hyperthreading', 'Power Management Policy' 가 있다.말했듯이, 쓰레드는 프로세스의 리소스 (하드웨어, 메모리 등)을 공유하지만 CPU는 각각 사용한다.즉 동일한 시간대에 PCPU(쓰레드)가 같이 사용되는 상황의 실질적인 사용률과 서로다른 시간대에 PCPU(쓰레드)가 사용되는 상황의실질적인 사용률은 다를 것이다.아래 예시를 보면 이해가 수월할 것이다.<<UTIL, USED 차이 - Hyperthreading>>PCPU01 -----+++++ (UTIL 50%, USED 50%)PCPU02 +++++----- (UTIL 50%, USED 50%)PCPU01 +++++----- (UTIL 50%, USED 25%)PCPU02 +++++----- (UTIL 50%, USED 25%)PCPU01 +++++----- (UTIL 50%, USED 40%)PCPU02 ----+++++- (UTIL 50%, USED 40%)<<UTIL, USED차이 - Power Management Policy>>PCPU UTIL * ( 유효 주파수 / 보통 주파수 )만약 2.0 GHz CPU에서 P-State로 인해 1.5 GHz만 사용하는 상황의 UTIL 값은 80%일 때 USED 값은 60%이다.반대로 터보 모드를 통해 유효 주파수가 높다면 USED 값도 UTIL값보다 높아질 것이다.-03. CPU Metric@USEDUSED% = RUN% + SYS% - OVLP%USED% 최대 = vCPU * 100%일반적으로 vCPU-0이 시스템서비스로 계산되기 때문에 다른 vCPU-# 보다 값이 높음.-> vmx process<<USED% 최대 값>>@SYS, OVLP%SYS는 월드 대신에 System Service가 처리한 시간의 백분율이다.System Service에 대해서는 여러가지가 있는데 인터럽트 처리기 및 system world가있다.system world는 약 400개의 서비스로 구성되며 아래 보다시피 VMKernel에서 동작하는모든 서비스 ( Log 수집, Load Balancing, Packet Capture ... ) 이 포함되어 있다.<<system world 구성>>반대로 %OVLP는 시스템 서비스가 자신의 월드 대신에 다른 월드를 서비스 한 시간의 백분율이다.이해가 잘 안되지만, 대충 시스템 서비스가 월드 'A'를 위해 월드 'B'를 인터럽트를 한 시간이 't'라고 한다면월드 'A'에게는 %SYS 값이 't'이며, 월드 'B'에게는 %OVLP 값이 't'이다.일반적으로 High I/O 발생 시 %SYS 값이 증가한다.아래는 I/O 발생기를 사용하여 VM에 High I/O 발생 시 수치이다.물론, Disk와 SCSi Controller가 늘어나면 % SYS 수치 또한 늘어난다.<<High I/O에 발생 전 후 >><<vDisk, SCSI Controller를 추가한 후>> ( 모든 Disk에 동시에 I/O를 발생시키기 위해 Windows OS 내부에서 디스크 미러링 후 테스트 )@RDY, MLMTD%RDY는 월드가 CPU를 할당받기 위해 대기하는 시간의 백분율이다.일반적으로 %RDY가 높으면 CPU 경합이 발생하는 상황이라 볼 수 있는데 이 때 확인해야 할 사항이 %MLMTD이다.%MLMTD는 CPU Limit 제한으로 인해 할당받지 못하는 상태를 나타내며, %RDY 값에는 %MLMTD 값이 포함되어 있기 때문에실질적인 CPU 경합을 확인하기 위해서는 %RDY-%MLMTD 값을 확인해야 한다.( 일반적으로 20%가 넘지 않도록 )<<CPU 제한 없는 상태>>단순히 CPU 오버커밋으로 인한 %RDY 값만 높은 상태( 40CPU ESXi에 16CPU VM * 3 EA )<<CPU 제한 상태>>CPU 오버커밋이 아닌 CPU Limit으로 인한 %RDY 값 증가( 40CPU ESXi에 16CPU VM * 1EA )@CSTPMulti-Core VM에서 모든 Core VM을 받을 때까지 대기하는 시간의 백분율이다.아래 그림을 보면 이해가 수월 할 것이다.4CPU VM이 2CPU만 할당 받고 나머지 2CPU는 할당받지 못하는 상태 (Wasted Slots)을 나타낸다.<<CO-STOP>>@WAIT, IDLE, SWPWT%WAIT은 월드가 대기 상태에 있는 시간의 백분율이다.이 값은 단순히 유휴 상태인 %IDLE 일 수 있으며 I/O대기나 VMKernel 리소스를 대기하는 시간일 수 있다.때문에 I/O에 대한 값을 추측할 때 %WAIT - %IDLE 값으로 계산한다.여기서 월드 구성원 중 vCPU를 제외한 요소 (mks, vmx) 경우 기본적으로 %WAIT 값이 100에 가깝다.때문에 정확한 I/O에 대한 값을 추측하기 위해서는 vCPU 요소에 대해서만 %WAIT-%IDLE 값을 계산해야 한다.%SWPWT 경우 Memory 스왑을 대기하는 시간이며 이 역시 %WAIT에 포함된다.
'VMware > vSphere' 카테고리의 다른 글
VMKernel NIC Multi-homing Test (0) 2019.01.27 Interrupt Remapping (0) 2018.05.01 VMtools 설치 진행 중 Unmount 에러 (0) 2018.05.01 hostd로 인한 ESXi 서비스 비 정상 (0) 2018.05.01 댓글