QEMU 성능 문제 - 개론

기술/가상화 2018. 5. 30. 23:54 Posted by 아는 개발자

Host OS의 유저 앱으로 구동되는 Guest OS는 Hypervisor가 만들어 준 가상 장치로 동작하고 있기 때문에 실제 물리 장치를 이용하는 Host OS에 비해서 성능이 확연히 낮다. Hypervisor가 만들어준 가상장치도 결국에는 실제 하드웨어에서 동작하게 되는 것이니 이론상으론 시스템 하드웨어 성능이 높아지면 가상 장치로 동작하는 Guest OS도 좋은 성능을 가질 수는 있다. 그러나 아무리 좋은 하드웨어를 사용해도 Host OS처럼 직접 접근해서 사용하는 것과는 확연하게 차이가 난다. 배틀그라운드의 권장사양을 훨씬 뛰어넘는 그래픽카드와 CPU를 장착해도 Guest OS로 실행되는 윈도우에서는 배틀그라운드는 커녕 스타크래프트도 온전하게 플레이하기 어렵다.


qemu를 이용해 스타크래프트를 하는 유튜브. 사진을 클릭하면 실제 영상을 볼 수 있다


성능 문제를 해결하기 위해선 가능한 Guest OS에서 장치를 실행하는 명령과 실제 하드웨어의 동작 사이의 오버헤드를 줄이는 것이 관건이다. 앞선 포스트에서도 이미 설명 했듯 인텔과 ARM과 같은 하드웨어 제조사들은 이점을 고려해 Guest OS가 일반 연산에 사용하는 장치(CPU, Memory, Interrupt)를 직접 또는 좀더 빨리 접근 할 수 있는 구조를 만들었고 KVM처럼 위 구조를 적절하게 활용한 소프트웨어를 사용한 Guest OS의 CPU와 메모리 성능이 Host OS에 못지 않다.


CPU와 메모리의 성능이 Host와 비슷하니 시스템 전반의 성능도 비슷하지 않을까 싶지만 실제로는 그렇지 않다. 일반 연산 장치를 제외한 장치는 여전히 가상 장치로 사용하기 때문에 여러 개의 장치를 동시에 사용하는 소프트웨어는 Host OS처럼 부드럽게 사용하기가 어렵다. 쉬운 예로 Guest OS에서 곰플레이어를 이용해 영화를 본다고 해보자. 영상 파일을 모니터에 출력하고 소리를 내기 위해선 CPU와 메모리 뿐만 아니라 GPU와 사운드카드도 필요하다. 그런데 GPU와 사운드카드는 여전히 가상 장치다. Guest OS의 CPU 속도가 높아도 정작 화면 출력을 담당하는 가상 GPU 장치를 사용하면 화면 출력이 느려지고 Guest OS의 메모리 처리 속도가 높아도 가상의 오디오를 사용하면 음악이 끊길 수 밖에 없다. 이런 상황에서 키보드, 마우스같은 인풋 장치를 빈번하게 사용하는 FPS 게임을 실행한다면 말할 것도 없다. 총알 한방 쏘는것도 쉽지 않을 것이다.


Passthrough, VFIO 는 위와 같은 문제를 다룬 대표적인 솔루션이다. 꽤 오랜 기간 연구했으며 논문도 풍성하다. 안타깝게도 새로 나오는 것은 없지만. 앞으로 포스트에서는 이것들이 무엇이며 어떻게 동작하는지 그리고 이것들을 사용할 경우 어떤 문제가 발생하는지에 대해서 차근차근 공부해보려고 한다. 



728x90

'기술 > 가상화' 카테고리의 다른 글

virtio  (0) 2018.07.08
VFIO, Passthrough  (0) 2018.06.30
QEMU 성능 문제 - 개론  (0) 2018.05.30
KVM - ARM  (0) 2018.01.01
QEMU와 KVM - 2  (0) 2017.11.11
QEMU와 KVM - 1  (0) 2017.11.01