벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] IDF 2008에서 본 Intel의 가상화 대응 방안

tware 2008. 9. 5. 16:00

 

8월에 미국 샌프란시스코에서 개최된 Intel의 개발자 세미나 "Intel Developer Forum (IDF) 2008 "에서 가상화 기능을 더 확충 할 방안 등을 설명했다. 여기에서는 가상화 기능과 관련된 정보를 정리해 소개한다.

 

하이퍼 바이저의 성능을 올리는 CPU

 

 

Intel 가상화는 이런 기능에 의해 구성


 Intel의 CPU는 VT-x라는 명칭의 하드웨어 가상화 지원 기능이 탑재되어 있다. 현재 Penryn 세대의 CPU에 탑재된 VT-x 기능은 가상화 하이퍼 바이저를 링0 이라는 OS의 커널이 동작하는 모드보다 더 높은 우선 순위 모드 "VMX Root / VMX non-Root "에서 작동하는 것이 가능하다. 여기에 한층 하이퍼 바이저가 가상 머신을 전환 할 때, CPU의 레지스터 등을 효율적으로 스위치 가능한 명령과 레지스터 등의 보존 영역이 준비되어 있다 (VMCS Virtual Machine Control Structure).

 

 이들 기능을 하드웨어화 한 것으로, Intel의 CPU는 고속으로 하이퍼 바이저를 움직이는 것이 가능하다. (AMD의 Opteron에서도 비슷한 기능이 지원된다).

 

 이 VT-x는 최신 Penryn 세대뿐만 아니라, Pentium D 세대부터 일부 CPU에 탑재되어 있다 (펜티엄 D 9x0 라인). 또 Itanium에도 VT-x와 비슷한 가상화 지원 기능인 VT-i가 탑재되어 있다. VT-x를 사용하면  소프트웨어만으로 모든 기능을 실현하는 것에 비해 2배 이상의 성능 향상을 실현한다.

 

 현재 Microsoft Hyper-V, VMware ESX Server, Xen 등 많은 가상화 소프트웨어에서 VT-x를 지원한다. 이것에 의해, 가상 환경의 성능을 높일 수 있어, 1대로 더 많은 가상 머신을 움직이거나 더 복잡한 처리를 하는 것이 가능해졌다.

 

 Intel에서는 차세대 CPU "Core i7"(개발 코드 명 : Nehalem)에서 VT-x의 기능을 한층 확충하려고 한다.

 

Core i7에서는 Extended Page Tables (EPT)과 Virtual Processor ID (VPID)라는 기능이 탑재되어 있다. 하이퍼 바이저는 물리 메모리 공간을 가상 머신이 동작하는 가상 메모리 공간에 매핑하는 것으로, 가상 머신이 복수 동작해도 깔끔히 정리해 동작하게 된다. 다만, 현재의 하이퍼 바이저는 소프트웨어로 메모리 공간을 관리하고 있기 때문에, 하이퍼 바이저상에서 자주 메모리 관리를 하는 태스크가 동작하게 된다. 따라서 복수의 가상 머신을 움직이는 하이퍼 바이저에서는 하나 하나의 동작에 메모리 매핑 기능이 필요하기 때문에, 이 부분이 대폭적인 성능 저하를 가져온다.

 

 그래서 EPT에서는 메모리 맵핑을 계산하는 기능을 하드웨어로 추가했다. 이것에 의해 가상 머신의 메모리가 물리 메모리의 어느 부분에 있는지 등을 고속으로 계산하는 것이 가능해 진다. 하이퍼 바이저에서 자주 계산을 하는 메모리 매핑 기능이 고속으로 처리 가능하다는 것이다.

 

 

Core i7에 탑재된 EPT는 가상 머신에서의 메모리 액세스 속도를 고속화 한다.

 

 

 Core i7에서 지원하는 EPT와 VPID에 의한,

가상 환경이 현재의 CPU보다 40% 이상 성능 향상 된다.

 

 

EPT는 가상 머신의 메모리 공간을 물리 머신의 메모리 공간으로 변환하기 위한 테이블을 하드웨어로 지원한다.

 

