本发明专利技术公开了一种虚拟化环境下面向任务并行编程模型的优化方法;在位于客户虚拟机的前端监控部分获取任务并行编程模型中失败的窃取操作;在位于虚拟机监控器的后端加速部分根据加速发起者和被加速候选者的运行状态和所在物理CPU的信息,做出是否执行加速的决策。若执行加速,将加速发起者的剩余时间片提供给被加速候选者,当被加速候选者被虚拟机监控器抢占(时间片耗尽或被阻塞)时,若被加速候选者处于可运行状态,恢复其原本的调度路径;本发明专利技术为现有任务并行编程模型增加了针对虚拟化环境的优化,减少了运行小偷线程的虚拟CPU对计算资源的浪费,降低了运行有用线程的虚拟CPU的调度延时,从而实现将物理计算资源最大化地投入到有效计算中。
【技术实现步骤摘要】
一种虚拟化环境下面向任务并行编程模型的优化方法
本专利技术属于虚拟化与并行程序优化
,更具体地,涉及一种虚拟化环境下面向任务并行编程模型的优化方法。
技术介绍
随着处理器内核数量的增加,计算机编程模式由传统串行编程模式向新型并行编程模式转变,以发挥出于内核数量的增长一致的实际效果;近年来,任务并行编程模型被广泛用于开发并行应用,旨在简化并行编程和提高多核利用率。任务并行编程模型的核心技术是任务窃取调度,即每个处理器核对应一个线程,每个线程维护一个双端队列,该队列的尾部用于压入准备好的任务或弹出已经执行完的任务;当一个线程的双端队列为空时,该线程会转化为小偷线程,然后随机选择一个线程为受害线程,并试图从该受害线程的双端队列头部窃取任务来执行。若窃取失败,则随机选择另一个线程来窃取,如此反复,直到成功窃取到任务或本地队列非空为止。当前,随着虚拟化技术的发展,越来越多的并行应用运行在虚拟机中,并且单台物理机通常被多个虚拟机共享。如果任务并行编程模型中的一个小偷线程持续窃取任务失败,执行该线程的虚拟CPU会浪费计算资源。现有的任务并行编程模型,如Cilk++、TBB和BWS等,在减少小偷线程对计算资源浪费的方面,缺乏针对虚拟化环境的优化。所以,任务并行编程模型在虚拟化环境下面临着性能低下的问题。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种虚拟化环境下面向任务并行编程模型的优化方法,其目的在于,利用运行小偷线程的虚拟CPU时间片,加速运行有用线程的虚拟CPU,由此减少运行小偷线程的虚拟CPU对计算资源的浪费,有效降低运行有用线程的虚拟CPU的调度延时,从而最大化地将多核资源投入到有效计算中,提升任务并行编程模型的性能。为实现上述目的,按照本专利技术的一个方面,提供了一种虚拟化环境下面向任务并行编程模型的优化方法,具体如下:(1)获取任务并行编程模型中失败的窃取操作,读取失败的窃取操作对应的受害线程在任务并行编程模型中维护的运行状态和双端队列信息;其中,双端队列是指每个线程维护的一个队列,该队列的尾部用于压入相应线程准备好的任务或弹出已经执行完的任务;受害线程是指被小偷线程试图窃取任务的线程;小偷线程是指自己的双端队列不存在准备好的任务,试图从其它线程的双端队列头部窃取任务来执行的线程;(2)根据受害线程的运行状态,判断受害线程是否为执行任务的有用线程,如果是,进入步骤(3);否则,结束本次优化;其中,有用线程是指拥有可执行任务的线程;(3)判断受害线程的双端队列是否为空,如果是,进入步骤(4);否则,结束本次优化;(4)通过自定义的系统功能调用,将小偷线程的标识符和受害线程的线程标识符,分别作为系统功能调用的第一个参数和第二个参数,发送给客户操作系统的内核层;(5)客户操作系统的内核层,根据小偷线程的标识符和受害线程的标识符,查找内核中代表小偷线程和受害线程的数据结构,并从中获取受害线程在内核层的运行状态,以及小偷线程和受害线程所在虚拟CPU的标识符;(6)根据受害线程在内核层的运行状态,判断受害线程是否已被客户操作系统抢占,如果是,结束本次优化;否则,进入步骤(7);(7)将运行小偷线程的虚拟CPU角色定义为加速发起者,运行受害线程的虚拟CPU角色定义为被加速候选者,并通过自定义的超级调用,将加速发起者的虚拟CPU标识符和被加速候选者的虚拟CPU标识符,分别作为超级调用的第一个参数和第二个参数,发送给虚拟机监控器;(8)虚拟机监控器接收来自客户虚拟机的虚拟CPU标识符,查找虚拟机监控器中代表加速发起者和被加速候选者的虚拟CPU数据结构,并从中读取它们的运行状态和所在物理CPU的信息;(9)根据加速发起者和被加速候选者所在物理CPU的信息以及运行状态,判断是否执行加速,如果是,进入步骤(10);否则,结束本次优化;本步骤中,决定是否执行加速的过程具体如下:(9-1)根据加速发起者和被加速候选者所在物理CPU的信息,判断它们是否属于相同NUMA节点,如果是,进入步骤(9-2);否则,决定不执行加速;其中,NUMA节点是指NUMA系统中几个CPU通过内存总线与一块内存相连构成的一个组;因为一个NUMA系统拥有多条内存总线,所以被分为若干个NUMA节点,并且处于相同NUMA节点的CPU访问本地内存的速度,远快于访问其它NUMA节点的内存;(9-2)根据被加速候选者的运行状态,判断被加速候选者是否已被虚拟机监控器抢占,如果是,进入步骤(9-3);否则,决定不执行加速;(9-3)根据加速发起者的运行状态,计算它在当前调度的剩余时间片,判断剩余时间片的长度是否大于零,如果是,决定执行加速;否则,决定不执行加速;(10)利用加速发起者的剩余时间片,加速被加速候选者的执行;本步骤具体包括以下子步骤:(10-1)暂停执行加速发起者;(10-2)保留被加速候选者在当前物理CPU运行队列中的位置,并将被加速候选者迁移到加速发起者所在的物理CPU;(10-3)调度被加速候选者,且调度时间片等于加速发起者的剩余时间片;(10-4)当被加速候选者被虚拟机监控器抢占(例如:时间片耗尽或被阻塞)时,如果被加速候选者还处于可运行状态,则将它迁移回原本所在的物理CPU运行队列中的位置,恢复其原本的调度路径;这样不仅降低了被加速候选者的调度延时,还使其获得了额外的调度机会,以至于达到被加速的效果;(10-5)结束本次加速。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,能够取得下列有益效果:(1)高效利用计算资源:本专利技术提供的优化方法弥补了现有任务并行编程模型缺少针对虚拟化环境优化的不足,不仅能够减少运行小偷线程的虚拟CPU对计算资源的浪费,还能有效降低运行有用线程的虚拟CPU的调度延时,从而最大化地将多核资源投入到有效计算中;(2)透明性:本专利技术提供的优化方法针对任务并行编程模型的优化过程涉及到获取任务并行编程模型中失败的窃取操作,客户虚拟机和虚拟机监控器之间的通信等,这些过程对用户来说是完全透明的,用户不需要参与其中;(3)低开销:本专利技术提供的优化方法针对任务并行编程模型的优化过程涉及到获取小偷线程失败的窃取操作,客户虚拟机和虚拟机监控器之间的通信等,这些过程仅对运行基于任务并行编程模型的应用的虚拟机进行操作;每次加速执行涉及的加速发起者只是把原本属于自己的时间片提供给被加速候选者,并且加速发起者和被加速候选者来自相同虚拟机,故不会破坏虚拟机使用计算资源的公平性;因此,采用本专利技术提供的优化方法不会对运行其它类型应用的虚拟机产生影响。附图说明图1是本专利技术的方法所基于的虚拟CPU调度系统的体系结构图;图2是本专利技术实施例1的流程图;图3是本专利技术实施例1步骤(9)的细化流程图;图4是本专利技术实施例1步骤(10)的细化流程图;图5是本专利技术实施例1与现有技术在性能上的对比示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本专利技术的方法所基于的虚拟CPU调度系统的体系结构如图1所示,服务器上有N本文档来自技高网...
【技术保护点】
一种虚拟化环境下面向任务并行编程模型的优化方法,其特征在于,该方法包括以下步骤:(1)获取任务并行编程模型中失败的窃取操作,读取失败的窃取操作对应的受害线程在任务并行编程模型中维护的运行状态和双端队列信息;(2)根据受害线程的运行状态,判断受害线程是否为执行任务的有用线程,如果是,进入步骤(3);否则,结束本次优化;其中,有用线程是指拥有可执行任务的线程;(3)判断受害线程的双端队列是否为空,如果是,进入步骤(4);否则,结束本次优化;(4)通过自定义的系统功能调用,将小偷线程的线程标识符与受害线程的线程标识符,分别作为系统功能调用的第一个参数与第二个参数,发送给客户操作系统的内核层;(5)操作系统的内核层根据小偷线程的标识符和受害线程的标识符,查找内核中代表小偷线程和受害线程的数据结构,并从中获取受害线程在内核层的运行状态,以及小偷线程和受害线程所在虚拟CPU的标识符;(6)根据受害线程在内核层的运行状态,判断受害线程是否已被客户操作系统抢占,如果是,结束本次优化;否则,进入步骤(7);(7)将运行小偷线程的虚拟CPU角色定义为加速发起者,运行受害线程的虚拟CPU角色定义为被加速候选者,并通过自定义的超级调用,将加速发起者的虚拟CPU标识符和被加速候选者的虚拟CPU标识符,分别作为超级调用的第一个参数和第二个参数,发送给虚拟机监控器;(8)虚拟机监控器接收来自客户虚拟机的虚拟CPU标识符,查找虚拟机监控器中代表加速发起者和被加速候选者的虚拟CPU数据结构,并从中读取它们的运行状态和所在物理CPU的信息;(9)根据加速发起者和被加速候选者所在物理CPU的信息以及运行状态,决定是否执行加速,如果是,进入步骤(10);否则,结束本次优化;(10)利用加速发起者的剩余时间片,加速被加速候选者的执行。...
【技术特征摘要】
1.一种虚拟化环境下面向任务并行编程模型的优化方法,其特征在于,该方法包括以下步骤:(1)获取任务并行编程模型中失败的窃取操作,读取失败的窃取操作对应的受害线程在任务并行编程模型中维护的运行状态和双端队列信息;(2)根据受害线程的运行状态,判断受害线程是否为执行任务的有用线程,如果是,进入步骤(3);否则,结束本次优化;其中,有用线程是指拥有可执行任务的线程;(3)判断受害线程的双端队列是否为空,如果是,进入步骤(4);否则,结束本次优化;(4)通过自定义的系统功能调用,将小偷线程的线程标识符与受害线程的线程标识符,分别作为系统功能调用的第一个参数与第二个参数,发送给客户操作系统的内核层;(5)操作系统的内核层根据小偷线程的标识符和受害线程的标识符,查找内核中代表小偷线程和受害线程的数据结构,并从中获取受害线程在内核层的运行状态,以及小偷线程和受害线程所在虚拟CPU的标识符;(6)根据受害线程在内核层的运行状态,判断受害线程是否已被客户操作系统抢占,如果是,结束本次优化;否则,进入步骤(7);(7)将运行小偷线程的虚拟CPU角色定义为加速发起者,运行受害线程的虚拟CPU角色定义为被加速候选者,并通过自定义的超级调用,将加速发起者的虚拟CPU标识符和被加速候选者的虚拟CPU标识符,分别作为超级调用的第一个参数和第二个参数,发送给虚拟机监控器;(8)虚拟机监控器接收来自客户虚拟机的虚拟CPU标识符,查找虚拟机监控器中代表加速发起者和被加速候选者的虚拟CPU数据结构,并从中读取它们的运...
【专利技术属性】
技术研发人员:吴松,金海,彭亚琼,
申请(专利权)人:华中科技大学,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。