CPU의 '가상화 기술' 유무 차이가 어느정도나 될까요?

zz181321의 이미지

서버용 cpu인 옵테론이나 제온을 보면, 가상화 기술 기능이 들어가 있는데요.

램을 4기가로 가정하고, 쿼드 코어에 클럭은 2기가헬츠 정도로 가정했을 때,
가상화 기능이 있는 cpu를 사용하는 경우하고, 동급의 가상화 기능이 없는 cpu를 사용하는 경우하고, 체감 성능이 얼마나 차이 날까요?

게스트 OS에서 여러 응용 프로그램을 써본다고 가정했을때 말이죠.

mycluster의 이미지

"가상화 기능이 있는 cpu를 사용하는 경우하고, 동급의 가상화 기능이 없는 cpu를 사용하는 경우하고, 체감 성능이 얼마나 차이 날까요?"

일단 가정이 틀린 것이, Quad Core는 가상화 기능이 없는 CPU가 없는 것으로 알고 있고요...
가상화 기능이 없는 CPU를 사용할 경우 가상화는 Host OS 기반으로 밖에 동작하지 않겠죠?

제가 설치한 테스트서버를 기준으로 설명해드리면, Guest OS가 아무일도 하지 않을 경우에
OS 및 가상화서버가 전체 CPU의 약 10%와 메모리의 20% 정도를 차지하고 있습니다. 실제
Guest OS가 사용할 수 있는 자원은 전체의 80% 정도라고 보면 되겠지요.

반면에, 가상화기능(AMD-V, Intel VT)을 지원하는 CPU의 경우, Virtualization Solution이
CPU와 메모리를 Host OS의 경우보다는 현저히 적게 소모할 뿐 아니라, IO에 대한 자원도 적게
먹으므로 체감성능이 꽤~ 차이가 난다고 보시면 맞습니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

김정균의 이미지

Xen 이나 KVM 은 제가 알기로 커널 기반이라서 CPU 에서 Virtualization 을 지원하지 않아도 상관 없는 것으로 알고 있습니다만.. 다만 full virtualization 을 할 때 CPU 의 명령어를 사용하는 것 같더군요. para virtualization 을 할 경우에는 CPU 명령을 사용하지 않는 것으로 알고 있습니다. 제가 잘못알고 있는 것인지도 모릅니다. (제가 워낙 대충만 보고 듣는 관계로 ^^)

VMWare 나 다른 가상화의 경우에는 경우가 다를 수 있겠고요. mycluster 님이 언급하신 것은 VMWare 나 VirtualBox 같은 것이 아닐까 싶군요.

익명입니다의 이미지

KVM의 경우 제 기억으로 CPU level cirtualization을 지원하는 경우만 동작 하는 것으로 기억합니다. 자세한 것은 http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine ...

mycluster의 이미지

일단 기존에 인터넷에서 돌아다니는 자료를 기반으로 가상화의 종류부터 구분하고 이야기하는게
좋을 듯 합니다. 제가 x86 기반의 가상화 솔루션에 대해서 조사를 한바에 의하면 다음과 같이
크게 구분하는 것이 심플할 듯 합니다. (레퍼런스는 IBM에 있었는데... 아마 여기 전에 가상화
스터디 한다는 분이 올린 자료의 링크에도 있을 겁니다.)

1. Hardware Emulation - MAME가 대표적이죠... 일단 Bochs 나 QEMU가 여기에 해당된답니다.

2. Full Virtualization - Hardware위에 바로 Hypervisor가 올라가고 그 위에 GuestOS가
올라갑니다. VMware의 ESX Server가 여기에 해당된다고 합니다. 이건 GuestOS의 수정을 거치지
않고 바로 하드웨어와 바로 연결됩니다.

3. Para Virtualizaiton - Hardware위에 Hypervisor가 올라가고, GuestOS에 하드웨어를
인식할 수 있는 코드를 심는다고 합니다. XenExpress (Host기반의 Xen이 아니라)나 VirtualIron이
여기에 해당되고, GuestOS의 수정이 필요하다고 하나, 이를 AMD-V 혹은 Intel-VT 가 처리한다고
합니다.

