一种基于延迟发送机制的gpu虚拟化性能提升的方法

文档序号:9727192阅读:339来源:国知局
一种基于延迟发送机制的gpu虚拟化性能提升的方法
【技术领域】
[0001]本发明涉及计算机操作系统与虚拟化技术领域,具体是一种基于延迟发送机制的GHJ虚拟化性能提升的方法。
【背景技术】
[0002]桌面虚拟化作为典型的云计算应用,可以为用户提供远程计算机桌面服务。虚拟桌面有很多优势,具备提供随时随地访问桌面的能力,降低软硬件的管理和维护成本等特点,这使得虚拟桌面具有广阔的应用前景。虚拟化桌面技术在传统应用处理、远程办公等业务方面具有独特优势,但是涉及到3D图形处理时,仍然面临着很大的挑战。当前有许多的桌面虚拟化业务仅能提供基本的2D图形业务,不能支持3D图形处理任务;其次3D的处理能力有限,对于GPU显存要求较高的任务基本上不能很好地执行。即,问题的关键在于系统的虚拟GPU性能与物理GPU性能具有一定差距,对于3D的图形加速功能还不能提供良好的支持。
[0003]随着虚拟化技术的不断推进,桌面虚拟化中CPU的虚拟化已经发展到相对成熟的阶段,依靠CHJ模拟GPU基本可以支持普通视频播放,能较稳定地支持一定的2D图形业务,但是物理机中GPU的使用几乎为零。然而虚拟化技术中GPU的虚拟化技术,最近几年却没有更多的突破,再加上GPU厂商对于GPU硬件规范保密,使得GPU虚拟化的难度系数加大。因而GPU的虚拟化的发展已经远远低于其他虚拟化的发展速度,正是因为这一点往往成为了桌面虚拟化系统性能的瓶颈。据调查,用户已经不满足云桌面初始基本办公的需求,而对多媒体内容应用、图形设计软件应用的需求越来越强烈。可见,GPU虚拟化将大幅度提高虚拟机性能。
[0004]在QEMU-KVM环境中,可以知道多个台客户虚拟机都运行在一个宿主机之上,每台客户机的CPU、内存以及I/O都是由底层KVM虚拟化支持。像GPU、声卡、网卡等其他部件由QEMU来模拟。对于客户机而言,认为所有的物理硬件都是齐全的一台机器;对于宿主机而言,所有的客户机只是在它上面运行的一个进程,在虚拟机中跑的指令包括GHJ有关的所有指令的运行都是靠CPU来执行,图形业务都是靠CPU来仿真实现的,物理机中GPU使用率几乎没有,若将GHJ利用,对其采用虚拟化技术或者是一些虚拟化方法,让KVM环境中的虚拟机能够使用GPU资源,这样可以将图形业务交由GPU来执行,在一定程度上极大地减轻了CPU负担。由CPU与GPU共同协作支持虚拟机从而提高了虚拟机的性能,在整体上提高整个环境中的虚拟化的性能,虚拟机在运行时,将其图形渲染操作全部交由GPU来执行,不再使用CPU仿真,释放传统KVM环境中CPU在图形操作上的负担。因此,这将降低CPU负担。此外类似的还有将浮点运算,矩阵运算的作业交由GPU来执行,从而进一步降低CPU运算负担。
[0005]目前在KVM环境下的GPU虚拟化相对比较复杂,没有很完善的方法。GPU虚拟化除了CHJ仿真外,还有GPU设备独占和GPU的API重定向,前一种方法虽然能获得GPU资源但是其他虚拟机包括宿主机无法再利用GHJ资源了,后一种方法是在KVM环境下的虚拟机无法直接获得GPU资源,因此需要将虚拟机与宿主机的GPU人为修改,将虚拟机的跟图形有关的指令捕获,发送至GPU来执行。这种方式存在一个问题,图形业务指令在前端与后端不停地交互,在移动程度上开销特别大,甚至在一定程度的时候已经超过了 CPU仿真的开销,虽然这种方法实现了在KVM环境的GPU使用问题,但是对于GPU虚拟化的性能有很大的损失。
[0006]采用GPU虚拟化后,经过试验发现,图形指令数据传输次数会导致GPU虚拟化的性能严重下降,也就是说图形指令数据传输次数过多时,GPU虚拟化性能会大幅度下降。因而,急切需要一种能够在KVM环境下的桌面云环境中对GPU虚拟化性能提升的方法,通过利用良好GPU虚拟化方法,提高虚拟机使用性能,来保证有一定负载的情况下虚拟机的正常运行以及良好的体验。

