功能介绍
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代码的实际时间会是估计的若干倍,因此做毕设请务必备好你的耐心。
文稿:马嘉诚
编辑:高宇岑
领取专属 10元无门槛券
私享最新 技术干货