Ivshmem 实现与内核机制全解析
Ivshmem 是一个由 QEMU 模拟的虚拟 PCI 设备,通过 BAR2 将 host 侧共享内存映射到多个 Guest 实现零拷贝数据共享;同时通过 BAR0 的 doorbell 写触发 eventfd,QEMU 将 eventfd 事件转换为 INTx 或 MSI/MSI-X 并经由 KVM 注入到目标 Guest,从而完成事件通知,整体抽象为“共享内存做数据面 + eventfd 做控制面 + KVM 负责中断注入”。在 x86 单核、110MB 内存、32MB 共享内存、窗口 16 的测试环境中,相比 bridge+vhost 优化的 virtio-net 方案,1MB 以上传输场景下 ivshmem 延迟与数据量基本线性增长,整体性能约为 virtio 的 10~20 倍,小数据场景同样优势明显。
阅读更多