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

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

Info

Publication number
CN101968749A
CN101968749A CN 201010290600 CN201010290600A CN101968749A CN 101968749 A CN101968749 A CN 101968749A CN 201010290600 CN201010290600 CN 201010290600 CN 201010290600 A CN201010290600 A CN 201010290600A CN 101968749 A CN101968749 A CN 101968749A
Authority
CN
China
Prior art keywords
virtual machine
virtual
virtual processor
mpi
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010290600
Other languages
English (en)
Other versions
CN101968749B (zh
Inventor
金海�
邵志远
胡侃
王强
谢雪娇
李大江
周文博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN 201010290600 priority Critical patent/CN101968749B/zh
Publication of CN101968749A publication Critical patent/CN101968749A/zh
Application granted granted Critical
Publication of CN101968749B publication Critical patent/CN101968749B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种虚拟机过度分配环境下的MPI消息接收方法,其过程为:阻塞接收进程轮询套接字文件描述符集或者共享内存,该阻塞式消息接收进程调用sched_yield函数,释放该进程当前所占有的虚拟处理器资源;该虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队列,选择一个可以调度的进程调度运行;该阻塞式消息接收进程再次被调度执行时,判断是否需要通知虚拟机管理器执行虚拟处理器的重新调度操作;该阻塞式消息接收进程通过超级调用通知虚拟机管理器执行虚拟处理器的重新调度操作;虚拟机管理器执行虚拟处理器的重新调度操作,阻塞接收进程处理接收到的消息。本发明可以减少因MPI库消息接收机制产生“忙等”现象引起的性能损耗。

Description

虚拟机过度分配环境下的MPI消息接收方法
技术领域
本发明属于虚拟机环境下的MPI(Message Passing Interface)通信技术领域,具体来说就是提出了一种改善MPI并行程序在虚拟机过度分配环境下的通信性能的方法。 
背景技术
自从虚拟化技术复兴以后,基于其上的软件技术逐渐成为一个重要的研究领域。如今,利用虚拟化技术构建高性能计算应用所需的运行环境正成为一种流行趋势。在众多的虚拟化技术中,由于Xen允许多台虚拟处理器同时运行在一台物理处理器上且系统开销较小,因此应用较为广泛。本方法所采用的实验平台就是Xen。
同传统计算模式相比,虚拟化技术的出现带来了许多好处。比如资源聚合,降低能耗,处理机器失效,改善程序移植性,还可以协助调试复杂的程序代码等。在虚拟化技术中,为了更好的复用系统底层物理资源,物理处理器封装并虚拟出多个虚拟处理器,通过调用虚拟处理器到物理处理器上,Xen创造出一台物理机上共存多个操作系统的假象。
在虚拟机计算模式中,同时存在两种调度机制:在用户操作系统中,操作系统将应用进程调度到虚拟处理器上;在虚拟化层中,虚拟机管理器将虚拟处理器调度到物理处理器上运行。然而,在现今的虚拟机体系结构中,这两种调度机制是相互独立执行的。这在一定程度上影响了那些需要通过MPI进行通信的高性能计算负载的性能。这种负面影响在虚拟机过度分配(即一个物理处理器上分配了不止一个虚拟处理器)的情况下显得更为突出。
通过分析和实验得知, 在过度分配虚拟机环境下,通过MPI进行通信会带来一些性能损耗,这些损耗主要来自于MPI消息接收机制中的“忙等”现象。MPI的消息接收机制如下:对于阻塞式接收操作,MPI库会不断的轮询套接字文件描述符集或者共享内存直到接收到所需数据已到达的消息。在这个过程中,该消息接收机制并不会使持有阻塞式消息接收进程的虚拟处理器进入阻塞状态,相反它会使该虚拟处理器一直运行直到当前时间片结束,这样就产生了所谓的“忙等”现象,即该阻塞式消息接收进程一直等待接收所需数据已到达的消息。这种“忙等”现象会浪费较多的处理器资源。为了解决这个问题,MPI使用了一种基于阈值的高效机制,具体方法为若阻塞式消息接收进程在轮询预定义的次数后仍未接收到所需数据已到达的消息就得通过在用户操作系统中进行系统调用以放弃该进程所占用的处理器资源。根据实验我们发现,在过量分配虚拟处理器系统下,该机制并不能有效的改善高性能计算负载下的MPI通信性能。
发明内容
本发明的目的是提供一种虚拟机过度分配环境下的MPI消息接收方法。该方法独立于虚拟机层调度机制,通过修改MPI库中的消息接收机制,使虚拟机环境下两种调度机制即用户操作系统调度进程到虚拟处理器和虚拟机管理器调度虚拟处理器到物理处理器相互协作来提高系统性能。
本发明提供的一种虚拟机过度分配环境下的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通信性能。本发明通知适时将用户操作系统中的调度信息报告给虚拟机管理器以通知虚拟机管理器重新调度虚拟处理器的方法来减少因MPI库消息接收机制产生的“忙等”现象而引起的性能损耗。具体而言,本发明方法具有以下优点或用途: 
(1)系统性能的提高
本发明在Xen虚拟环境下,与原始的MPI库相比较,采用credit调度算法时,能够将性能提高700倍,采用SEDF调度算法时,性能可以提高4倍。在过度分配环境下,根据通信模式以及过度分配严重性等不同因素,我们的方案可以将性能提高到不同的程度。
(2)为改进虚拟机管理器中的调度算法提供了便捷性和适用性
本发明不依赖于虚拟机管理器中特定的调度算法,为以后虚拟机管理器中调度算法的改进提供了便捷性和适用性。
附图说明
图1为本发明方法的流程图;
图2为本发明在credit算法下的实例图;
图3为本发明在SEDF算法下的实例图。
具体实施方式
下面结合附图和实例对本发明方法作进一步详细地说明。
如图1所示,本发明修改了MPI库中的消息接收机制,即阻塞式消息接收进程等待接收所需数据已到达的消息时的流程,具体实施步骤如下:
(1)令t=0,t为轮询次数;
(2)阻塞式消息接收进程轮询套接字文件描述符集或者共享内存,若接收到所需数据已到达的消息则转步骤(10),否则令t=t+1;
(3)判断t≥T是否成立,T为预定义的最大轮询次数,这个预定义次数是系统自定义的,比如对于mpich2-1.2.1来说是1000次;如果成立,则令t=0后转步骤(4),否则转步骤(2);
(4)该阻塞式消息接收进程调用sched_yield函数,释放该进程当前所占有的虚拟处理器资源,记录下此时时间为t1;
(5)该虚拟处理器所属的虚拟机中的用户操作系统查询该虚拟处理器的运行队列,选择一个可以调度的进程调度运行;
(6)该阻塞式消息接收进程再次被调度执行时,记录下此时时间为t2;
(7)判断t2-t1< Sched-Gap是否成立,其中Sched-Gap是我们自定义的数值。如果是转步骤(8),否则转步骤(2);
此处判断是否通知虚拟机管理器执行虚拟处理器的重新调度操作的方法是在用户操作系统中记录下该阻塞式消息接收进程调用sched_yield函数,释放虚拟处理器资源的时间与该阻塞式消息接收进程被再度调度执行时的时间间隔,并将这个间隔与我们自己定义的一个阈值(Sched-Gap)相比较。当时间间隔小于Sched-Gap时,判定当前进程队列中只有该非阻塞式消息接收进程一个可运行进程,此时需要通知虚拟机管理器执行虚拟处理器的重新调度操作,即该虚拟处理器放弃其所占用的物理处理器资源,由虚拟机管理器选择另一个合适的虚拟处理器在刚被释放的物理处理器上运行。这是因为考虑到多个进程同时运行在一个虚拟处理器上的情况,在这种情况下,并不适宜重调度整个虚拟处理器,因为当前调度很有可能正在运行一些极其有用的工作。在过度分配虚拟处理器情况下,被消息接收阻塞的进程一般是该虚拟处理器上唯一一个运行的进程,这就意味着我们测量的时间间隔会非常小,这将会触发虚拟机管理器的重新调度操作。我们在进行一系列的实验后,将Sched-Gap范围定为10-120毫秒,最佳值取100微秒。该阻塞式消息接收进程通过这种方法来判断是否应该通知虚拟机管理器进行重新调度虚拟处理器操作。
(8)该阻塞式消息接收进程通过超级调用(hypercall)通知虚拟机管理器执行虚拟处理器的重新调度操作;
(9)虚拟机管理器执行虚拟处理器的重新调度操作;
(10)该阻塞接收进程处理接收到的消息
性能评测实例:
Xen虚拟机管理器中有两种可用的调度器:credit 和 SEDF。本发明采用这两种调度器的默认调度参数。本实例采用版本号为2.6.28-rc2的linux内核来启动测试平台以形成一个单处理器环境,该版本的linux内核并不支持对称多处理进程。单处理器环境与分配多个虚拟处理器到一个物理处理器的情况类似,因此可以通过测量两个基准程序进程之间的MPI通信性能并将其当作未使用虚拟化技术时原始的MPI通信性能(记作原始性能)。
测量虚拟机过度分配环境下的MPI通信性能时,我们考虑以下四种配置:
(1)credit调度器下虚拟机机间通信 虚拟化系统用credit 调度器,有两个物理处理器,两个非特权虚拟机,每个只有一个虚拟处理器,所有的虚拟处理器都绑定在物理处理器1上。测量这两个非特权虚拟机之间的MPI通信性能。
(2)SEDF调度器下虚拟机机间通信  除了调度器选择SEDF外,其余的与上同。
(3)credit调度器下虚拟机机内通信 虚拟化系统采用credit调度器,有两个物理处理器,一个非特权虚拟机有两个虚拟处理器,所有的虚拟处理器绑定到物理处理器1上,测量这个 非特权虚拟机内部的MPI通信性能。
(4)    SEDF调度器下虚拟机机内通信 除了调度器选择SEDF外,其余的与(3)同。
我们采用Beff来收集我们定义的过度分配配置下的通信性能数据,并将其与原始性能相比较。如图2、图3所示。在图2和图3中,标有前缀 “*”的数据表明是采用本发明之后的数据。从图2图3我们可以看出,与以前的数据相比较,采用了本发明后的通信性能提高很大:图2中对于credit调度器,在虚拟机机间通信情况下,性能大约提高300倍,在虚拟机机内通信情况下,性能大约提高700倍。从图2可以看出对于SEDF调度器,虚拟机机间通信情况下性能提高3倍,虚拟机机内通信情况下性能提高约是4倍。
由上述分析可以得知,在虚拟机过度分配环境下,根据通信模式以及过度分配严重性等不同的因素,本发明可以将通信性能提高不同的程度。另外,本发明并不依赖于虚拟机管理器中特定的调度算法,这也给虚拟机管理器中调度算法的改进提供了便捷性和适用性。
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。

Claims (1)

1.一种虚拟机过度分配环境下的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步 所述阻塞接收进程处理接收到的消息。
CN 201010290600 2010-09-26 2010-09-26 虚拟机过度分配环境下的mpi消息接收方法 Expired - Fee Related CN101968749B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010290600 CN101968749B (zh) 2010-09-26 2010-09-26 虚拟机过度分配环境下的mpi消息接收方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010290600 CN101968749B (zh) 2010-09-26 2010-09-26 虚拟机过度分配环境下的mpi消息接收方法

Publications (2)

Publication Number Publication Date
CN101968749A true CN101968749A (zh) 2011-02-09
CN101968749B CN101968749B (zh) 2013-01-02

Family

ID=43547909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010290600 Expired - Fee Related CN101968749B (zh) 2010-09-26 2010-09-26 虚拟机过度分配环境下的mpi消息接收方法

Country Status (1)

Country Link
CN (1) CN101968749B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890643A (zh) * 2012-07-26 2013-01-23 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
US8635615B2 (en) 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
CN104050030A (zh) * 2014-05-30 2014-09-17 汉柏科技有限公司 一种操作系统进程调度方法
CN104731662A (zh) * 2015-03-26 2015-06-24 华中科技大学 一种可变并行作业的资源分配方法
CN104991825A (zh) * 2015-03-27 2015-10-21 北京天云融创软件技术有限公司 一种基于负载感知的Hypervisor资源超分配及动态调整方法及系统
CN105204936A (zh) * 2015-09-30 2015-12-30 山东乾云启创信息科技有限公司 常驻进程管理通用平台及方法
CN103699449B (zh) * 2013-12-20 2017-01-18 北京遥测技术研究所 一种适用于监控mpi并行软件的通信方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162432A (zh) * 2006-10-10 2008-04-16 国际商业机器公司 管理与虚拟机的多个配置的通信的系统和方法
US20090307712A1 (en) * 2008-06-09 2009-12-10 Rex Young Actor virtual machine
CN101727351A (zh) * 2009-12-14 2010-06-09 北京航空航天大学 面向多核平台的虚拟机监控器非对称调度器及其调度方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162432A (zh) * 2006-10-10 2008-04-16 国际商业机器公司 管理与虚拟机的多个配置的通信的系统和方法
US20090307712A1 (en) * 2008-06-09 2009-12-10 Rex Young Actor virtual machine
CN101727351A (zh) * 2009-12-14 2010-06-09 北京航空航天大学 面向多核平台的虚拟机监控器非对称调度器及其调度方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635615B2 (en) 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
CN102890643A (zh) * 2012-07-26 2013-01-23 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
CN103699449B (zh) * 2013-12-20 2017-01-18 北京遥测技术研究所 一种适用于监控mpi并行软件的通信方法
CN104050030A (zh) * 2014-05-30 2014-09-17 汉柏科技有限公司 一种操作系统进程调度方法
CN104731662A (zh) * 2015-03-26 2015-06-24 华中科技大学 一种可变并行作业的资源分配方法
CN104731662B (zh) * 2015-03-26 2018-02-23 华中科技大学 一种可变并行作业的资源分配方法
CN104991825A (zh) * 2015-03-27 2015-10-21 北京天云融创软件技术有限公司 一种基于负载感知的Hypervisor资源超分配及动态调整方法及系统
CN104991825B (zh) * 2015-03-27 2019-07-05 北京天云融创软件技术有限公司 一种基于负载感知的Hypervisor资源超分配及动态调整方法及系统
CN105204936A (zh) * 2015-09-30 2015-12-30 山东乾云启创信息科技有限公司 常驻进程管理通用平台及方法

Also Published As

Publication number Publication date
CN101968749B (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
CN101968749B (zh) 虚拟机过度分配环境下的mpi消息接收方法
EP2701074B1 (en) Method, device, and system for performing scheduling in multi-processor core system
KR101057452B1 (ko) 스마트카드 임베디드 조작 시스템 및 작업처리 방법
CN101446910B (zh) 基于smp的高级最早期限优先算法任务调度方法
CN101246437B (zh) 一种嵌入式实时系统进程均衡调度方法
CN102455933B (zh) 一种通过线程管理提高多任务处理效率的方法
CN102253857B (zh) 一种多核环境下的Xen虚拟机调度控制方法
CN109684060B (zh) 一种多类型时间关键任务的混合调度方法
CN101894047A (zh) 一种基于内核虚拟机调度策略的实现方法
KR20110103257A (ko) 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
CN104572290A (zh) 消息处理线程的控制方法及装置
CN104915256A (zh) 一种任务的实时调度实现方法及其系统
CN103336714A (zh) 一种作业调度方法和装置
CN105550040A (zh) 基于kvm平台的虚拟机cpu资源预留算法
Gujarati et al. Outstanding paper award: Schedulability analysis of the linux push and pull scheduler with arbitrary processor affinities
CN111209046A (zh) 一种面向多任务处理的嵌入式sparc处理器操作系统设计方法
CN104598298A (zh) 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法
CN105204857A (zh) 一种基于“轮询式”多时间片精确调度的嵌入式控制系统设计方法
Qureshi Cpu scheduling algorithms: A survey
CN105373425A (zh) 一种嵌入式Linux系统性能优化的方法及装置
CN101126990A (zh) 基于硬件资源的多核多中央处理器的执行绪分配方法
CN100383743C (zh) Java操作系统中实时任务调度方法
Casini et al. Addressing analysis and partitioning issues for the Waters 2019 challenge
Alhussian et al. An unfair semi-greedy real-time multiprocessor scheduling algorithm
CN112860401A (zh) 任务调度方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130102

Termination date: 20150926

EXPY Termination of patent right or utility model