가상화 환경에서 CPU 점유율과 관련된 이슈

Windows Server 2008 플랫폼 출시 이후, 가상화에 대한 많은 관심과 POC, 테스트가 여기저기서 많이 진행되고 있습니다. 이번주초부터 실무자 분들과 많이 의견을 나눈 내용을 하나 포스팅해볼까합니다.

첫번째로 나왔던 토론 주제는 "가상 머신에서 CPU 사용률이 100%인데 왜 메인 운영 체제내 작업 관리자 CPU 사용률이 낮냐?"라는 것이었습니다.

image

하이퍼바이져 기반에서 메인 운영 체제 - Parent Partition과 가상 머신 - Child Partition은 말 그대로 하나의 파티션에 불과합니다. 하이퍼바이져가 바라보았을 때 부모 파티션이던 자식 파티션이던 개별 파티션에 불과하다는 것이죠. VM에서 CPU 사용률이 100%라는 것은 말 그대로 하이퍼바이져가 VM에 제공한 CPU의 리소스를 100% 다 쓰고 있다는 의미이지.. 이 100%의 의미가 물리적인 CPU를 100% 다 쓰고 있다는 의미는 아니라는 것입니다. 따라서 물리적인 머신의 작업 관리자에서는 CPU 점유율이 낮지만, VM에선 100%를 다 쓸 수도 있다는 의미로 보실 수 있습니다. 그렇다고 한다면, 가상 머신에서 사용하고 있는 CPU 사용률에 대해서는 어떻게 측정을 해야 하느냐? 바로 물리적인 머신내 성능 모니터에 답이 있습니다.

image

성능 모니터내 카운터 값중 % Guest Run Time이라는 카운터가 있습니다. 이는 Hyper-V Hypervisor Virtual Processor라는 개체 밑에 존재하죠. 이 값의 의미가 실제 가상 머신에서 CPU를 얼마나 사용하느냐는 의미로 보시면 됩니다.

하드웨어적인 CPU 입장에서는 총 3가지의 사용률이 생기게 됩니다.

  1. 부모 파티션에서 사용하는 CPU 사용 + VM을 동작시키기 위한 작업자 프로세스 + 에뮬레이션을 위한 사용
  2. 자식 파티션에서 사용하는 CPU 사용 - % Guest Run Time
  3. 하이퍼바이져 레벨에서 사용하는 CPU 사용 (하이퍼바이져 핸들링 인터럽트, 컨텍스트 스위칭등) - % Hypervisor Run Time

이 3가지가 전부 합쳐져야 실제 하드웨어 CPU의 사용률을 생각하실 수 있습니다.

파티셔닝과 하이퍼바이져에 대한 정확한 이해가 있으시다면, 이 내용이 쉽게 이해되실 수 있습니다. 현재 Windows 플랫폼 팀과 가상화 팀에서 작업 관리자에 대한 개선을 노력중인 것으로 알려져 있습니다. 차후 허락된다면 Hyper-V 성능 모니터에 대해서도 한번 포스팅하겠습니다.