大型的云服务提供商有不少的计算服务通过将GPU 或FPGA 设备直通给虚拟机,来加速用户的诸如深度学习、人工智能相关的应用程序。使用Intel VT-d 技术实现设备直通,可让虚拟机直接访问硬件设备。现代设备的访问都是由DMA(直接内存访问)来完成的,在虚拟化直通设备的情况下,DMA 访问所需的从GPA(虚拟机物理地址)到HPA(物理机物理地址)的转化,是由IOMMU 来实现的。如果实现带有直通设备的虚拟机的热升级,那么需要迁移设备的内部状态,重建IOMMU 重映射表,保存和恢复正在进行的DMA 操作以免造成数据丢失。这是比较复杂的情况, 而且没有现成框架可以使用。
在阿里云虚拟化热升级技术中,我们使用了“直通设备移交”的方式来实现直通设备的热升级。由于我们都是使用VFIO 这个框架来实现设备直通的,VFIO 会在/ dev/vfio/ 目录下暴露一些设备节点给QEMU 使用。在热升级框架中,引入了一个用户态的VFIO 连接器,它将所有与VFIO 相关的文件描述符和接口(包括/dev/vfio、/ dev/vfio/grp*、 VFIO eventfd 和KVM irqfd 等),以及QEMU 对VFIO 文件描述符的访问包装起来,如下图所示。
在热升级的过程中,只需要将VFIO 连接器的控制权移交给升级后的QEMU 进程即可,避免了设备状态的保存和IOMMU 重映射表的重建等非常复杂的操作。在热升级框架的设计中,我们通过在设备移交后立刻给虚拟机注入一个虚拟中断的方式,解决了中断丢失的问题。
在一些典型的测试案例( 如空载、Web 服务器、MySQL 数据库服务器、SPECCPU 压测等)中,阿里云虚拟机热升级带来的业务中断时间为30 毫秒左右。该热升级框架在线上大规模虚拟机的功能迭代、运维升级中发挥了巨大的作用,已经成为阿里云弹性计算升级迭代的运维利器,也是阿里云虚拟化的核心技术之一。
资料来源:《弹性计算—无处不在的算力》
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。