Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  Hyper-V 2012 R2 기본 부터 고급 까지 1. Processor : Virtual Processor VS Logical Processor 
작성일시 : 2013. 12. 20. 23:57 | 분류 : Cloud/Hypervisor

안녕하세요.
Windows Server 2012 R2 가 시장에 선보인 지도 벌써 반년이 지나가고 있습니다.
오늘부터 저는 여러분들과 Hyper-v 2012 R2에 대한 학습을 하고자 합니다.
오늘은 그 첫 번째 Processor 에서도 Logical Processor와 Virtual Processor의 개념에 대한 이야기를 해 보겠습니다.

1.1 Virtual Processor VS Logical Processor

Virtual Processor
간단합니다. 바로 VM이 사용하는 Processor을 의미 하죠.
VM의 작업 관리자에서 확인 할 수 있는 그 Processor 입니다.

Logical Processor
질문 : Logical Processor는 작업 관리자에서 확인 할 수 있다?
답변 : 땡! 틀렸습니다.

Logical Processor는 Hypervisor가 직접 관리하는 실제 Processor을 의미합니다.
그런대 왜? Logical Procssor 라구 불리울까요? 실은 이 Logical Processor는 Hyperthreading 까지를 포함한 Processor의 개념을 의미 하기 때문입니다.
즉 1 소켓 머신에 4 Core CPU 그리고 Hyperthreading이 활성화 되어 있다면 총 Logical Processor의 갯수는 8개가 되는 거죠. (Hyperthreading에 대해서는 다음에 다루도록 하겠습니다.) 자 그렇다면 Hyper-v의 호스트 파티션에서는 Logical Processor을 작업 관리자에서 확인 할 수 있을까요? 정답은 당연히 확인 할 수 없다 이구요 120점 짜리 정답이 되려면 작업 관리자에서는 확인이 불가능 하지만 성능 모니터에서는 확인 할 수 있다 정도가 될꺼 같습니다. 실은 Hyper-v 상에서 Partition이라고 불리는 친구들은 바로 Hyper-v에게서 CPU (Virtual Processor) 와 메모리를 할당 받은 친구들이기 때문이죠. 그리고 Hyper-v Host 역시도 Root Partition이라고 불리우는 가장 처음 시작 되는 Partition일 뿐이기 때문 입니다.
그렇기 때문에 만약 여러분이 Logical Processor가 80개인 머신에서 Hyper-v 를 활성화 했을때, Host에서 확인 가능한 Processor의 갯수가 64개 즉 Hyper-v가 VM에 줄 수 있는 최대 Processor 갯수로 줄어 버리는 거죠.

그렇기 때문에 아래 그림과 같은 일들을 실제 종종 확인 할 수 있습니다.

보시는 작업 관리자 화면은 VM의 작업 관리자에서 확인한 CPU 사용량 즉 Virtual Processor 사용량 입니다.
100%군요!!!
 image

하지만 Host에서 보면 아래와 같이 0%인 것을 볼 수 있는데 이는 당연한 결과 입니다.
결론은 둘 다 서로 각자의 Virtual Processor를 보고 있기 때문이죠.
 image

그렇기 때문에 우리는 실제 Logical Processor에 가해 지는 부하를 보기 위해 성능 카운터 중 “Hyper-v Hypervisor Logical Processor” 의 Total Run Time 및 Guest Run Time, Hypervisor Run Time 등을 확인 해야 합니다.

자 이제 둘이 서로 다르다는 것을 확인 하셨나요?

실은 Hyper-v 즉 일반적으로 Hypervisor라고 불리우는 가상화 플랫폼의 가장 큰 역활 중 하나는 바로 Logical Processor를 적절하게 VM이 소유한 Virtual Processor에 할당해 주는 것입니다.
이를 우리는 스케줄링이라고 부르고 있죠. 그리고 적절한 스케줄링을 위하여 우리의 Hyper-v 는 Partition 들과 이런 저런 정보를 교환 하게 되는데, 이렇게 정보의 교환이 원활한 Partition을 우리는 Enlighten 된 Partition 이라고 부릅니다. (Guest OS의 커널이 Hyper-v 를 인지하고 Hyper-v 운영에 필요한 정보 즉 예를 들어 스케줄링에 필요한 데이터를 전달) 물론 스케줄링 알고리즘 및 위에서 설명한 Enlighten에 대해서도 다음에 다룰 생각이니 갑자기 어려운 이야기가 나왔다고 다급해 하실 필요는 없습니다… :) 그리고 이런 정보들을 Hyper-v에 전달하기 위해 사용되는 방식이 바로 Hypercall 입니다. (정확하게는 Partition과 Hypervisor 간의 통신 인터페이스를 의미 합니다.)

이미 설명 드린 바와 같이 Host Partition이 됐건 Guest Partition이 됐건 실제로 Processor에서 동작하는 Thread들은 Partition의 Virtual Processor가 Logical Processor을 할당 받게 되면 별다른 치환 이나 변경 없이 바로 실행 되게 됩니다. 그렇기 때문에 Hyper-v 즉 Hypervisor 기반의 Partition 들이 별다른 성능 저하 없이 이론적으로 만약 Logical Processor와 Virtual Processor을 1:1로 Mapping 한 경우에는 거의 100%에 가까운 성능을 낼 수 있다고 이야기 하는 이유 입니다.

그럼 다음에 Logical Processor와 Virtual Processor의 스케줄링이라는 주제로 다시 찾아 뵙겠습니다.

감사합니다.

|