kvm
-
Virtio Block 성능 벤치마크개발/가상화 2018. 12. 23. 14:08
QEMU와 KVM환경에서 띄운 Ubuntu VM의 스토리지 성능을 Virtio Block을 사용할 때와 아닐 때를 각각 나누어서 측정을 해보았고 최적화 옵션을 적용할 때 Host대비 얼마정도의 성능을 내는지도 실험 해봤다. 1. 실험 방법 벤치마크툴은 iozone을 사용했고 적용한 옵션은 다음과 같다. iozone -e -I -a -s 100M -r 4k -r 4096k -r 16384k -i 0 -i 1 -i 2 여기서 주목해야할 옵션 항목만 짚고 넘어가자.-r 은 record할 사이즈를 말하며 여러개의 인자를 전달하면 인자의 개수만큼 측정한다.-i 는 측정할 실험 항목을 의미한다. (0=write/rewrite, 1=read/re-read, 2=random-read/write)-s 는 읽고 쓸 데이터..
-
kvm ioeventfd개발/가상화 2018. 8. 11. 23:10
* 개인 공부용으로 정리한 것이라 부정확한 내용이 있을 수 있으니 참고용으로만 사용하길 바랍니다. IOEVENTFD eventfd를 응용해서 guest에 interrupt를 보낼 수 있는 기능을 만든 irqfd것과 비슷하게 ioeventfd도 eventfd를 이용해서 guest에게 mmio 기능을 전달 할 수 있는 매커니즘을 만들었다. 초기화 작업도 irqfd와 거의 비슷하다. 1. QEMU에서 kvm으로 mmio 값 전달. QEMU에서 장치가 사용할 주소 값과 flag, eventfd 값을 세팅하고 kvm에 ioctl 을 날린다. 이때 전달인자 fd는 MemoryRegionIoeventfd 라는 구조체의 EventNotifier 값을 뽑아낸 것이다. 구조체 이름이 매우 와닿지 않는다. // qemu/a..
-
kvm irqfd개발/가상화 2018. 8. 11. 14:02
* 개인 공부용도로 정리한 것이라 부정확한 정보가 있을 수도 있으니 참고용으로만 사용하세요. IRQFD irqfd는 QEMU에서 정의한 eventfd와 GSI(Global System Interrupt) 값을 이용해서 Guest에 바로 interrupt를 바로 쏘아 줄 때(irqfd_inject) 사용하는 kvm interrupt 라이브러리다. 간단한 event를 만들 때 사용하는 eventfd 메커니즘을 응용한 대표적인 예다. 좀더 디테일한 동작 내용을 이해하기 위해 초기화 코드를 순서대로 분석해보자. 1. QEMU 장치 정보 세팅 후 kvm으로 ioctl 전달 QEMU에서는 장치가 사용하려는 GSI(Global system interrupt)와 상태에 대한 정보를 저장하는 flag 값 그리고 qemu..
-
QEMU와 KVM - 2개발/가상화 2017. 11. 11. 11:03
KVM(Kernel-based Virtual Machine) 그림1. KVM 공식 로고다. 펭귄이 던지고 있는 공은 VM을 의미하는 것 같다. "KVM은 리눅스 커널을 하이퍼바이저로 변환하기 위한 가상화 인프라스트럭처의 하나이다"라고 위키 백과에선 설명하는데 이것만 가지곤 KVM의 제공하는 기능을 이해하긴 힘들다. KVM을 공부하기 전에 같이 사용되는 하이퍼바이저, QEMU에 대해 먼저 공부해보면 KVM의 사용 목적에 대해서 더 쉽게 이해할 수 있다. QEMU 포스트 읽어보기 Intel과 ARM같은 하드웨어 개발 회사들은 컴퓨터 내에서 가상화 기술을 지원하기 위한 장치들(Intel VT 또는 AMD-V )을 넣어뒀다. 이런 장치들은 가상화 기술의 고질적인 성능 저하 문제를 해결 하기 위해 만들어졌는데 이..