1)物理功能(Physical Function,PF) 宿主机上的物理主设备,宿主机上的 GPU 驱动安装在 PF 上。PF 的驱动是管理 者。它是一个完备的设备驱动,与一般 GPU 驱动的区别在于它管理了所有 VF 设备 的生命和调度周期,比如图 3-30 所示的 07:00.0 就是 S7150 的 PF 设备。
2)虚拟功能(Virtual Function,VF) 也是一个 PCI 设备,如图 3-30 中的 07∶02.0 和 07∶02.1。图 3-30 中的一个 PF (S7150)划分出了 4 个 VF,理论上运行在 1 个 VF 上面的虚拟机 GPU 的图形渲染性能是 PF 的 1/4。
在 GPU SR-IOV 方案中,把一个物理 GPU 设备(PF)拆分成多个小份虚拟机GPU(VF),这些 VF 依然是符合 PCI 规范的 PCIe 设备。GPU SR-IOV 方案在虚拟比 1 ∶ 1 的情况下性能上大概有 5% 的损失。VF 分时复用 GPU 硬件资源,GIM 模块负责时间片调度,支持 Round-Robin 和 QoS 两种调度策略。VF 的调度是 GPU SR-IOV 中的重点,涉及如何服务虚拟机,以 及如何确保 GPU 资源的公平分片等。
GPU SR-IOV 也是一个分时复用的策略。GPU 分时复用与 CPU 在进程间的分时复用是一样的概念。一个简单的调度就是把一个 GPU 的时间按照特定时间段分片, 每 个 VF 拿到特定的时间片。在这些时间片段中,VFn 独自享有 GPU 硬件的全部 资源。
目前所有的 GPU 虚拟化方案都采用了分时复用的策略。但不同的 GPU 虚拟化 方案在时间片的不同切片中会采用不同的方案。有些方案会在一个 GPU Context 的 当前 batch buffer/cmd buffer 执行结束之后启动调度,并把 GPU 交由下一个时间片的 所有者。有些方案则会严格要求在特定时间片结束的时候切换,强行打断当前 GPU 的工作,并交给下一个时间片的所有者。这种方案确保 GPU 资源被平均分摊到不同 VF。AMD 的 GPU SR-IOV 采用的是后一种方案。AMD 的 GPU 硬件设计保证了在任 何 GPU Batch Buffer 的执行过程中可以被安全抢占,保障每个 GPU VF 具有同等的性 能,理论上每个 GPU VF 的性能都是 GPU PF 的 1/N,N 是设定的虚拟比。
《弹性计算:无处不在的算力》电子书可以通过以下链接下载:https://developer.aliyun.com/topic/download?id=7996"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。