요즘 마이크로 프로세서에서는 “가상화(virtualization)”라는 기술이 각광받고 있습니다.
Intel도 AMD도 서로 앞을 다투어 “가상화” 가속 명령어라는 것을 대대적으로 홍보하고 있지요.
그럼.. 가상화 기술이 대관절 무엇이관대 이렇게도 세상을 시끄럽게 하는지 알아보도록 하겠습니다.
우선, 생각해볼 문제가 가상화란 것이 무엇인가 하는 점입니다.
가상화란 “A”라는 머신에 “B”라는 virtual machine을 구동시키는 것을 의미합니다. 근데, embedded 분야에 종사하시는 분은 상당히 익숙하실만한 Intel CPU상에서 ARM이나 MIPS cpu simulator가 구동되는것도 엄연히 virtual machine이 구동되는 것입니다. (사실 마음 같아서는 제가 만든 EISC processor simulator인 ESCAsim도 끼워 넣고 싶지만.. ^^; 사용해 보셨을 분이 극히 제한적이라.. 그래도 나름대로 uCLinux까지도 구동 가능한 simulator랍니다.). 또한, 일반적인 사용자분들께서도 JVM(Java Virtual Machine)에 익숙하실 것입니다. 즉, 가상화란 “특별한 기술”이 아니라는 거죠. 다른 프로세서의 “동작”을 모사하는 것은 범용 마이크로 프로세서에게 있어서는 큰 문제가 아니라는 것이죠.
제가 가상화 가속 기술들이 속속 소개 될때 가장 궁금했던 내용이 “왜 가상화 가속이 필요한가” 였습니다. 일반적으로 모든 프로세서에서 큰 어려움 없이 되는 것에 대한 가속이라.. 근데, 문제는 다른 것이더군요. 그리고, 이 문제가 multithread/multicore processor를 이끄는 힘 중에 하나가 됩니다. 흥미 진진하죠?
시간은 거슬러 소프트웨어 업계의 가장 변태적인(저는 가끔 천재적인 = 변태적인으로 인식하게 되더군요..) 소프트웨중의 하나인 “VMWare”가 나타납니다. VMWare는 Virtual machine인데, 해당 프로세서뿐 아니라 해당 시스템에 있는 모든 시스템을 가상화시킨 하나의 독립적인 “시스템”으로서의 가치가 있습니다.
이 각각의 독립적인 가상 시스템에서 서버를 운용한다면 어떻게 될까요?
하나의 머신에서 A,B,C라는 세 개의 서버가 운용되고, A라는 머신에 문제가 발생해도 B, C라는 머신은 문제 없이 수행되겠지요? 즉, 안정성의 문제가 향상되고.. OS 하나가 만들어 낼 수 있는 thread보다 OS 세 개가 만들어내는 thread가 당연히 많고 parallelism도 높겠지요. 즉, multiprocessing/multithreading에 유리한 환경이 됩니다.
이 부분이 가상화 기술이 multicore/multithreading의 기치를 높이 들고 있는 현재의 microprocessor에게 있어서 병렬성의 문제를 확보할 수 있는 아주 좋은 수단으로 여겨지게 되는 것입니다.
그런데, 문제는 각 가상 시스템이 host OS의 application이라는 점입니다. 즉, host OS에 문제가 발생하면 전체 가상 시스템에 문제가 발생한다는 문제점이 있는거죠. 이 문제는 아주 치명적입니다. 여러 개의 가상 시스템이 한번에 모두 죽어버릴 수 있는 여지가 있는 것이니까요.
이 문제를 해결하고자 하는 방법이 기존의 user/supervisor 모델에 hypervisor라는 권한(혹은 권한 수준)을 추가하는 것입니다. 즉, 예전에는 O/S가 모든 하드웨어나 서비스에 접근했는데, 이중에 민감한 부분은 hypervisor(혹은 virtual machine manager)라는 firmware가 서비스를 담당하고, 그 위에서 각 OS(실은 VM이겠죠?)들이 도는 구조로 바뀌는 거죠.
예전에 application이 OS에 종속되고, OS가 다시 hyperviosr에 종속되면서 점점 하드웨어에 직접 접근해서 시스템 전체를 불안하게 만드는 것이 허용되지 않게 되는 것입니다.
가상화 “가속” 기술이란 말하자면, 이런 hypervisor를 추가하여 운용할 수 있도록 하는 명령을 추가하는 것으로 보시면 되겠습니다. Microprocessor report상에서는 각 프로세서간의 차이점등 아주 재미있는 내용이 많으니, 관심있으신 분은 꼭 보세요 🙂 (이 부분도 포스팅 하고 싶습니다만, 좀 내용이 너무 전문적일지도 모른다는 생각에.. 혹시라도 요청이 있다면 고려하겠습니다)
VMWare.. x86 hw virtualization 지원이 되면서 과연 어떻게 변화를 꾀할지. 궁금하네요 🙂
MPR을 읽고는 싶은데.. 라이센스가 없어요 ㅠㅠ 무지 비싼걸로 알고있는데.. 회사에서 구독하시나봐요?
기사중에 VMWare의 실험 결과가 나왔있는데, 나중에 정리해서 올리지요.. 생각보다 재미있는 결과가 나왔더군요. 🙂
회사에서는 on-line 버젼을 구매해서 구독하고 있는 상태입니다.
MPR 은 학생할인 같은것은 없나요? ;; 읽어보고 싶은데 학생이 1년에 900불을 내는건 …… OTL
아마도 교수님께 여쭈어보시면 방법이 있을듯 한데요..
그것 이외에 일년에 몇번씩 절반 정도의 가격에 구독할 수 있는 프로모션이 있습니다. 학생 시절에는 그 메일을 자주 받았던 기억이 있습니다.
교수님들께서도 프로모션 메일이 가는 것으로 알고 있습니다.
지금 해외라 지금은 불가능하네요 ㅡㅡ; 한국들어가서 복학을 하면 한번 architecture 전문 교수님을 찾아뵈어야 할것 같네요 ^^* 감사합니다.
Vmware 에서 하드웨어로 가상화 가속같은것을 구현해주는 제품도 위에서 설명하신 hypervisor 위에서 돌아가는 방식이 되는것일까요?
VMWare의 경우 host OS 상에 virtual machine을 구현하는 대표적인 방법입니다. 이 경우 host OS의 안정성에 따라 virtual machine의 안정성도 떨어질 수 있다는 단점을 지니게 되지요.
이런 문제를 극복하기 위하여 일종의 light-weight OS인 hypervisor가 도입된 것으로 보시면 되겠습니다. 이쪽 계통에서는 코드의 양과 신뢰성은 반비례한다고 하는데요.. hypervisor의 경우 OS간의 switching이나 핵심적인 자원 접근에만 관여하므로 그 크기가 매우 작아지고, 여기서 신뢰성을 확보한다는 아이디어가 가장 크겠습니다.