虚拟机过度分配环境下的mpi消息接收方法

文档序号:6332606阅读:147来源:国知局
专利名称:虚拟机过度分配环境下的mpi消息接收方法
技术领域
本发明属于虚拟机环境下的MPI (Message Passing Interface)通信技术领域, 具体来说就是提出了一种改善MPI并行程序在虚拟机过度分配环境下的通信性能的方法。
背景技术
自从虚拟化技术复兴以后,基于其上的软件技术逐渐成为一个重要的研究领域。 如今,利用虚拟化技术构建高性能计算应用所需的运行环境正成为一种流行趋势。在众多 的虚拟化技术中,由于Xen允许多台虚拟处理器同时运行在一台物理处理器上且系统开销 较小,因此应用较为广泛。本方法所采用的实验平台就是Xen。同传统计算模式相比,虚拟化技术的出现带来了许多好处。比如资源聚合,降低能 耗,处理机器失效,改善程序移植性,还可以协助调试复杂的程序代码等。在虚拟化技术中, 为了更好的复用系统底层物理资源,物理处理器封装并虚拟出多个虚拟处理器,通过调用 虚拟处理器到物理处理器上,Xen创造出一台物理机上共存多个操作系统的假象。在虚拟机计算模式中,同时存在两种调度机制在用户操作系统中,操作系统将应 用进程调度到虚拟处理器上;在虚拟化层中,虚拟机管理器将虚拟处理器调度到物理处理 器上运行。然而,在现今的虚拟机体系结构中,这两种调度机制是相互独立执行的。这在一 定程度上影响了那些需要通过MPI进行通信的高性能计算负载的性能。这种负面影响在虚 拟机过度分配(即一个物理处理器上分配了不止一个虚拟处理器)的情况下显得更为突出。通过分析和实验得知,在过度分配虚拟机环境下,通过MPI进行通信会带来一些 性能损耗,这些损耗主要来自于MPI消息接收机制中的“忙等”现象。MPI的消息接收机制 如下对于阻塞式接收操作,MPI库会不断的轮询套接字文件描述符集或者共享内存直到 接收到所需数据已到达的消息。在这个过程中,该消息接收机制并不会使持有阻塞式消息 接收进程的虚拟处理器进入阻塞状态,相反它会使该虚拟处理器一直运行直到当前时间片 结束,这样就产生了所谓的“忙等”现象,即该阻塞式消息接收进程一直等待接收所需数据 已到达的消息。这种“忙等”现象会浪费较多的处理器资源。为了解决这个问题,MPI使用 了一种基于阈值的高效机制,具体方法为若阻塞式消息接收进程在轮询预定义的次数后仍 未接收到所需数据已到达的消息就得通过在用户操作系统中进行系统调用以放弃该进程 所占用的处理器资源。根据实验我们发现,在过量分配虚拟处理器系统下,该机制并不能有 效的改善高性能计算负载下的MPI通信性能。

发明内容
本发明的目的是提供一种虚拟机过度分配环境下的MPI消息接收方法。该方法独 立于虚拟机层调度机制,通过修改MPI库中的消息接收机制,使虚拟机环境下两种调度机 制即用户操作系统调度进程到虚拟处理器和虚拟机管理器调度虚拟处理器到物理处理器 相互协作来提高系统性能。本发明提供的一种虚拟机过度分配环境下的MPI消息接收方法包括下述步骤第丄步令t = 0,t为轮询次数;
第2步阻塞式消息接收进程轮询套接字文件描述符集或者共享内存,若接收到所需 数据已到达的消息则转第10步,否则令t = t + 1,然后进入第3步;
第3步判断t > T是否成立,T为预定义的最大轮询次数,如果成立,则令t = 0后转 第4步,否则转第2步;
第4步所述接收进程调用schecLyield函数,释放该进程当前所占有的虚拟处理器资 源,记录此时时间,记为tl ;
第5步所述虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队 列,选择一个可以调度的进程调度运行;
第6步所述接收进程再次被调度执行时,记录此时时间,记为t2; 第7步判断t2与tl的差值是否小于预先设定的阈值,如果是,转第8步,否则转第2