【发明内容】

[0007]本发明的目的在于提供一种桌面云环境下基于延迟发送机制的GPU虚拟化性能提升的方法,在KVM环境下采用的GPU独占和GPU API重定向相结合的方法,在解决KVM环境中桌面虚拟化的图形显示不足问题的同时,利用延迟发送手段提高GPU虚拟化性能,以更好的提高虚拟机使用效果,提升3D图形显示,来提高用户体验。
[0008]为实现上述目的,本发明提供如下技术方案:
一种基于延迟发送机制的GPU虚拟化性能提升的方法,使用GPU独占和API重定向相结合的GPU虚拟化方法,通过减少指令传输的次数来提高GPU虚拟化性能;根据循环体中的参数变化和数据依赖的不同情况提供三种延迟提交方法,第一种延迟提交方法为:每次循环时,不需要将循环体中的有关函数名和参数信息缓存,只要将有关信息缓存一次即可;第二种延迟提交方法为:每次将循环时的信息都进行缓存,等到循环结束后再一次性将这些信息传给图形设备虚拟机执行;第三种延迟提交方法为:在缓存循环中CUDA API的函数名和参数信息时,将那些没有数据依赖的参数,直接缓存其参数值;对于那些有数据依赖的参数,采用不直接缓存参数,而是缓存参数表达式系数的方法,等待GPU根据已知计算得出数据,传回,然后等循环结束后再一次性将缓存的信息传给GPU独占设备虚拟机;所述方法具体包括以下步骤:
步骤一:首先找到CUDA程序中的循环体,然后判断该循环体中是否包含CUDA API;步骤二:如果循环体中不包含CUDA API,则继续寻找下一个循环体;如果循环体中包含有CUDA API,接着判断该循环体中是否有参数变化;
步骤三:如果该循环体没有参数变化且没有数据依赖,则使用第一种延迟提交方法;如果该循环体没有参数变化但有数据依赖,则采用第三种延迟提交方法;
步骤四:如果该循环体有参数变化但没有数据依赖,则采用第二种延迟提交方法;步骤五:如果该循环体有参数变化且有数据依赖,则采用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定。
[0009]作为本发明进一步的方案:所述的采用GPU独占和GPUAPI重定向相结合的GPU虚拟化方法,利用其KVM下对GPU pass-though的支持,可实现GPU对某一虚拟机的绑定,构建独占GPU的虚拟机。通过调用该驱动可充分实现GPU的全部特性;含GPU的虚拟机与需要GPU资源的虚拟机利用虚拟机之间共享数据和指令存储空间来使用物理GPU资源,通过这种GPU虚拟化方法降低由于数据复制和传输带来的延时:首先,GPU虚拟化后的虚拟机对图形操作任务可交由GPU来处理,降低了 CPU负担,提高运算性能;其次,采用基于延迟发送的机制来降低与图形有关的调用的次数来提高GPU虚拟化性能。
[0010]作为本发明进一步的方案:所述的三种延迟提交方法均将交互次数降低到一次。
[0011]作为本发明进一步的方案:所述的步骤一中,判断循环体,找到CUDA程序中可以采用延迟提交的循环体,利用⑶DA API来对这些循环体进行标记,也就是在循环体开始之前和结束之后调用这些CUDA API,从而得出哪些循环体需要延迟提交。
[0012]作为本发明进一步的方案:所述的步骤二中,循环体中存在一些函数(如cudaMemcpy),判断其参数是否有变化,还是随着循环变化函数与函数之间参数构成数据依赖。
[0013]作为本发明进一步的方案:所述的步骤三中,通过判断循环体中⑶DAAPI的参数和数据依赖,在得到循环体中没有参数变化,也没有数据依赖的情况下,使用第一种延迟提交方法;如果不断循环体后有数据依赖,而没有参数变化的情况下,使用第三种延迟提交方法。
[0014]作为本发明进一步的方案:所述的步骤四中,通过判断循环体中⑶DAAPI的参数变化和数据依赖:得到循环体中存在参数变化,但是循环中不存在数据依赖,使用第二种延迟提交方法。
[0015]作为本发明进一步的方案:所述的步骤五中,在判断循环体有参数变化又有数据依赖的情况下,使用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定,通过GPU利用相关系数结合变量当时的值来计算出参数值,同样类似于第三种延迟提交方法也将交互次数降低到一次。
[0016]与现有技术相比,本发明的有益效果是:
本发明针在KVM环境下的GPU虚拟化,采用的是一种设备独
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1