또 VPID는 가상 머신이 바뀌었을 때 물리 메모리와 가상 머신의 메모리 공간을 매핑하는 테이블을 가상 머신마다 보존하는 기능이다. 따라서 가상 머신이 교체되도 가상 머신마다 메모리 공간을 매핑한 테이블이 보존되어 있기 때문에 바로 테이블을 되돌릴 수 있다.

 

 EPT 관해서도 하이퍼 바이저 자체가 지원하지 않으면 CPU가 지원해도 성능 향상은 안된다.  현재 Hyper-V, ESX Server, Xen 등이 EPT 기능을 지원하는 것을 표명했다. (Xen은 3.3에서 EPT가 선행 적으로 지원된다. Hyper-V 및 ESX Server도 다음 버전에서는 , EPT의 지원을 표명했다.).

 

 Intel에서는 EPT와 VPID를 지원하는 하이퍼 바이저가 어느정도 성능 향상되는지는 명확하게 말하지는 않지만, 몇 가지 자료로 부터 현재의 Penryn 세대의 CPU 보다 2배 가까운 성능 향상을 할 가능성이 있다.

 

 

 또 가상 환경에서 일어나는 인터럽트 우선 순위를 붙여 정리하는 VT FlexPriority 기능이 준비되었다. 지금까지의 하이퍼 바이저에서는 복수의 가상 머신에서 일어나는 인터럽트를 관리하기 위해 APIC를 소프트웨어로 실현하고 있었다. 하지만 VT FlexPriority 기능에서는 APIC의 TPR (인터럽트의 우선 순위를 나타내는 레지스터) 하드웨어에 가상 머신에서 직접 접근해서 문제가 발생하지 않도록 한다. 이것에 의해 가상 머신에서 인터럽트가 발생할 때마다 하이퍼 바이저로 이전하거나, 가상 머신 내부에서 APIC로 액세스 종료하기 위해 가상 머신과 하이퍼 바이저간에 자주 전환 할 필요가 없기 때문에 전환 오버헤드가 작아진다.

 

 Intel에서는 FlexPriority를 ​​하이퍼 바이저를 지원하는 것으로 35% 정도의 성능 향상을 도모할 수 있다고 한다.

 

 

FlexPriority를​​ 이용하여 가상 환경이 35% 정도 성능 향상

 

 

FlexPriority는 가상 머신에서의 인터럽트를 하이퍼 바이저 소프트웨어 적으로 처리하는 것이 아니라 가상 머신에서 직접 APIC에 액세스 할 수 있도록 함으로써 가상 머신과 하이퍼 바이저의 모드 체인지 횟수를 줄여서, 성능 향상

 

 

가상 환경의 서버간 이전을 지원하는 FlexMigration

 

 Intel의 CPU는 세대에 의해 지원되는 명령이 약간 다르다. 기본적인 명령 부분은 Pentium III 세대에서 거의 변하지 않지만, SSE 라고 하는 부동 소수점 SIMD 처리 명령에 관해서는, 세대마다 버전 업이 이루어지고 있다.

 

 예를 들어, 가상 머신상의 응용 프로그램이 최신 SSE4를 사용하는 경우 (실제 CPU도 지원),  가상 머신을 다른 물리 서버로 이전시키는 Live Migration 기능 (VMware에서는 VMotion이라고 부름)을 이용하려면, 앞으로 이전할 물리 서버도 SSE4를 지원할 필요가 있었다. 따라서 앞으로 이전할 물리 서버가 SSE3 등 밖에 지원하지 않는 경우는, 이전한 가상 머신상에서 동작하고 있는 SSE4를 지원하는 응용 프로그램이 충돌하고 만다. 이렇게 새로운 CPU와 구형 CPU는 일부 다른 부분이 있기 때문에, 세대가 다른 서버를 조합한 서버 군에서는 문제가 발생했다.

 

 그래서 Intel은 CPU에 FlexMigration 이라는 기능을 준비해서, 구 물리 서버로 이전에서도 동작 할 수 있도록 한다 (AMD도 Extended Migration 이라는 기능을 제공한다).

 

 VMware의 ESX Server는 Intel의 FlexMigration와 AMD의 Extended Migration 두 가지를 지원하고 있기에, VMotion 에서의 CPU 호환성을 보장한다.

 

 VT-x, FlexPriority, FlexMigration 등의 기능은 2007년 11월에 출시된 Xeon 5400번 대 이후는 지원한다. VT-x의 새로운 기능인 EPT와 VPID는 차세대 Core i7 부터 지원된다 (Intel은 EPT와 VPID 등을 합쳐 제 2세대 VT-x 라고 부른다).

 

 

