论文部分内容阅读
Graphic Process Unit(GPU)在现代计算机系统中有着牢固的地位,其应用场景从基础的图形图像计算,慢慢发展到视频编解码,以及高性能计算等等。同时,由于GPU并行处理的特性,人们也看到了其在做通用计算方面的巨大潜能,因此在云环境中也开始引入GPU,并将其作为一种关键的资源来提供混合型的计算服务。为了满足这种需求,最近出现了两个GPU完全虚拟化的解决方案,gVirt和GPUvm,这两个解决方案目前还尚不成熟,一些至关重要的虚拟机管理方面的功能,比如检查点和迁移功能都有所缺失。另一方面,GPU本身不够稳定,许多情况下它会崩溃或者卡住,现在的解决方案一般都是通过各个GPU厂商提供的恢复机制来重置GPU硬件。具体来说,当GPU的驱动检测到GPU超时的时候,操作系统会调用驱动内部的重置代码,GPU重置后所有状态都会清空,操作系统不会出现异常,但是刚刚使用GPU的应用程序的后果就不可知了。这种方案牺牲了应用程序执行的稳定来换取操作系统的稳定。一个典型的云环境利用虚拟化技术来讲多个虚拟机聚合到一个物理主机上,然而虚拟化从来都是一把双刃剑,伴随资源整合的优势而来的是更高概率的GPU故障风险。因此提供高可用的需求更加被放大了。本文中我们首次提出了一个基于gVirt的、快速的、迭代式的检查点机制,以此来完成GPU全虚拟化的虚拟机的快照和迁移。我们利用这个检查点机制通过备份整个虚拟机到另一台物理主机上,进一步提出了一个开源的解决方案——HAG,当检测到GPU出现卡死的情况时,在另一台物理主机上的备份虚拟机就可以立刻接管过来保证应用程序的继续运行,从而最终保证了 GPU资源的高可用。本课题的主要难点在于如何定义GPU的状态、如何尽可能地减少停机时间。同时,由于GPU缺少脏页位,本文中创新使用了命令设计的办法来解决这一问题,从而减少了需要拷贝的内存数量。最后,由于不断地做检查点和备份势必要引起额外的开销,我们分析了停机时间和应用程序性能的下降,结果显示:1)虚拟机迁移和做备份的停机时间在224-411毫秒,2)在备份间隔为几秒的配置下,不同类型的GPU测试程序性能可以达到原先性能的77%-92%,而备份执行期间的平均额外网络带宽消耗只有80-170兆比特每秒。