Hyper-V 가상화 환경에서 CPU 사용량 측정해보기~

일전 포스팅에서 물리적인 머신내 작업 관리자에서 표시되는 프로세서의 사용량이 실제 존재하는 하드웨어 프로세서의 전체 사용량이 아니다라는 포스팅을 한적이 있습니다.

그렇다면 실제 가상화 환경에서 CPU에 대한 여러 성능 데이터는 어떻게 얻을 수 있을까요? 바로 루트 파티션의 성능 모니터를 이용하셔야 합니다.

Hyper-V 머신에서는 크게 5가지의 성능 모니터링 개체를 제공합니다.

  1. Hypervisor - Hypervisor 그 자체, 논리 프로세서, 가상 프로세서, 파티션 정보
  2. Hyper-V VM Objects - 가상 머신내 IDE 컨트롤러, PIC, 이더넷 컨트롤러와 같은 정보
  3. Hyper-V VMMS Objects - 가상 머신 관리 서비스에 관련된 정보
  4. Hyper-V Virtual Objects - 파티션내 네트워크 아답터, 스위치, 스위치 포트와 같은 정보
  5. Synthetic Storage Devices - 저장소 장치에 읽고, 쓰기에 관련된 정보

오늘은 이중 CPU 사용량에 관련된 성능 모니터링을 살펴보겠습니다. 아래의 그림은 제가 사용중인 한 가상 머신의 작업 관리자입니다. 현재 CPU 사용량이 100%로 두개의 코어가 모두 100%인 것을 보실 수 있습니다.

image image

상단의 오른쪽 그림은 이 당시 실제 물리적인 머신의 작업 관리자인데요. CPU의 점유율이 1%정도임을 아실 수 있습니다. 다시 말해, 파티셔닝이 되어져 있기 때문에, 물리적인 머신과 가상 머신의 CPU 사용률은 전혀 상관이 없다는 것입니다. 이정도까지의 내용이 이전 포스팅의 내용이었습니다.

그렇다면~ 실제 프로세서의 사용량과 가상 머신의 CPU 사용량을 성능 모니터에서 살펴보려면 어떤 개체와 카운터를 사용해야 할까요?

바로 Hypervisor 카테고리내에 답이 있습니다. 가상 머신에서 사용중인 CPU 사용량은 Hyper-V Virtual Processor라는 개체내 %Guest Run Time을 사용하셔야 하며, 실제 하드웨어 프로세서의 사용량은 Hyper-V Logical Processor라는 개체내 HV LP #(코어 번호)을 사용하셔야 합니다. Processor 개체내의 %Processor Time은 물리적인 파티션에 대한 CPU 사용량을 보여주는 것에 불과합니다.

위의 그림내 상황에서 성능 모니터에서 보여주는 값은 무엇일까요?

image

98~99%.. 즉 거의 100%를 보여주는 것을 볼 수 있습니다. 이 당시 실제 하드웨어의 사용량을 살펴보면...

image

8 코어의 머신의 개별 논리 프로세서의 사용량은 다음과 같습니다.

  • LP 0 - 평균 37%
  • LP 1 - 평균 34%
  • LP 2 - 평균 17%
  • LP 3 - 평균 10%
  • LP 4 - 평균 10%
  • LP 5 - 평균 15%
  • LP 6 - 평균 41%
  • LP 7 - 평균 40%

총합 204% / 코어 8개 하면 = 25.5%, 대략 25~26% 정도가 나옵니다.

image

가상 머신 설정내 나오는 전체 시스템 자원의 퍼센트와 일치하는 것을 보실 수 있죠? 이제 이해가 되실 겁니다. 이때 일반 개체인 Processor에서 %Processor Time 값은 크게 가상 머신과는 무관함을 보실 수 있습니다.

image

Hypervisor 기반의 Hyper-V 경우, 모니터링을 하시기 위해서는 실제 Hypervisor에서 값을 찾아올 수 있는 성능 모니터를 이용하셔야 정확한 값을 받아오실 수 있습니다. System Center Operation Manager나 System Center Virtual Machine Manager의 경우에도 성능 모니터를 이용하여 사용자에게 정확한 성능 상태를 제공할 수 있게 됩니다.

조금은 어려우시거나, 복잡하실 수 있지만, 한번은 알아두시면 좋은 내용이라고 생각합니다.