가상 서버에서 간에서 가상 머신을 이전시킬 경우, CPU나 플랫폼이 다르면 새로 CPU에 튜닝 된 응용 프로그램은 구 CPU 에서는 동작하지 않는다.

 

 

FlexMigration에서는 가상 서버 간의 차이를 흡수해서, 어떤 가상 서버에서도 응용 프로그램이 작동되도록 한다.

 

 

FlexMigration은 2006년에 출시 된 Xeon부터 지원된다. 이것은 이전의 CPU는 대응하지 않는다. 현재의 Penryn 세대, 차세대 Nehalem (Core i7) 이후도 지원한다. 미래에 이어서, 가상 머신의 이전이 보증된다.

 

 

가상화를 I / O 까지 확대한 VT-d

 

 

VT-d는 칩셋에서 지원되는 가상화 지원 기능

 

 

VT-d에 의해, 가상 머신이 I / O를 이용하는 때에 사용하는 DMA를 하드웨어로 매핑한다. 이것에 의해 I / O 가상화를 한다.

 

Intel은 CPU의 가상화 VT-x, FlexPriority, FlexMigration 등으로 진행하고 있지만, 주변 인터페이스 가상화는 X35 시리즈 칩셋부터 탑재된 VT-d (Virtualization Technology for Directed I / O) 에 의해 지원된다.

 

 VT-d는 I / O가 사용하는 DMA 주소를 물리 서버와 가상 머신 사이에서 매핑하는 기능을 하드웨어화 한다. 이것에 의해 가상 머신에서 직접 I / O에 액세스 할 수 있다.

 

 지금까지의 하이퍼 바이저에서는 가상 머신에 가상 드라이버를 놓고, 하이퍼 바이저나 부모 OS에 있는 특수한 드라이버가 복수의 액세스를 조정해서, 물리 서버의 I / O 드라이버에 액세스 한다. 이것에 의해 I / O 하드웨어를 가상화 한다.

 

 I / O 가상화 하는 것으로, 복수의 가상 머신에서 1개의 I / O를 공유하는 것이 가능하지만, 그만큼 성능은 저하된다. 그래서 가상 머신에서 직접 I / O에 액세스 할 수 있도록 한 것이 VT-d이다.

 

 VT-d를 사용하면 가상 머신에서 직접 I / O에 액세스 가능하기에, 물리 서버에 연결된 I / O와 같은 성능을 실현한다. 드라이버는 가상 드라이버가 아닌, VT-d를 지원하는 드라이버 (물리 머신에 인스톨 하는 때에 사용하는 드라이버에 VT-d 기능을 플러스)를 이용하게 된다.

 

 그러나 가상 머신에서 직접 I / O에 액세스하기 때문에, 그 가상 머신이 I / O를 점유해 버리게 된다. 따라서 복수의 가상 머신에서 1개의 I / O를 공유 할 수 없다 (현재 VT-d가 지원하는 것은 PCI Express 카드 뿐). 예를 들어, 네트워크 카드를 VT-d로 사용한다면, 가상 머신 만큼의 네트워크 카드가 필요하다. 복수의 PCI Express 카드가 탑재 되도록, 많은 슬롯을 가진다해도 한계가 있다.

 

 따라서 다수의 가상 머신을 움직이는 경우는, 성능을 필요로 하는 가상 머신에만 VT-d를 사용해서, 그 외의 가상 머신은 지금까지와 마찬가지로 I / O를 가상화해서 사용하게 된다 (다음 버전의 VMware의 ESX Server에서 VT-d가 지원될 예정. Xen은 이미 지원).

 

 

VT-d는 DMA 및 I / O 주소의 리 맵핑을 하드웨어로 지원한다.

 

 

 

VT-d의 동작도

 

 

