论文部分内容阅读
在计算机科学迅猛发展的当今社会,信息交互的方式也日新月异,尤其以是音视频这种大数据量的方式最受人们欢迎。虚拟化技术的出现使得人类可以最大化利用昂贵的物理设备,特别是图形处理单元GPU(Graphic Processing Unit)的虚拟化成了虚拟化研究的热点。虽然目前的GPU虚拟机化技术已经能够在虚拟机中支持物理GPU加速的2D/3D图形渲染和高性能的并行计算,但是也存在一些不足和未考虑到的地方。例如,目前对于虚拟环境下物理GPU加速的视频编解码还没有一个良好的解决方案,未能发挥出GPU在数据运算方面的巨大优势,而且在GPU资源分配的问题上也存在着优化的空间。不仅如此,由于GPU资源的分配问题,那么在虚拟环境下也就会出现如何高效的分配虚拟显存的问题。本文在Xen虚拟化架构的基础上,提出了虚拟环境下如何实现物理GPU加速的视频编解码方法以及虚拟显存的动态分配算法。本文主要的研究内容可以概括为以下两点:(1)提出了一种在多虚拟环境下的GPU硬件视频编解码方法:A GPU Hardware Codec Method in Virtual Machines(VMH-codec)。首先,VMH-codec通过探索GPU内部的视频编解码引擎和gVirt的透传机制来设计VMH-codec架构,该架构可以减轻CPU开销并提高视频编解码的性能。然后,为了避免视频编解码命令的处理中存在大量的滞后,VMH-codec重新设计了Codec优先级调度算法和虚拟机之间的GPU资源公平调度方法,保持了VMH-codec良好的公平性和稳定性。实验结果表明VMH-codec可以实现物理GPU加速的视频编解码,解决了虚拟机中视频卡顿的问题,获得了良好的视频播放效果。并对GPU资源分配的公平性以及应用程序性能均有显著提高,与gVir架构相比,公平性提升了约35%,视频编解码性能提升了约40%。(2)本文基于以往出现的气球驱动技术、内存热插拔技术等虚拟机内存分配方法,并结合gVirt架构所使用的地址空间膨胀机制,设计了一种全新的针对显存的动态分配算法。该算法在一定时间内收集每个虚拟机显存利用率、交换空间的变化情况和GPU页面缓存命中率的增量系数,并将这些数据交由宿主机中的全局显存分配器,最后由分配器计算下个时间窗口每个虚拟机确切的显存需求。通过虚拟显存动态分配算法,不仅使多个虚拟机可以充分利用有限的显存资源,而且每个虚拟机可以根据自身对于显存资源的真正需求得到相应大小的显存,实现全局显存的公平性分配。实验结果表明,相较于gVirt的静态显存分配算法,动态显存分配算法在性能上提升了约32%,并保持了良好的稳定性。