少;
第8步所述接收进程通过超级调用hypercall通知虚拟机管理器,通知其执行虚拟处 理器的重新调度操作;
第9步虚拟机管理器执行虚拟处理器的重新调度操作; 第10步所述阻塞接收进程处理接收到的消息。本发明方法在虚拟机过度分配环境下利用了用户操作系统和虚拟化层中两种不 同的调度机制相互合作提高了 MPI通信性能。本发明通知适时将用户操作系统中的调度信 息报告给虚拟机管理器以通知虚拟机管理器重新调度虚拟处理器的方法来减少因MPI库 消息接收机制产生的“忙等”现象而引起的性能损耗。具体而言,本发明方法具有以下优点 或用途
(1)系统性能的提高
本发明在Xen虚拟环境下,与原始的MPI库相比较,采用credit调度算法时,能够将性 能提高700倍,采用SEDF调度算法时,性能可以提高4倍。在过度分配环境下,根据通信模 式以及过度分配严重性等不同因素,我们的方案可以将性能提高到不同的程度。(2)为改进虚拟机管理器中的调度算法提供了便捷性和适用性
本发明不依赖于虚拟机管理器中特定的调度算法,为以后虚拟机管理器中调度算法的 改进提供了便捷性和适用性。


图1为本发明方法的流程图2为本发明在credit算法下的实例图; 图3为本发明在SEDF算法下的实例图。
具体实施例方式下面结合附图和实例对本发明方法作进一步详细地说明。如图1所示,本发明修改了 MPI库中的消息接收机制,即阻塞式消息接收进程等待 接收所需数据已到达的消息时的流程,具体实施步骤如下
(1)令t = o,t为轮询次数;
4(2)阻塞式消息接收进程轮询套接字文件描述符集或者共享内存,若接收到所需数据 已到达的消息则转步骤(10),否则令t = t+1;
(3)判断t^ T是否成立,T为预定义的最大轮询次数,这个预定义次数是系统自定义 的,比如对于mpich2-l. 2. 1来说是1000次;如果成立,则令t = 0后转步骤(4),否则转步 骤⑵;
(4)该阻塞式消息接收进程调用schecLyield函数,释放该进程当前所占有的虚拟处 理器资源,记录下此时时间为tl ;
(5)该虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队列,选 择一个可以调度的进程调度运行;
(6)该阻塞式消息接收进程再次被调度执行时,记录下此时时间为t2;
(7)判断t2_tl<Sched-Gap是否成立,其中Sched-Gap是我们自定义的数值。如果是 转步骤(8),否则转步骤(2);
此处判断是否通知虚拟机管理器执行虚拟处理器的重新调度操作的方法是在用户操 作系统中记录下该阻塞式消息接收进程调用schecLyield函数,释放虚拟处理器资源的时 间与该阻塞式消息接收进程被再度调度执行时的时间间隔,并将这个间隔与我们自己定义 的一个阈值(Sched-Gap)相比较。当时间间隔小于Sched-Gap时,判定当前进程队列中只 有该非阻塞式消息接收进程一个可运行进程,此时需要通知虚拟机管理器执行虚拟处理器 的重新调度操作,即该虚拟处理器放弃其所占用的物理处理器资源,由虚拟机管理器选择 另一个合适的虚拟处理器在刚被释放的物理处理器上运行。这是因为考虑到多个进程同时 运行在一个虚拟处理器上的情况,在这种情况下,并不适宜重调度整个虚拟处理器,因为当 前调度很有可能正在运行一些极其有用的工作。在过度分配虚拟处理器情况下,被消息接 收阻塞的进程一般是该虚拟处理器上唯一一个运行的进程,这就意味着我们测量的时间间 隔会非常小,这将会触发虚拟机管理器的重新调度操作。我们在进行一系列的实验后,将 Sched-Gap范围定为10-120毫秒,最佳值取100微秒。该阻塞式消息接收进程通过这种方 法来判断是否应该通知虚拟机管理器进行重新调度虚拟处理器操作。(8)该阻塞式消息接收进程通过超级调用(hypercall)通知虚拟机管理器执行虚 拟处理器的重新调度操作;
(9)虚拟机管理器执行虚拟处理器的重新调度操作;
(10)该阻塞接收进程处理接收到的消息 性能评测实例
Xen虚拟机管理器中有两种可用的调度器credit和SEDF。本发明采用这两种调度 器的默认调度参数。本实例采用版本号为2. 6. 28-rc2的Iinux内核来启动测试平台以形 成一个单处理器环境,该版本的Iinux内核并不支持对称多处理进程。单处理器环境与分 配多个虚拟处理器到一个物理处理器的情况类似,因此可以通过测量两个基准程序进程之 间的MPI通信性能并将其当作未使用虚拟化技术时原始的MPI通信性能(记作原始性能)。测量虚拟机过度分配环境下的MPI通信性能时,我们考虑以下四种配置 (Dcredit调度器下虚拟机机间通信虚拟化系统用credit调度器,有两个物理处理
器,两个非特权虚拟机,每个只有一个虚拟处理器,所有的虚拟处理器都绑定在物理处理器 1上。测量这两个非特权虚拟机之间的MPI通信性能。
(2) SEDF调度器下虚拟机机间通信除了调度器选择SEDF外,其余的与上同。(3) credit调度器下虚拟机机内通信虚拟化系统采用credit调度器,有两个物 理处理器,一个非特权虚拟机有两个虚拟处理器,所有的虚拟处理器绑定到物理处理器1 上,测量这个非特权虚拟机内部的MPI通信性能。(4) SEDF调度器下虚拟机机内通信除了调度器选择SEDF外,其余的与(3)同。我们采用BefT来收集我们定义的过度分配配置下的通信性能数据,并将其与原 始性能相比较。如图2、图3所示。在图2和图3中,标有前缀“*”的数据表明是采用本发 明之后的数据。从图2图3我们可以看出,与以前的数据相比较,采用了本发明后的通信性 能提高很大图2中对于credit调度器,在虚拟机机间通信情况下,性能大约提高300倍, 在虚拟机机内通信情况下,性能大约提高700倍。从图2可以看出对于SEDF调度器,虚拟 机机间通信情况下性能提高3倍,虚拟机机内通信情况下性能提高约是4倍。由上述分析可以得知,在虚拟机过度分配环境下,根据通信模式以及过度分配严 重性等不同的因素,本发明可以将通信性能提高不同的程度。另外,本发明并不依赖于虚拟 机管理器中特定的调度算法,这也给虚拟机管理器中调度算法的改进提供了便捷性和适用 性。本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据本发明公开的内 容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思 路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
一种虚拟机过度分配环境下的MPI消息接收方法,该方法包括下述步骤第1步 令t=0,t为轮询次数;第2步 阻塞式消息接收进程轮询套接字文件描述符集或者共享内存,若接收到所需数据已到达的消息则转第10步,否则令t=t+1,然后进入第3步;第3步 判断t≥T是否成立,T为预定义的最大轮询次数,如果成立,则令t=0后转第4步,否则转第2步;第4步 所述接收进程调用sched_yield函数,释放该进程当前所占有的虚拟处理器资源,记录此时时间,记为t1;第5步 所述虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队列,选择一个可以调度的进程调度运行;第6步 所述接收进程再次被调度执行时,记录此时时间,记为t2;第7步 判断t2与t1的差值是否小于预先设定的阈值,如果是,转第8步,否则转第2步;第8步 所述阻塞式消息接收进程通过超级调用hypercall通知虚拟机管理器,通知其执行虚拟处理器的重新调度操作;第9步 虚拟机管理器执行虚拟处理器的重新调度操作;第10步 所述阻塞接收进程处理接收到的消息。
全文摘要
本发明公开了一种虚拟机过度分配环境下的MPI消息接收方法,其过程为阻塞接收进程轮询套接字文件描述符集或者共享内存,该阻塞式消息接收进程调用sched_yield函数,释放该进程当前所占有的虚拟处理器资源;该虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队列,选择一个可以调度的进程调度运行;该阻塞式消息接收进程再次被调度执行时,判断是否需要通知虚拟机管理器执行虚拟处理器的重新调度操作;该阻塞式消息接收进程通过超级调用通知虚拟机管理器执行虚拟处理器的重新调度操作;虚拟机管理器执行虚拟处理器的重新调度操作,阻塞接收进程处理接收到的消息。本发明可以减少因MPI库消息接收机制产生“忙等”现象引起的性能损耗。
文档编号G06F9/46GK101968749SQ201010290600
公开日2011年2月9日 申请日期2010年9月26日 优先权日2010年9月26日
发明者周文博, 李大江, 王强, 胡侃, 谢雪娇, 邵志远, 金海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1