在外设直通虚拟机的环境中,PCI驱动会配置外设的Config space, 导致qemu中对外设的bar进行unmap和map操作,对于具有较大bar的设备,比如GPU设备,这种操作将会比较耗时,当直通多个GPU到虚拟机,情况变得更加糟糕。 在qemu的vfio_dma_map和vfio_dma_unmap中添加日志,可以观察到频繁unmap/map GPU的bar。 这个patch将多个配置PCI config space的操作合并,减少Qemu unmap/map GPU bar的操作,对于启动加速效果明显。 测试方法: 1. 不直通GPU到虚拟机,启动时间很短,大约1分钟 2. 直通1个GPU卡到虚拟机,启动时间变长,大约2分钟 3. 直通8张GPU卡到虚拟机,大约15分钟
The PR Link: https://gitee.com/anolis/cloud-kernel/pulls/6185