VT-d를 이용해서 가상 머신에서 다이렉트로 네트워크 카드에 액세스 하도록 하는 경우, 물리 서버에서 사용한 것과 거의 같은 성능을 실현한다.

 

 미래에는 PCI Express 카드 자체의 가상화가 필요하다. 현재 PCI-SIG에서 PCI Express 카드의 가상화 "IOV"가 규격화 되었다. IOV에 대응하는 I/O 카드가 출시되면, VT-d를 이용해서 액세스 해도 I/O 가상화 되었기 때문에, 하나의 가상 머신이 I/O를 점유하지 않아, 성능도 업 된다. (하나의 물리적 시스템에서 사용하는 것과 비교하면 오버헤드가 있지만, 한없이 작아지는 것이다).

 

 이때가 되면, 가상화에서 큰 문제인 디스플레이도 본격적으로 가상화 할 수 있을 것이다. 현재와 ​​같이 표준적인 VESA 디스플레이가 아닌, 그래픽 카드의 기능을 살린 채 가상화 할 수 있다. 또한 디스크 I / O가 원천적으로 가상화되는 것으로, 디스크 액세스도 성능 향상 할 것이다. 그렇게 되면 가상화의 성능이 대폭 향상되서, 데스크톱 PC로도 이용할 수 있게 될 것이다.

 

 

PCI-SIG가 규정한 IOV를 PCI Express 카드가 지원하는 것으로, VT-d와 조합해서, 가상 머신에서 직접 PCI Express 카드에 액세스하는 것이 가능하다.

 

 

IOV에 의해, 복수의 가상 머신에서의 액세스를 PCI Express 카드에서 가상화 하는 것이 가능하다.

 

 

네트워크 카드의 성능을 올리는 VT-c

 

 VT-c (Virtualization Technology for Connectivity)는 특히 네트워크 인터페이스의 가상화로  성능을 올린다. VT-c는 네트워크 카드를 대상으로 한 기능이다 (네트워크 카드에 탑재된다).

 

 

VT-c를 지원하는 네트워크 카드는 복수의 가상 머신에서의 트래픽을 정리한다. 그것에 의해  TCP / IP 패킷을 낭비없이 송수신하는 것이 가능하다.

 

 

왼쪽은 소프트웨어로 I/O를 에뮬레이션하는 현재의 가상화. 오른쪽은 VT-d를 사용하여 가상 머신에 I / O를 다이렉트로 매핑하여 I/O의 물리적인 성능을 가상 머신에서 이용하는 것이 가능하다.

 

 

 

 

 

VT-c를 구성하는 VMDq은, 이처럼 가상 머신에서 네트워크 액세스를 하이퍼 바이저와 네트워크 카드에서 TCP / IP 패킷을 효율적으로 정렬, 아이들을 만들지 않도록 한다.

 

VT-c는 I/O AT (Acceleration Technology)와 VMDq (Virtual Machine Device Queues)와 Single Root I / O Virtualization의 3가지 기능으로 구성되어 있다.

 

 I / O AT는 네트워크 카드 측에서 TCP / IP 프로토콜의 처리 (Offload)를 하는 것으로, OS 측의 처리를 단순화 해, CPU 부하를 낮출 수 있는 기능이다. 여기에 PCI-SIG에서 책정한 I/O  가상화 "IOV"의 Single Root I / O Virtualization 이라는 기능을 조바하는 것으로, 가상 환경에서 특히 네트워크 카드만을 I/O 레벨에서 가상화 수 있다.

 

 여기에 더해, 복수의 가상 머신에서의 네트워크 카드에 대한 액세스를 조정해서, 효율적으로 통신하도록 데이터 정렬을 하는 VMDq를 사용하는 것으로, 가상 머신에서의 네트워크 트래픽  성능을 올린다.

 

 

VMDq는 VMware의 NetQueue 기능과 짝이 되어 작동한다. 다른 하이퍼 바이저에서도 미래에는 VT-c가 지원 될 예정이다.

 

 

 

VMDq와 NetQueue의 조합에 의해, 가상 환경에서 네트워크의 성능은 3배 이상 오른다.

 

 

 

I/O AT의 기능. TCP/IP 프로토콜 처리를 네트워크 카드 측에서 하는 것으로, OS 측의 부하를 줄이고 성능을 올린다.

 

 

I / O AT를 지원하는 Intel 네트워크 칩

 

 

 

