先简单介绍一下SR-IOV,SR-IOV(Single-Root I/O Virtualization,单根 I/O虚拟化)是一种基于硬件的虚拟化解决方案,通过利用PF和VF的属性,将一个设备虚拟出多个PCIe设备,利于虚拟机操作,从而大大减轻宿主机的CPU负荷,提高性能和可伸缩性,帮助系统解决虚拟机SSD盘的QoS问题,可支持更多数量的虚拟机业务。
传统虚拟化系统使用Hypervisor(或者VMM)软件对虚拟机进行管理,软件层既消耗CPU资源,又有较深的调用栈,使得PCIe设备的性能优势无法彻底发挥。而SR-IOV可以实现多个虚拟机共享物理资源,且bypass Hypervisor(或者VMM)软件层,使得虚拟机可以使用到NVMe SSD的高性能。
对比传统虚拟化系统,在有SR-IOV技术的云业务虚拟机应用场景下,VM可直接与VF通信,不需要Hypervisor接入IO处理,节约 vCPU资源的同时,又可以实现不同VF之间性能相互隔离,互不影响。
传统虚拟机与SR-IOV虚拟机对比
可以总结得出SR-IOV优势在于:
1,实现SR-IOV之后,VMM把中断交给虚拟机处理,提高了I/O性能;
2,虚拟机直接和PCIe设备交互,bypass掉中间的Hypervisor/VMM层,减轻物理主机CPU负担,使之有能力承载更多虚拟机;
3,SR-IOV虚拟化技术可以减少客户所需PCIe设备数量,进而节省PCIe插槽;
4,SR-IOV可以与其他的I/O虚拟化技术进行结合,提供一个更加完整的兼具高性能和安全性的解决方案。
比如,当前一块NVMe SSD容量可以达到十几TB,而IOPS可以达到100万以上,延时也降低到了微秒级,SR-IOV可以使NVMe SSD直接被上层多个VM所用,SSD的性能优势也可以直接被上层应用感知到。
如下图,在虚拟化分区方式场景下,通过SR-IOV技术将一片PCIe 4.0 7.68TB SSD(绑定16个CPU核)配置为2个容量为3.84TB VF(绑定8个CPU)。
虚拟化分区方式场景