4. OS Level Virtualization - 하드웨어위에 kernel이 수정된 OS가 올라가고 그 위에 Private
Server가 탑재되는 것으로 대표적인 것이 Virtuzzo가 해당됩니다.

5. HostOS 기반 Virtualizaiton - 하드웨어위에 기본 OS가 탑재되고, 그 위에 가상화 서버 솔루션이
올라가고, 그 위에서 GuestOS가 동작합니다. 대표적인 것으로 VMware Workstation, VMware Server,
VirtualBox, Microsoft의 VirtualPC 등이 해당됩니다. 물론 Linux위에서 돌아가는 Xen Open 버전,
레드햇 5.1안에 탑재된 Xen 등도 여기에 해당됩니다.

일단 VMware ESX Server와 XenExpress, Xen Enterprise 등 Xen 상용버전과 VirtualIron은
CPU의 가상화 지원이 없을 경우 설치가 되지 않습니다.

제가 앞에서 말씀드린 HostOS 기반의 가상화라고 부르는 것으로 테스트한 것은 VMware Server 1.0.4고
이것은 호스트 OS기반의 가상화입니다. 그리고, VirtualIron은 3번에 해당되는 것이고요..

저도 궁금한것은 ParaVirtualizaiton과 XenExpress 등의 동작원리입니다. paravirtualization의
경우 GuestOS에 CPU에 맞도록 수정이 들어가야하는데, 이것과 Intel-VT 및 AMD-V 등 가상화 코드의
관계가 정확하게 어떻게 동작하는지는 좀 궁금하기는 합니다. GuestOS에 뭔가 다른 서비스가 올라가는
건지 좀 체크를 해봐야할 듯 하네요. (무심히 넘어갔지만...)

어쨌던 현재까지 제가 알고있는 바는 이정도고, 저도 오로지 영업(?)을 위해서 간단히 줏어들은 내용
이므로 detail한 상세 기술적인 동작구조는 다른 분이 좀더 보충해주면 감사하겠슴다.

참고로, 제가 테스트 중인 4CPU, CentOS 기반의 VMware Server 1.0.4의 웹환경을 첨부합니다.
메모리 4기가 중에서 시스템(OS)이 약 600메가를 먹고 있고, CPU의 10%를 호스트가 점유중입니다.
GuestOS는 아무것도 안하고 있음에도... VirtualIron은 현재 설치중이라, 완료되면 한번 올려드리죠

그리고, Xen+KVM 이 1~5 번 중에 어디에 해당되는지는 저도 잘 모르겠습니다...

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

댓글 첨부 파일: 
첨부파일 크기
Image icon VMwareServer.PNG65.35 KB

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

익명입니다의 이미지

xen/vmware 관련 자료를 읽어 본 기억으로는 paravirtualization의 경우 cpu의 virtualization 지원과는 별다른 관련이 없습니다.

paravirtualization은 아래단에 있는 hypervisor가 guest들에게 virtualization을 관리하는 "hyper call"을 제공 해 줍니다. hypercall은 linux의 system call에 대응되는되는 것으로, 예전에 ibm이 os를 supervisor로 부르고, os를 관리하는 소프트웨어를 그 아래단에서 hypervisor라고 부른 것에서 유래했다고 하더군요.

para-virtualization은 guest들이 시스템 하드웨어를 억세스하는 몇몇의 경우 직접 억세스하는게 아니라 이런 hypercall을 사용하게 수정이 있어야 한다고 합니다.

para-virtualization 관련 자료는 xen 쪽에 좋더군요. 이 쪽 paper를 몇 개 읽어 보시는 것을 추천합니다. CPU의 virtualization 지원은 제가 이해하는 바로는 조금 다른 얘기입니다. 예전 CPU의 경우 몇몇 CPU instruction이 그 instruction이 실행되는 context에 따라서 다르게 동작했다더군요. 이 경우 vmware에서는 해당 instruction을 다른 명령으로 dynamic하게 대체한다고 합니다. virtualization 지원 CPU에서는 이런 점을 수정했다고 하더군요. 이 쪽 자료는 vmware 쪽 자료를 추천합니다.

kyano의 이미지

실제로 가상화기능이 성능 차이가 꽤 큰가요?
Xen(+커널모듈)이 대부분의 경우 Xen(+KVM)보다 빠른 것으로 알고 있는데요...

