CN113076176A - 一种容器环境下的mpi应用性能优化方法及系统 - Google Patents
一种容器环境下的mpi应用性能优化方法及系统 Download PDFInfo
- Publication number
- CN113076176A CN113076176A CN202110366560.9A CN202110366560A CN113076176A CN 113076176 A CN113076176 A CN 113076176A CN 202110366560 A CN202110366560 A CN 202110366560A CN 113076176 A CN113076176 A CN 113076176A
- Authority
- CN
- China
- Prior art keywords
- container
- mpi
- parameters
- containers
- communication
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 101
- 238000005457 optimization Methods 0.000 title claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 65
- 238000004891 communication Methods 0.000 claims abstract description 41
- 238000001514 detection method Methods 0.000 claims abstract description 12
- 238000005516 engineering process Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种容器环境下的MPI应用性能优化方法及系统,该方法包括:接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器;记录并接管容器的启动过程,为每个位于同一物理主机上的容器子集申请共享的PID namespace、IPC namespace和共享内存;确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信。该系统包括:面向MPI的容器编排模块、面向Docker容器的组管理插件和面向MPI进程的局部性检测插件。通过使用本发明,实现提高容器环境下的MPI应用运行效率。本发明作为一种容器环境下的MPI应用性能优化方法及系统,可广泛应用于容器和高性能计算领域。
Description
技术领域
本发明涉及容器和高性能计算领域,尤其涉及一种容器环境下的MPI应用性能优化方法及系统。
背景技术
容器(Container)技术借助操作系统内核在资源管理和命名空间方面的特性,以微小的性能损失为代价,提供了轻量级的、隔离的操作系统环境,配合容器的镜像机制,可以在不同的物理机器之间实现软件栈的快速迁移和部署。目前容器技术已在各种规模的软件工程的研发、测试、部署等环节中有重要应用。
消息传递接口(Message Passing Interface,MPI)是高性能计算领域中使用最广泛的通信中间件,它的主要优势体现在通信效率方面,许多大型的科学计算软件都使用MPI作为底层通信组件。传统高性能计算的物理集群由成百上千台多核节点组成,MPI应用会根据使用的CPU核数创建对应数量的MPI进程,然后在进程间交换数据。在物理集群中,位于某一主机上的MPI进程会检测与识别其他MPI进程是否与其位于同一主机(位于同一物理主机上的进程称为共居进程),如果某两个进程是共居进程,那么二者在通信时会通过共享内存来交换数据;对于不在同一物理主机上的进程,二者的通信主要通过网卡来交换数据。共居进程之间的数据交换效率要大大高于非共居进程之间的数据交换效率。
随着高性能集群用户的需求越来越多样、现代大型科学计算软件的安装、配置、运行环境管理越来越复杂,在物理集群中维护软件环境变得非常棘手。容器技术在HPC环境下的应用因此受到越来越多的关注。然而,由于容器的隔离特性,每个容器中的进程都认为自己处于容器创造出来的“虚拟主机”中,即使两个容器运行在同一个物理主机上,容器中的MPI进程也无法检测和识别到其他容器中的MPI进程实际上是与自己在物理上共居的,从而导致位于同一物理主机上的不同容器内的MPI进程也会通过网卡来进行通信。经过测试,这种行为会大幅降低通信密集型的MPI应用的整体运行性能,浪费计算资源,拉低计算效率。
发明内容
为了解决上述技术问题,本发明的目的是提供一种容器环境下的MPI应用性能优化方法及系统,可以在高性能计算环境下启动基于容器的MPI作业,在充分利用容器技术便利性的同时,性能损失更小。
本发明所采用的第一技术方案是:一种容器环境下的MPI应用性能优化方法,包括以下步骤:
接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器;
记录并接管容器的启动过程,为每个位于同一物理主机上的容器子集申请共享的PID namespace、IPC namespace和共享内存;
确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信。
进一步,还包括:
输出结果并反馈至用户端。
进一步,所述接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器这一步骤,其具体包括:
接收来自用户端的描述参数并检查输入、输出、使用资源数量是否为有效参数;
确认到描述参数为有效参数,向集群作业调度器申请对应的物理资源;
资源获批后按照用户描述参数启动相应的容器。
进一步,所述描述参数包括MPI应用、作业的输入文件、作业的输出文件、作业要使用的总核数、容器数量和每个容器的进程数。
进一步,所述确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信这一步骤,其具体包括:
在MPI应用层面添加局部性检测层并调用局部性检测层的API,判断通信对端是否为共居进程;
判断到通信对端,将选择共享内存信道进行通信;
判断到通信对端为非共居进程,通过网络栈来通信。
本发明所采用的第二技术方案是:一种容器环境下的MPI应用性能优化系统,包括:
面向MPI的容器编排模块,检查参数的合法性,允许用户启动基于容器的MPI作业,为每个容器分配固定数量的资源,并在共居容器之间建立起共享内存信道;
面向Docker容器的组管理插件,用于分组管理容器,支持PID namespace与IPCnamespace的组内共享,记录并接管容器的启动过程;
面向MPI进程的局部性检测插件,用于MPI进程检测与识别共居容器以及共居进程,使MPI进程在与其他进程通信时选择效率最高的信道进行数据交换。
本发明方法及系统的有益效果是:本发明通过对共居容器间通信方案进行优化,提高容器环境下的MPI应用的运行效率,从而使得在高性能环境下通过容器技术管理、部署与运行MPI应用成为一种更加高效的技术方案。
附图说明
图1是本发明一种容器环境下的MPI应用性能优化方法的步骤流程图;
图2是本发明具体实施例Docker容器结构的示意图;
图3是本发明具体实施例启动基于容器的MPI作业的流程示意图;
图4是本发明一种容器环境下的MPI应用性能优化系统的结构框图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
本发明实施例描述了一种容器环境下的MPI应用性能优化方法,其目的在于通过对基于容器的MPI进程间通信效率进行优化,提高容器环境下的MPI应用运行效率。
图2是Docker容器结构的示意图,其实现基于Linux内核的namespace和cgroup特性,容器镜像本身依赖层次式的文件系统。一个独立的容器可以在内部安装应用与相关的依赖库,打包成镜像后即可在任一配置了Docker环境的系统中运行。
参照图1和图3,本发明提供了一种容器环境下的MPI应用性能优化方法,该方法包括以下步骤:
接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器;
记录并接管容器的启动过程,为每个位于同一物理主机上的容器子集申请共享的PID namespace、IPC namespace和共享内存;
确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信。
具体地,图3是本发明优化系统在高性能环境下启动基于容器的MPI作业的流程示意图。第一步,用户通过一组参数来描述要启动的MPI作业,参数包括要运行的MPI应用、作业的输入文件、作业的输出文件、作业要使用的总核数、容器数量、每个容器的进程数等,确定参数后,将其提交给面向MPI的容器编排模块,该模块首先检查参数的合法性,检查输入、输出、使用资源数量等是否为有效参数,接着由该模块向集群作业调度器申请对应的物理资源,资源获批后按照用户提供的参数启动相应的容器。第二步,在启动时,面向Docker容器的组管理插件会记录并接管容器的启动过程,与一般Docker容器的启动有所区别的是,启动这一组容器时,会为每个位于同一物理主机上的容器子集申请共享的PID namespace与IPC namespace,以便每个容器子集内的所有MPI进程具备利用共享内存互相通信的条件;另外,会为每个容器子集申请一块共享内存。以上步骤可在共居MPI进程之间建立起共享内存信道,做好底层的准备。最后,要使共居MPI进程感知到彼此,还需要在MPI层面进行修改,添加局部性检测层,MPI进程间通信前首先调用局部性检测层的API,判断通信对端是否为共居进程,如是,将选择共享内存信道进行通信,否则就通过网络栈来通信。确定信道后,MPI进程即使用相应的数据传输API来发送和接收数据。
进一步作为本方法的优选实施例,还包括:
输出结果并反馈至用户端。
进一步作为本方法的优选实施例,所述接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器这一步骤,其具体包括:
接收来自用户端的描述参数并检查输入、输出、使用资源数量是否为有效参数;
确认到描述参数为有效参数,向集群作业调度器申请对应的物理资源;
资源获批后按照用户描述参数启动相应的容器。
进一步作为本方法的优选实施例,所述描述参数包括MPI应用、作业的输入文件、作业的输出文件、作业要使用的总核数、容器数量和每个容器的进程数。
进一步作为本方法优选实施例,所述确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信这一步骤,其具体包括:
在MPI应用层面添加局部性检测层并调用局部性检测层的API,判断通信对端是否为共居进程;
判断到通信对端,将选择共享内存信道进行通信;
判断到通信对端为非共居进程,通过网络栈来通信。
Docker:容器引擎。容器技术通过借助Linux内核的namespace和cgroup特性,能够以较低的性能损失创建隔离的、可移植的操作系统级别的虚拟化环境。Docker是目前主流的容器方案,具有高效且鲁棒的运行时,生态系统也最为丰富。在高性能环境下使用Docker容器,可以在保证性能的前提下,简化科学计算应用的配置与部署流程。进一步地,还可以通过cgroup控制每个容器使用的CPU、内存等资源,从而实现对物理节点更细粒度的资源分割。
MPI:消息通信接口,是科学计算应用的主流中间件,提供了一种多进程的并行编程模型。MPI库包含一系列用于操作数据和进程间通信的API,通信方式包含点对点(Pointto Point,P2P)通信、集合(Collective)通信等。MPI是一个标准,目前使用较多的实现包括Open MPI、Intel MPI、MPICH等。MPI是一种多进程编程模型,一个MPI进程独占一个物理核心来运行。MPI进程之间的通信的具体方式可根据底层的可用信道来决定,从效率上来说,共享内存的效率最高,通过网络栈通信的效率最低。
共居容器与共居进程:指在物理上运行于同一主机中的容器,与之相反的是运行在不同物理主机上的容器。共居进程具有类似的定义。
如图4所示,一种容器环境下的MPI应用性能优化系统,包括:
面向MPI的容器编排模块,检查参数的合法性,允许用户启动基于容器的MPI作业,为每个容器分配固定数量的资源,并在共居容器之间建立起共享内存信道;
面向Docker容器的组管理插件,用于分组管理容器,支持PID namespace与IPCnamespace的组内共享,记录并接管容器的启动过程;
面向MPI进程的局部性检测插件,用于MPI进程检测与识别共居容器以及共居进程,使MPI进程在与其他进程通信时选择效率最高的信道进行数据交换。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (6)
1.一种容器环境下的MPI应用性能优化方法,其特征在于,包括以下步骤:
接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器;
记录并接管容器的启动过程,为每个位于同一物理主机上的容器子集申请共享的PIDnamespace、IPC namespace和共享内存;
确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信。
2.根据权利要求1所述一种容器环境下的MPI应用性能优化方法,其特征在于,还包括:
输出结果并反馈至用户端。
3.根据权利要求2所述一种容器环境下的MPI应用性能优化方法,其特征在于,所述接收来自用户端的描述参数并进行参数检查,申请对应的物理资源和请求启动相应的容器这一步骤,其具体包括:
接收来自用户端的描述参数并检查输入、输出、使用资源数量是否为有效参数;
确认到描述参数为有效参数,向集群作业调度器申请对应的物理资源;
物理资源获批后按照用户描述参数启动相应的容器。
4.根据权利要求3所述一种容器环境下的MPI应用性能优化方法,其特征在于,所述描述参数包括MPI应用、作业的输入文件、作业的输出文件、作业要使用的总核数、容器数量和每个容器的进程数。
5.根据权利要求4所述一种容器环境下的MPI应用性能优化方法,其特征在于,所述确认容器就绪,判断通信对端是否为共居进程,并按照预设规则进行MPI进程间通信这一步骤,其具体包括:
在MPI应用层面添加局部性检测层并调用局部性检测层的API,判断通信对端是否为共居进程;
判断到通信对端,将选择共享内存信道进行通信;
判断到通信对端为非共居进程,通过网络栈来通信。
6.一种容器环境下的MPI应用性能优化系统,其特征在于,包括:
面向MPI的容器编排模块,检查参数的合法性,允许用户启动基于容器的MPI作业,为每个容器分配固定数量的资源,并在共居容器之间建立起共享内存信道;
面向Docker容器的组管理插件,用于分组管理容器,支持PID namespace与IPCnamespace的组内共享,记录并接管容器的启动过程;
面向MPI进程的局部性检测插件,用于MPI进程检测与识别共居容器以及共居进程,使MPI进程在与其他进程通信时选择效率最高的信道进行数据交换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110366560.9A CN113076176B (zh) | 2021-04-06 | 2021-04-06 | 一种容器环境下的mpi应用性能优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110366560.9A CN113076176B (zh) | 2021-04-06 | 2021-04-06 | 一种容器环境下的mpi应用性能优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076176A true CN113076176A (zh) | 2021-07-06 |
CN113076176B CN113076176B (zh) | 2024-06-18 |
Family
ID=76615652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110366560.9A Active CN113076176B (zh) | 2021-04-06 | 2021-04-06 | 一种容器环境下的mpi应用性能优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076176B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107515782A (zh) * | 2017-07-26 | 2017-12-26 | 北京天云融创软件技术有限公司 | 一种Docker环境下容器跨主机迁移的实现方法 |
CN108694092A (zh) * | 2018-05-11 | 2018-10-23 | 华中科技大学 | 一种面向并行应用的容器通信方法和系统 |
US20200210479A1 (en) * | 2016-02-05 | 2020-07-02 | Sas Institute Inc. | Automated generation of job flow definitions |
-
2021
- 2021-04-06 CN CN202110366560.9A patent/CN113076176B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200210479A1 (en) * | 2016-02-05 | 2020-07-02 | Sas Institute Inc. | Automated generation of job flow definitions |
CN107515782A (zh) * | 2017-07-26 | 2017-12-26 | 北京天云融创软件技术有限公司 | 一种Docker环境下容器跨主机迁移的实现方法 |
CN108694092A (zh) * | 2018-05-11 | 2018-10-23 | 华中科技大学 | 一种面向并行应用的容器通信方法和系统 |
US20190349305A1 (en) * | 2018-05-11 | 2019-11-14 | Huazhong University Of Science And Technology | Container communication method and system for parallel applications |
Non-Patent Citations (3)
Title |
---|
NIKYLE NGUYEN ET AL.: "Distributed MPI Cluster with Docker Swarm Mode", 2017 IEEE 7TH ANNUAL COMPUTING AND COMMUNICATION WORKSHOP AND CONFERENCE(CCWC), 2 March 2017 (2017-03-02), pages 1 - 7 * |
张洋等: "MPI 系统中共享内存通信技术研究", 《现代电子技术》, no. 19, 31 December 2010 (2010-12-31), pages 179 - 182 * |
蒋艳凰等: "异构环境下MPI通信技术研究", 《小型微型计算机系统》, vol. 30, no. 9, pages 1724 - 1729 * |
Also Published As
Publication number | Publication date |
---|---|
CN113076176B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
US11429442B2 (en) | Parallel and distributed computing using multiple virtual machines | |
CN113243005A (zh) | 按需网络代码执行系统中的基于性能的硬件仿真 | |
US9086924B2 (en) | Executing a distributed java application on a plurality of compute nodes | |
Docan et al. | Enabling high‐speed asynchronous data extraction and transfer using DART | |
US8516487B2 (en) | Dynamic job relocation in a high performance computing system | |
US9619288B2 (en) | Deploying software in a multi-instance node | |
US20130103905A1 (en) | Optimizing Memory Copy Routine Selection For Message Passing In A Multicore Architecture | |
US20170109415A1 (en) | Platform and software framework for data intensive applications in the cloud | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及系统 | |
CN115292014A (zh) | 图像渲染方法、装置和服务器 | |
CN113162802A (zh) | 基于InfiniBand的通信方法、设备及存储介质 | |
US10579419B2 (en) | Data analysis in storage system | |
Harichane et al. | KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems | |
CN111459668A (zh) | 用于服务器的轻量级资源虚拟化方法及轻量级资源虚拟化装置 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
Perumalla et al. | Discrete event execution with one-sided and two-sided gvt algorithms on 216,000 processor cores | |
CN115543222B (zh) | 一种存储优化方法、系统、设备及可读存储介质 | |
CN113076176B (zh) | 一种容器环境下的mpi应用性能优化方法及系统 | |
CN110275771B (zh) | 一种业务处理方法、物联网计费基础设施系统及存储介质 | |
Guo et al. | Decomposing and executing serverless applications as resource graphs | |
CN114741165A (zh) | 数据处理平台的处理方法、计算机设备及存储装置 | |
Penchalaiah et al. | Clustered Single-Board Devices with Docker Container Big Stream Processing Architecture. | |
CN109634721B (zh) | 一种虚拟机与主机的启动通信方法及相关装置 | |
CN113254201A (zh) | 超算云计算平台化管理方法和管理平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |