论文部分内容阅读
GPU在Graphics User Interfaces(简称GUIs),2D,3D以及多媒体数据处理等应用中可以极大地释放CPU资源,并可以提供流畅的用户体验。在系统虚拟化场景中,云服务提供商也已经从传统的仅提供虚拟计算服务向着提供图形处理支持及其它复杂应用场景的服务转变。基于Intel x86平台的GPU虚拟化采用Mediated Pass-Through的方式以实现全虚拟化,同时兼顾不同虚拟机之间的安全隔离特性,可扩展性以及性能等因素,将一个物理的GPU硬件通过共享的方式为多个不同的虚拟机提供图形处理硬件加速服务。由于不同的虚拟机采用不同的硬件驱动设计和系统配置,因此在不同的虚拟机中就存在对于GPU硬件的不同参数配置需求,在虚拟GPU的调度中需要保存及恢复硬件上下文。同时为了保证虚拟机系统中对用户事件响应的及时性,需要提高虚拟GPU的调度频率,一般为毫秒级。在高频的虚拟GPU调度场景中,单次调度延迟就成为了系统整体性能的一个很重要的因素,调度延迟主要来自硬件上下文切换,而硬件上下文切换主要耗时在需要访问大量的硬件寄存器,随着寄存器访问数量的增多以及调度频率的提高,总计的寄存器访问延时在硬件上下文切换中的时间占比变大,从而影响到了系统的整体性能。本论文在研究了虚拟GPU的硬件场景保存及恢复的原理后,设计了一种基于差异化更新的技术方案,可以明显减少虚拟GPU调度过程中的硬件寄存器访问次数。基于不同的虚拟GPU配置的趋同性,可以在访问硬件寄存器之前对切换前后的虚拟GPU硬件场景进行对比分析,仅更新具有差异的寄存器内容。为了实现这种差异化更新,在每个虚拟GPU中保存一份硬件寄存器的副本,也称为虚拟寄存器(Virtual Reg)(简称vReg),用于标识自身的硬件配置信息。当虚拟GPU为当前状态时,保证虚拟寄存器和硬件寄存器中的值实时同步,在虚拟GPU处于非当前状态时,虚拟寄存器中暂存需要更新寄存器值。这样可以保证在需要进行虚拟GPU切换时不需要再读取并保存当前硬件的状态信息,寄存器的切换也只需要将差异的设置进行更新即可。由于硬件配置的趋同性,在实际的运行过程中可以省略大部分的硬件寄存器访问。从而达到缩短虚拟GPU切换的时间,提高系统的调度效率,提升系统整体性能,并可以同时节约CPU资源的目的。