Core i7에서는 새로운 명령의 추가와 플랫폼의 성능 업에 의해, iSCSI 성능이 대폭 오른다.


 현재 VT-c에 대응하는 하이퍼 바이저로는 VMware의 ESX Server가 있다. VMware의 NetQueue와 VT-c의 조합에 의해, 네트워크의 성능이 크게 오르낟. Intel에서는 이미 VT-c를 지원하는 네트워크 카드를 출시했다. 이러한 네트워크 카드에서 iSCSI를 움직이는 것으로, 가상 머신에 부담을 주지 않고, 고속으로 액세스 할 수 있는 네트워크 드라이브가 실현된다.

 

 Intel에서는 CPU, 칩셋, I/O 카드 등 다양한 레벨에서 가상화를 지원하는 기능을 준비하고 있다. 모든 레벨에서 가상화 지원 기능이 갖춰진 것으로, 가상화 2.0 (Virtualizaion 2.0)이 완성된다고 IDF에서도 말했다. 이 가상화 2.0이 완성하는 것은, 차세대 Core i7 세대가 될 것이다. 네트워크 카드의 가상화 등은, 일부 선행되어 진행되고 있지만, PCI Express 카드 전체의 가상화에 관해서는 2009년 정도부터 본격적으로 대응하게 될 것이다.

 

 

Intel에서는 가상화 2.0 이라는 새로운 단계에 접어 들고 있다고 한다.

 

 

Intel 가상화 지원 기능이 들어간 가상화 2.0을 이용하는 것으로, 가상화 오버헤드를 줄이고 가상 머신을 가능한 한 물리 서버에 가까운 성능을 실현하고 싶다 한다.

 

 

 

가상화 2.0이 실현된 플랫폼에서는, 다양한 가상화 지원 기능에 의해, 가상 환경이 고속으로 동작하게 된다

 

다만 하드웨어가 모든 레벨에서 가상화를 지원해도, 하이퍼 바이저나 가상 머신의 전용 드라이버 등 소프트웨어의 대응이 필요하다.

 

 Xen은 이러한 선진적인 가상화 기능을 의욕적으로 도입해, 최신 버전에 많은 기능이 지원된다. VMware는 좀 더 보수적으로 2009년에 출시하는 다음 버전의 ESX Server에서 가상화 2.0에서 제공하는 대부분의 기능을 지원한다 (이미 일부 기능은 선행적으로 지원한다). 특히 Intel이나 AMD와 협조해서 하이퍼 바이저의 개발을 하고 있기 때문에, 안정된 형태로 최신의 가상화 지원 기능이 지원 될 것이다.

 

 Microsoft Hyper-V에 관해서는, 현재의 1.0에서는 하이퍼 바이저형 으로의 본격 이전을 당한한 정도로, 가상화 2.0에서 제공되는 많은 기능은 아직 지원되지 않는다 (Hyper-V는 제 1세대 VT-x 만). Hyper-V 1.0에서는 기본적인 하이퍼 바이저를 제공할 뿐이다. 따라서 가상화 2.0에 대응해 가기 위해서는 조속히 차세대 Hyper-V를 제공 할 필요가 있을 것이다.

 

 또한 Intel에서는 VT-x에 의해 하이퍼 바이저 자체에 취약성이 생길 가능성이 있다고 생각하고 있다. 따라서 하이퍼 바이저가 기동하기 전에 하이퍼 바이저의 변조 가능성을 체크하는 TXT (Trusted Execution Technology)라는 기능과 TPM 장치를 이용하는 것으로, 하이퍼 바이저의 정당성을 기동시에 체크하는 것이 가능하다.

 

 이 기능을 이용하면, 하이퍼 바이저가 해킹되어서 악성 코드가 잡입된 경우, 하이퍼 바이저 자체가 변조된 것을 알 수 있다.

 

 단지, 현재는 TXT 대응 소프트웨어는 출시되지 않아서, 많은 서버에는 아직 TPM 장치가 탑재되어 있지 않다. 따라서 TXT를 이용한 하이퍼 바이저의 정당성 체크에 관해서는, 2009년 이후에 환경이 갖춰질 것이다.

 

2008년 9월 5일 기사

 

[고전 2005.03.10] 모든 문제는 Longhorn으로 이어진다

 

 

[고전 2004.09.10] iAMT, Montecito등 신기술이 공개된 IDF

 

 

[분석정보] 가상 머신에서 직접 I / O 매핑이 가능한 VT-d. 미 Intel과 미 VMware가 데모

 

 

[분석정보] 가상화 시대의 네트워크? IDF 2009에서 해독

 

 

[고전 2005.03.03] Pat Gelsinger 부사장 기조 강연 리포트 새 로드맵과 코드 네임 다수 등장

 

 

[분석정보] 2016년 프로세서와 운영체제 동향