Pixiv - KiraraShss
P4-揭秘FusionCompute的核心技术——Xen与KVM
946 字
5 分钟
P4-揭秘FusionCompute的核心技术——Xen与KVM
前言
Xen和KVM都是开源的虚拟化软件,同时它们也是FusionCompute所采用的底层架构。为了方便我们后续对FusionCompute的学习,有必要对Xen和KVM进行初步理解。
Xen vs KVM
Xen
Xen的虚拟化架构如下:

KVM
KVM,全称Kernel-based Virtual Machine,意为“基于内核的虚拟机”。KVM的虚拟化架构如下:

KVM体系架构
下图是一个基本的KVM体系架构:

KVM的IO操作流程
全虚拟化(默认)

- 1-2:KVM主动捕获GuestOS的IO请求;
- 3:KVM模块将GuestOS的IO请求发送到IO共享页,并通知QEMU到IO共享页读取;
- 4:QEMU收到通知,并从IO共享页读取GuestOS的IO请求;
- 5-6:QEMU通过设备驱动,将IO请求交由硬件进行模拟执行;
- 7:执行完毕后,QEMU将IO执行结果返回到到IO共享页,并通知KVM模块到IO共享页进行读取;
- 8:KVM模块收到通知,并从IO共享页读取GuestOS的IO操作结果;
- 9-10:KVM模块将IO操作结果返回给GuestOS。
缺点:采用同步机制,GuestOS需要主动等待KVM模块将IO共享页中的IO操作结果返回以后,才能继续发送下一条IO操作(即阻塞),性能差。
半虚拟化(使用virtio驱动)

- 1-2:GuestOS主动将IO请求通过virtio前端驱动发送到virtio-ring(virtio的IO共享环),并通知QEMU到virtio-ring进行捕获;
- 3:QEMU收到通知,并通过virtio后端驱动从virtio-ring读取GuestOS的IO请求;
- 4-5:QEMU通过设备驱动,将IO请求交由硬件进行模拟执行;
- 6:执行完毕后,QEMU将IO执行结果返回到virtio-ring,并通知KVM模块到virtio-ring进行读取;
- 7:KVM模块收到通知,并从virtio-ring读取GuestOS的IO操作结果;
- 8:KVM模块将IO操作结果返回给GuestOS。
特点:采用异步机制,GuestOS将IO请求批量发送到virtio-ring而无需等待,供QEMU的virtio后端驱动批量读取执行,而GuestOS无需等待执行可以批量从virtio-ring中读取IO操作结果(非阻塞),大幅提升了性能。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
P4-揭秘FusionCompute的核心技术——Xen与KVM
https://blog.tokiame.cn/posts/华为云计算/p4-揭秘fusioncompute的核心技术xen与kvm/ 最后更新于 2020-08-12,距今已过 2041 天
部分内容可能已过时