제가 써 본 경험으로도 Xen(+KVM)보단 그냥 Vmware Workstation(Workstation버전은 CPU기반 가상화를 지원하지 않는 것으로 알고 있습니다.)가 훨씬 빨랐습니다...

------------------------------------------------
Have you ever heard about Debian GNU/Linux?

--
Have you ever heard about Debian GNU/Linux?

mycluster의 이미지

궁금한것이 빨랐다는 것이, 마우스나 화면 작업이 빨랐다는 것인가요? 아니면
실제로 CPU 작업을 완료하는데 걸린 시간이 빨랐다는 것인가요?

제가 느끼기에 VMware Workstation 최신버전에 들어있는 VMware Tools의 기능
덕분이 굉장히 VM 에서도 무리 없이 동작한다는 느낌을 받았거던요. Xen의 경우
콘솔을 네트웍으로 땡겨서 작업할 수 밖에 없어서, 인터페이스는 엄청 느렸거던요.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

익명 사용자의 이미지

가상화에 대해서 이전부터 궁금증을 가지고 있었는데
입문자 입장에서 읽어볼만한 자료좀 알 수 있을까요??
검색을 해보았는데 가상화 개념이 접근에 따라 하드웨어/소프트웨어 개념이 좀 틀린것 같기도해서요.

혹시 추천해주실만한 자료 있으시면 이 스레드를 통해 여쭈어봅니다.~ ^^;

mycluster의 이미지

http://en.wikipedia.org/wiki/Comparison_of_virtual_machines

한번 보시면 비교할 수 있고요, 인터넷에 보면 이런것도 돌아다니네요....
대충 다른 자료나 별로 차이가 없으니 한번 보세요.

http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzIwMTA2QGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvNzkucGRm&filename=%BD%C3%BD%BA%C5%DB%20%B0%A1%BB%F3%C8%AD%28VM%29%20%B8%AE%BC%AD%C4%A1.pdf

시장전망이나 이런거 필요하시면 댓글남겨주시면 보내드리죠.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

익명 사용자의 이미지

두번째 링크 누르니깐 "시스템" 이라는 파일이 다운로드 되네요...
원래 파일이름이 뭐죠? pdf파일인가요?

평양선봉~의 이미지

리눅스 가상화에 대한 개념을 쉽게(?) 설명했습니다.
http://www.ibm.com/developerworks/kr/library/l-linuxvirt/index.html

zz181321의 이미지

정말 도움이 되는 문서군요.

감사합니다.

zz181321의 이미지

정말 도움이 되는 문서군요.

감사합니다.

죠커의 이미지

원 글의 주제와는 다르겠지만 가상화와 반가상화에 대한 논의가 쓰레드에 이어지고 있고 제가 아는 부분들이 있어 짧게 적어봅니다.

게스트 운영체제를 수정해야 하는 경우를 반가상화, 수정이 필요없는 경우를 가상화라고 부릅니다. 수정하는 일은 귀찮음을 동반해야 하니깐 그만큼 이점이 있어야겠죠. 반가상화가 "빨랐었습니다".

왜 과거형으로 표현하느냐. 이제 CPU에서 가상화를 위한 Intel VT나 AMD V 기술을 제공합니다. Core 2 Quad에도 Intel VT를 탑재한 걸로 알고 있습니다. 하드웨어에서 "가상화"를 지원함에 따라서 가상화의 속도가 빨라졌습니다. 벤치마크에 따라 다르지만 CPU의 도움을 받는 가상화와, 반가상화의 성능이 앞서거니 뒷서거니 합니다. 거기서 거기죠.

성능상의 이점이 없기 때문에 앞으로는 "가상화"가 반가상화에 비해 지지를 받을 것입니다. 실제로 많은 반가상화 연구자들이 의욕을 잃었습니다.

farmer의 이미지

혹시라도 MS의 Hyper-V 를 사용하신다면 CPU는 무조건 가상화가 지원 되어야 합니다.
클라이언트 운영체제인 Windows 7 조차도 XP호환모드를 사용하려면 필요 합니다.
새로 도입 하실거라면 성능 문제를 따지기 전에 선결조건이라 생각이 됩니다만....