知识卡片

半虚拟化I/O为什么更快

专业/工作 · 1166

内容

全虚拟化I/O(如QEMU模拟网卡/磁盘)让虚拟机以为自己在操作真实硬件,代价是频繁读写模拟的 设备寄存器,每次访问都触发一次昂贵的虚拟机退出(VM Exit),通信效率很低。半虚拟化I/O (virtio)换了一种设计思路:不再假装硬件存在,而是让Guest操作系统主动感知自己在虚拟机里, 通过环形缓冲区和事件通知(按需通知,而非每次访问都陷入陷出)与宿主机协作传输数据。代价是 需要修改Guest操作系统源码来配合这套主动通知协议。这体现了一个通用取舍:模拟真实接口换取 兼容性,还是暴露虚拟化本质换取性能,是虚拟化设备设计的核心分歧点。

参考来源

《混合云架构》第2章《阿里云基础技术》2.1 IaaS