GPU全虚拟化热迁移的设计与实现

功能介绍

gMig是一个GPU全虚拟化热迁移的实现,为Intel GVT-g GPU虚拟化解决方案提供了热迁移的支持。通过gMig,运行GPU程序的虚拟机可以从一台物理机迁移到另一台物理机,而其中运行的GPU程序不被打断。gMig在KVM的基础上实现,可以使用KVM/QEMU默认的迁移接口。对linux,服务中断时间大约为120ms,对windows,服务中断时间大概为300ms。

技术简介

架构介绍

gMig分为kernel中的驱动和QEMU中的扩展组成。驱动程序为QEMU提供了所需要的迁移支持,包括重建GPU页表和修正迁移后的GPU程序的地址,以及GPU上下文的克隆。在QEMU中,gMig通过软件脏页机制来检测GPU内存的脏页,从而实现Pre-Copy。软件脏页机制通过hash实现,在传输一个GPU页之前,gMig会计算这个页的哈希值,并与之前存储的值对比,若发生变化,则说明该页发生了改变。如果一个页没有发生改变,这个页在这一轮传输中可被跳过。通过这一方法,80%的GPU页在Stop-and-Copy阶段的传输可以被跳过,从而大大缩短了服务的中断时间。

感想/吐槽

熟读Intel手册对于一个系统开发者来说总是好的。由于不熟悉手册,我在实现过程中碰到了各种问题!另一点就是kernel的bug真的非常难调,写kernel代码的实际时间会是估计的若干倍,因此做毕设请务必备好你的耐心。

文稿:马嘉诚

编辑:高宇岑

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G0CUU500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券