ZVM技术解读·外设篇②|SR-IOV复用
01 什么是SR-IOV复用
SR-IOV(Single Root I/O Virtualization)是PCIe规范定义的一项I/O虚拟化机制:一张物理网卡(即物理功能PF,Physical Function)可以派生出多张精简的虚拟网卡(即虚拟功能VF,Virtual Function)。这些VF可以被分给客户OS使用,使客户OS像独占一张物理网卡一样收发数据。与VirtIO等软件模拟方案相比,SR-IOV的数据面由物理设备直接处理,显著降低虚拟化软件开销。
ZVM的SR-IOV复用技术的核心目的是把VF低开销地给客户OS使用。ZVM的SR-IOV复用技术以SR-IOV服务和其他ZVM服务为基础,包括使能PF和VF、DMA隔离、PCI直通、VF中断转发。
02 主流虚拟化方案SR-IOV复用方式对比
主流虚拟化方案通常依赖独立管理域承载SR-IOV服务。KVM依赖Linux驱动管理完成PF/VF管理后通过VFIO/QEMU实现VF直通;Xen依赖Dom0中的Linux驱动进行设备管理,并通过PCI Passthrough将PCI设备分配给DomU;Jailhouse则将物理网卡直通给客户OS,SR-IOV管理全部由Root Cell中的Linux驱动负责。现有方案的PF/VF管理均依托Host、Dom0或Root Cell中的OS驱动体系,或将PF管理权交由客户OS。
ZVM则将SR-IOV等设备服务下沉至Hypervisor,通过PCIe直通把各VF分给客户OS,无需独立管理域协调。
表1:主流虚拟化方案SR-IOV复用方式对比
| 虚拟化方案 | 实现方式 | VF管理方式 | 主要耦合特点 |
|---|---|---|---|
| Xen | Hypervisor + Dom0 | Dom0驱动管理设备,PCI 直通分配给DomU | 设备服务依赖Dom0管理域 |
| KVM | Linux内核KVM + 用户态组件 | QEMU+Host管理,VFIO直通VF给Guest | 内核态—用户态—Guest服务链 |
| Jailhouse | Hypervisor + Linux Root Cell | Root Cell使能VF并静态直通给客户Cell | 配置依赖Root Cell |
| ZVM | RTOS底座 + 内置模块化服务 | 内置模块使能VF并直通给Guest | 底座内部受控协作 |
03 ZVM:模块化内置SR-IOV服务模块
ZVM的SR-IOV复用架构如图1所示。ZVM在虚拟化核心与已有服务(中断转发、DMA隔离等)的基础上扩展PCI直通框架。PCI直通框架给客户OS分配vPCI设备并映射到指定的VF上。ZVM把管理、使能与直通分配全部收敛于底座内部,减少跨执行环境协同与中间软件层。
图1. ZVM SR-IOV管理服务实现架构
04 示例一 SR-IOV管理路径差异对比
以使能PF、VF并将VF提供给Guest的管理路径为例,各架构的路径如图2所示。KVM由用户态QEMU/libvirt配合内核VFIO,将Host侧已创建的VF绑定并通过QEMU直通挂载到Guest;Jailhouse以静态资源分区为主,由Linux Root Cell中的设备驱动完成VF使能,再通过Cell配置将VF静态分配给non-root Cell。ZVM则将PF/VF使能与直通分配集成于底座内部,避免跨独立管理执行环境的协同。
图2. 不同架构中SR-IOV管理路径对比
05 示例二 VF中断路径差异对比
以网卡VF向客户OS产生MSI-X中断为例,各架构的中断路径如图3所示。本对比主要反映GICv3等(无GICv4或x86 Posted Interrupt硬件直投场景下)平台的路径差异。KVM的直通中断须先经宿主vfio-pci接收,再由KVM做虚拟中断注入,路径跨宿主中断框架与eventfd事件交接;Xen由Hypervisor接管直通设备中断并建立物理中断到DomU虚拟中断的映射,直接注入DomU vCPU;Jailhouse由Hypervisor对直通设备的中断做静态映射并注入目标Cell;ZVM采用与Xen类似的Hypervisor层中断映射与注入方式,将VF中断对应的虚拟中断注入目标Guest vCPU。
图3. 不同架构中VF中断路径对比
06 SR-IOV复用带来的收益
ZVM通过模块化内置SR-IOV服务的方式组织PF/VF管理与直通,其收益主要体现在以下两方面:
- (1) 模块化内置的灵活控制能力。ZVM支持SR-IOV设备硬件资源的细粒度复用,支持按需分配多VF给多Guest同时使用。ZVM将PF/VF管理、PCI直通配置集成为底座内的SR-IOV服务模块,可随产品需求独立配置、扩展和裁剪。
- (2) 接近裸机的性能。ZVM SR-IOV复用技术采用PCI直通框架,支撑Guest通过VF驱动直接访问物理VF资源,数据面经SMMU而无需软件模拟和跨域转发实现接近裸机的网络I/O性能。
07 小结
ZVM的"SR-IOV复用"依托ZVM已有虚拟化核心和服务,将PF/VF管理、PCI直通框架以模块化服务形式内置,相比依赖Dom0、Host Linux或Root Cell承载管理的外部执行环境,ZVM以模块化内置方式提供灵活可控的直通管理并实现接近裸机的性能,形成ZVM I/O虚拟化核心技术之一。