[发明专利]一种虚拟化环境下面向任务并行编程模型的优化方法有效
申请号: | 201510187523.6 | 申请日: | 2015-04-21 |
公开(公告)号: | CN104765613B | 公开(公告)日: | 2017-09-12 |
发明(设计)人: | 吴松;金海;彭亚琼 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/455 |
代理公司: | 华中科技大学专利中心42201 | 代理人: | 廖盈春 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 虚拟 环境 面向 任务 并行 编程 模型 优化 方法 | ||
技术领域
本发明属于虚拟化与并行程序优化技术领域,更具体地,涉及一种虚拟化环境下面向任务并行编程模型的优化方法。
背景技术
随着处理器内核数量的增加,计算机编程模式由传统串行编程模式向新型并行编程模式转变,以发挥出于内核数量的增长一致的实际效果;近年来,任务并行编程模型被广泛用于开发并行应用,旨在简化并行编程和提高多核利用率。
任务并行编程模型的核心技术是任务窃取调度,即每个处理器核对应一个线程,每个线程维护一个双端队列,该队列的尾部用于压入准备好的任务或弹出已经执行完的任务;当一个线程的双端队列为空时,该线程会转化为小偷线程,然后随机选择一个线程为受害线程,并试图从该受害线程的双端队列头部窃取任务来执行。若窃取失败,则随机选择另一个线程来窃取,如此反复,直到成功窃取到任务或本地队列非空为止。
当前,随着虚拟化技术的发展,越来越多的并行应用运行在虚拟机中,并且单台物理机通常被多个虚拟机共享。如果任务并行编程模型中的一个小偷线程持续窃取任务失败,执行该线程的虚拟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节点的内存;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510187523.6/2.html,转载请声明来源钻瓜专利网。