CN102063330B - 一种大规模并行程序性能数据采集方法 - Google Patents
一种大规模并行程序性能数据采集方法 Download PDFInfo
- Publication number
- CN102063330B CN102063330B CN 201110001265 CN201110001265A CN102063330B CN 102063330 B CN102063330 B CN 102063330B CN 201110001265 CN201110001265 CN 201110001265 CN 201110001265 A CN201110001265 A CN 201110001265A CN 102063330 B CN102063330 B CN 102063330B
- Authority
- CN
- China
- Prior art keywords
- node
- performance data
- acquisition
- program
- acquisition node
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于负载均衡的大规模并行程序性能数据采集方法。该方法用于在高性能计算机中对大规模并行程序产生的性能数据进行分布式采集,并将数据保存至外存储器。该方法将高性能计算机中的节点分为了三种,即计算节点、采集节点和控制节点,包括步骤:利用负载均衡算法动态选择要使用的采集节点;在控制节点上通过工具对并行程序进行插桩和提交;收集并行程序的性能数据并将性能数据分布式发送至选出的采集节点;分布式接收和缓存从各计算节点传来的性能数据,并将性能数据写入外存储器。通过本发明能够提高并行程序性能数据采集的效率和可扩展性。
Description
技术领域
本发明可应用于高性能计算机系统中的大规模并行程序数据采集领域。
背景技术
随着高性能计算技术日益走向成熟,并行程序已经受到越来越多的人的关注和使用。目前高性能计算机的实际利用率很低,主要原因是并行程序中的任务调度不够合理和负载不平衡,使得大多数处理器处于空闲状态。如果没有必要的性能监测及可视化工具,程序员就很难监控并行程序的执行状况、通信状况、处理器的利用率等,从而不能准确定为算法的性能瓶颈。在这种情况下,并行程序性能评估工具的研制已成为近几年来的一个研究热点。
使用性能检测与分析工具需要对并行程序进行插桩,也就是说需要在并行程序的基础上加入探针来获取并行程序在运行时的性能数据。为了更好的对并行程序生成的性能数据进行分析,性能评估工具需要对这些性能数据进行统一采集,再结合各种数据分析方法对性能数据进行统一分析并反馈给用户。
传统的数据采集方法为集中式数据采集方法。这种通信方式直接把并行程序产生的性能数据存入外存储器,并对性能数据进行分析和显示。这种数据采集模型的优点是无需通信协议、实现方法简单,缺点是体系结构不可扩展,其采集效率会随着计算节点数的增多而有较大幅度的下降。如果并行程序运行在节点数众多的超级计算机上,这种数据采集模型的缺点就会显露出来:并行程序在不断产生性能数据的同时需要将性能数据写入外存储器。如果写外存储器的计算节点数众多,那么计算节点在文件系统操作上的冲突域将会增大,同时文件系统写文件的效率也会大大降低,从而可能导致并行程序由于等待写文件而停止生成性能数据,进而影响并行程序的正常运行。
发明内容
(一)发明目的
本发明的目的是提供一种基于负载均衡的大规模并行程序性能数据采集方法,其作用是在高性能计算机系统中对大规模并行程序产生的性能数据进行分布式采集,并将数据保存至外存储器。该模型可以降低计算节点在写文件时的冲突域,提高文件系统写文件的效率,从而减少数据采集过程对并行程序执行造成的影响。
(二)发明内容
一种大规模并行程序性能数据采集方法,包括步骤:
S1:在控制节点上根据并行程序所开启的进程数,利用负载均衡算法动态选择要使用的采集节点。
S2:在控制节点上通过工具对并行程序进行插桩和提交;
S3:在计算节点上执行并行程序,收集并行程序的性能数据并将性能数据分布式发送至步骤S1中选出的采集节点;
S4:在采集节点上分布式接收和缓存从各计算节点传来的性能数据,并将性能数据写入外存储器;
S5:当所有性能数据全部采集至外存储器后,控制节点负责对接收到的性能数据进行可视化显示。
其中,所述步骤S1包括:
S11:控制节点通过网络从各采集节点获取实时硬件信息;
S12:控制节点对各采集节点发送来的实时硬件信息进行加权计算;
S13:控制节点计算当前并行程序所使用的采集节点数量UseNum,即
UseNum=min(δProcNum,TotalNum)
其中,ProcNum表示并行程序所开启的进程数;δ表示模型中的采集节点总数与计算节点总数的比,并且0≤δ≤1;TotalNum表示系统中采集节点总数;min为最小值选取运算;
S14:控制节点对步骤S12中所有采集节点的加权值按照从小到大的顺序排列,并选出前UseNum个采集节点;
S15:控制节点根据步骤S14的结果和并行程序所开启的进程数,生成“计算节点-采集节点”映射表,并存储在外存储器中。
其中,所述步骤S3包括:
S31:计算节点运行并行程序并根据并行进程标号读取步骤S15中生成的“计算节点-采集节点”映射表,选出要使用的采集节点。
S32:计算节点为性能数据分配存储空间;
S33:当并行程序所产生的性能数据将存储空间占满时,计算节点将存储空间中的性能数据通过可靠网络传输至选出的采集节点;如果存储空间未满,则并行程序继续执行。
其中,所述步骤S4包括:
S41:采集节点监听从控制节点或者采集节点发送来的信息;
S42:采集节点根据接收到的信息的类型,决定该信息是属于从计算节点发来的性能数据还是从控制节点发来的硬件信息请求。如果是属于从计算节点发来的性能数据,则转步骤S43。如果是属于从控制节点发来的硬件信息请求,则转步骤S44;
S43:采集节点缓存该性能数据包,如果缓存未满,则直接转到步骤S41。如果缓存已满,则将缓存中的性能数据写入外存储器,再转到步骤S41;
S44:采集节点将控制节点请求的硬件信息发送回控制节点,然后转到步骤S41。
其中,所述性能数据是指记录并行程序中函数的执行时间以及并行程序所使用的硬件资源的向量。
其中,所述并行进程标号是用来唯一标识并行程序中每个进程的标识符。
一种基于上述方法的大规模并行程序性能数据采集系统,包括:
用于在计算节点上收集性能数据的采集代理模块和进程间通信模块;
用于在采集节点上接收和缓存性能数据的采集程序模块;
用于在控制节点上控制采集程序模块行为的采集程序控制模块;
用于在控制节点上实现负载均衡算法并生成“计算节点-采集节点”映射表的负载信息接收模块和采集节点选择模块;
用于在控制节点上对性能数据进行可视化显示的可视化模块;
(三)有益效果
使用本方法收集大规模并行程序的性能数据,具有如下优点:
1.冲突域降低。相比于传统的集中式数据采集方法,本方法在文件系统操作上的冲突域将会大大减小,由原来的所有计算节点对文件系统的操作改为部分采集节点对文件系统的操作,提高了文件系统的使用效率;
2.体系结构的可扩展性强。本方法可以根据并行程序的进程数动态决定采集节点的使用数量。当并行程序的进程数规模增大时,采集节点的规模也会随之增大。相比于传统的集中式数据采集方法,本方法更适用于大规模并行程序的数据采集;
3.采集节点的负载均衡。本方法利用负载均衡算法动态选择采集节点,该算法可以根据采集节点的实时情况动态选择并行程序要使用的采集节点,避免了某个采集节点负载过重的情况。
附图说明
图1是根据本方法的基于负载均衡的大规模并行程序性能数据采集方法流程图;
图2是图1中步骤S1的流程图;
图3是图1中步骤S4的流程图;
图4是根据本方法的大规模并行程序性能数据采集系统的逻辑结构图;
图5是根据本方法的大规模并行程序性能数据采集系统的功能模块图;
图6是本方法中计算节点向采集节点发送的性能数据包的结构图。
具体实施方式
本方法是一种基于负载均衡的大规模并行程序性能数据采集方法。参见图3所示,该方法将高性能计算机中的节点分为了三种,即计算节点、采集节点和控制节点。在高性能计算机系统中,可以把计算能力强的节点作为计算节点,把IO吞吐率高的节点作为采集节点,把高性能计算机系统中的具有运算能力的控制台作为控制节点。如果各节点计算和IO吞吐率大致相同,则可以在采集节点数量不超过计算节点数量的前提下随意分配。计算节点与采集节点之间要传送性能数据,因此两者之间的网络通信需要通过可靠的传输协议来实现,例如TCP协议、可靠UDP协议等。采集节点和控制节点之间传递的是控制信息和硬件即时信息,因此可以通过非可靠的UDP来实现。采集节点和控制节点对外存储器的读写可以通过操作系统提供的API来实现。
参见图4所示,该模型的计算节点中包括有采集代理模块,进程间通信模块;采集节点中包括有采集程序模块;控制节点中包括有采集程序控制模块,负载信息接收模块、采集节点选择模块和性能数据可视化模块。各节点中的操作系统和运行时环境可以根据需要自行配置。
下面将结合附图,对模型的工作流程进行详细说明:
如图1所示:
S1:在控制节点上,根据并行程序所开启的进程数,利用负载均衡算法动态选择采集节点。其中并行程序所开启的进程数可以通过MPI_Comm_size函数来获取。图2示出了S1的实际步骤如下:
S11:控制节点通过网络从各采集节点获取实时硬件信息。
步骤S11中,控制节点可以从各采集节点收到具有Conn,CpuRate,MemRate信息的三元组Msg,并保存在控制节点生成的数组中;其中Conn代表系统连接数,取值范围是[0,MaxConn];MaxConn代表操作系统所允许的最大连接数;CpuRate代表CPU利用率,取值范围是[0,1];MemRate代表内存利用率,取值范围是[0,1]。
S12:控制节点对各采集节点发送来的实时硬件信息进行加权计算。即,
其中,Tn代表从第n个采集节点上收集到的Msg加权后的值;α,β,γ代表加权系数,且有0≤α≤1,0≤β≤1,0≤γ≤1,α+β+γ=1,α,β,γ可根据不同的情况进行灵活设置。经过加权计算后,控制节点可以保持一个二元组集合T,记为
T={<IPn,Tn>|1≤n≤TotalNum}
其中,IPn代表第n个采集节点的IP地址,TotalNum表示模型中的采集节点总数。
S13:控制节点计算当前并行程序所使用的采集节点数量UseNum,即
UseNum=min(δProcNum,TotalNum)
其中,ProcNum代表并行程序所开启的进程数;δ代表模型中的采集节点总数与计算节点总数的比,并且0≤δ≤1;TotalNum代表系统中采集节点总数;min为最小值选取运算;
S14:控制节点对集合T中的Tn值按照从小到大的顺序排列,并选出排序后的前UseNum个二元组,记为二元组集合T′,那么
T′={<IPi,T′i>|1<i<UseNum}
其中,T′i代表对集合T中的Tn值按照从小到大的顺序排列后的第i个加权值,IPi为T′i相应的IP地址。
S15:控制节点可以根据T′中描述的实际负载情况,分配IP地址为IPi的采集节点应管理的并行程序的范围,记为二元组集合T″,那么
其中,T″中每个元组的第二个字段代表IP地址为IPi的采集节点要管理的并行程序的最大进程号。
控制节点根据T″的结果生成最终的计算节点与采集节点之间的映射表。假设m代表第m个并行程序的进程,那么控制节点在T″中进行遍历,寻找第一个第二字段大于等于m的二元组,并记录下其IPi值。这样最终的映射表为
Table={<m,IPi>|1≤m≤ProcNum,1≤i≤UseNum}
该映射表被保存在外存储器中,并且可以被所有计算节点访问。这里通过配置NFS使得所有计算节点可以访问该映射表。
S2:在控制节点上,通过工具对并行程序进行插桩和提交。
步骤S2中,作业提交系统可以使用Torque,经过作业提交后的并行进程运行在计算节点上。并行程序生成性能数据的方法可以通过插桩工具来实现,插桩工具可以使用TAU。
S3:在计算节点上执行并行程序,收集并行程序的性能数据并将性能数据分布式发送至步骤S1中选出的采集节点。S3的具体步骤如下:
S31:计算节点运行并行程序并根据该并行程序的标号读取步骤S15中生成的“计算节点-采集节点”映射表;
步骤S31中,该并行程序的标号可以使用MPI组中的标识号,即调用MPI_Comm_rank函数来获取。
S32:计算节点为性能数据分配存储空间;
S33:当并行程序所产生的性能数据将存储空间占满时,计算节点将存储空间中的性能数据通过可靠网络传输至选出的采集节点,即并行程序根据自己在MPI组中的标识号选择某一个采集节点,然后激活计算节点上的采集代理模块并将性能数据通过进程间通信模块发送至采集代理模块,最后采集代理模块通过可靠网络传输至选出的采集节点;如果存储空间未满,则并行程序继续执行。
步骤S33中,采集代理模块通过可靠网络传输把性能数据以包的形式传输至选出的采集节点,包的格式参见图6所示,包的前0-7位为包的标识字段,主要记录包的类型以及包中数据的附加信息。8-23位为包中性能数据的长度字段,24-31位保留。进程号代表发送该包的应用进程在MPI组中的标识号。计算节点IP地址代表发送该包的应用进程所在的计算节点的IP地址。文件名代表性能数据所属文件的文件名。文件保存路径代表性能数据所属文件在外存储器中的保存位置。最后性能数据为当前并行进程所要发送的性能数据,长度可变。
S4:在采集节点上分布式接收和缓存从各计算节点传来的性能数据,并将其写入外存储器。S4的具体步骤如下:
S41:采集节点监听从控制节点或者采集节点发送来的信息;
S42:采集节点根据接收到的信息的类型,决定该信息是属于从计算节点发来的性能数据还是从控制节点发来的硬件信息请求。如果是属于从计算节点发来的性能数据,则转步骤S43。如果是属于从控制节点发来的硬件信息请求,则转步骤S44;
S43:采集节点缓存该性能数据包,如果缓存未满,则直接转到步骤S41。如果缓存已满,采集程序根据包中指明的存储路径和文件名将性能数据存入外存储器。再转到步骤S41;
S44:采集节点将控制节点请求的硬件信息发送回控制节点,然后转到步骤S41。
步骤S44中,控制节点请求的硬件信息可以通过Linux下的top命令获取。
S5:当所有性能数据全部采集至外存储器后,控制节点通过采集程序控制模块关闭采集节点上的采集程序模块并通过性能数据可视化模块对接收的数据进行可视化显示。
Claims (6)
1.一种大规模并行程序性能数据采集方法,其特征在于,包括步骤:
S1:在控制节点上根据并行程序所开启的进程数、采集节点总数和采集节点的实时硬件信息加权值动态生成“计算节点-采集节点”映射表,并存储在外存储器中;所述步骤S1的具体内容包括:
S11:控制节点通过网络从各采集节点获取实时硬件信息;
S12:控制节点对各采集节点发送来的实时硬件信息进行加权计算;
S13:控制节点计算当前并行程序所使用的采集节点数量UseNum,即
UseNum=min(δProcNum,TotalNum)
其中,ProcNum表示并行程序所开启的进程数;δ表示模型中的采集节点总数与计算节点总数的比,并且0≤δ≤1;TotalNum表示系统中采集节点总数;min为最小值选取运算;
S14:控制节点对步骤S12中所有采集节点的加权值按照从小到大的顺序排列,并选出前UseNum个采集节点;
S15:控制节点根据步骤S14的结果和并行程序所开启的进程数,生成“计算节点-采集节点”映射表,并存储在外存储器中;
S2:在控制节点上通过工具对并行程序进行插桩和提交;
S3:在计算节点上执行并行程序,收集并行程序的性能数据并将性能数据分布式发送至步骤S1中选出的采集节点;
S4:在采集节点上分布式接收和缓存从各计算节点传来的性能数据,并将性能数据写入外存储器;
S5:当所有性能数据全部采集至外存储器后,控制节点负责对接收到的性能数据进行可视化显示。
2.如权利要求1所述的方法,其特征在于,所述步骤S3包括:
S31:计算节点运行并行程序并根据并行进程标号读取步骤S1中生成的“计算节点-采集节点”映射表,选出要使用的采集节点;
S32:计算节点为性能数据分配存储空间;
S33:当并行程序所产生的性能数据将存储空间占满时,计算节点将存储空间中的性能数据通过可靠网络传输至选出的采集节点;如果存储空间未满,则并行程序继续执行。
3.如权利要求1所述的方法,其特征在于,所述步骤S4包括:
S41:采集节点监听从计算节点或者控制节点发送来的信息;
S42:采集节点根据接收到的信息的类型,决定该信息是属于从计算节点发来的性能数据还是从控制节点发来的硬件信息请求;如果是属于从计算节点发来的性能数据,则转步骤S43;如果是属于从控制节点发来的硬件信息请求,则转步骤S44;
S43:采集节点缓存从计算节点发来的性能数据,如果缓存未满,则直接转到步骤S41;如果缓存已满,则将缓存中的性能数据写入外存储器,再转到步骤S41;
S44:采集节点将控制节点请求的硬件信息发送回控制节点,然后转到步骤S41。
4.如权利要求1-3任一所述的方法,其特征在于,所述性能数据是指记录并行程序中函数的执行时间以及并行程序所使用的硬件资源的向量。
5.如权利要求2所述的方法,其特征在于,所述并行进程标号是用来唯一标识并行程序中每个进程的标识符。
6.一种基于权利要求1所述方法的大规模并行程序性能数据采集系统,其特征在于,包括:
用于在计算节点上收集性能数据的采集代理模块和进程间通信模块;
用于在采集节点上接收和缓存性能数据的采集程序模块;
用于在控制节点上控制采集程序模块行为的采集程序控制模块;
用于在控制节点上生成“计算节点-采集节点”映射表的负载信息接收模块和采集节点选择模块;
用于在控制节点上对性能数据进行可视化显示的可视化模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110001265 CN102063330B (zh) | 2011-01-05 | 2011-01-05 | 一种大规模并行程序性能数据采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110001265 CN102063330B (zh) | 2011-01-05 | 2011-01-05 | 一种大规模并行程序性能数据采集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063330A CN102063330A (zh) | 2011-05-18 |
CN102063330B true CN102063330B (zh) | 2013-04-24 |
Family
ID=43998616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110001265 Expired - Fee Related CN102063330B (zh) | 2011-01-05 | 2011-01-05 | 一种大规模并行程序性能数据采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063330B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188306B (zh) * | 2011-12-30 | 2016-04-27 | 中国移动通信集团公司 | 分布式预处理方法和系统 |
CN102609351B (zh) * | 2012-01-11 | 2015-12-02 | 华为技术有限公司 | 用于分析系统的性能的方法、设备和系统 |
CN103077080B (zh) * | 2013-01-07 | 2015-08-12 | 清华大学 | 基于高性能平台的并行程序性能数据采集方法及装置 |
CN103491197B (zh) * | 2013-10-12 | 2016-08-10 | 北京海联捷讯信息科技发展有限公司 | 分布式自动巡检系统及其资源收集方法 |
CN104750544B (zh) * | 2013-12-30 | 2018-09-04 | 中国银联股份有限公司 | 应用于分布式系统中的进程管理系统及进程管理方法 |
CN104317657B (zh) * | 2014-10-17 | 2017-12-26 | 深圳市川大智胜科技发展有限公司 | 实时交通流量统计中均衡统计任务的方法及装置 |
CN105516016B (zh) * | 2015-11-25 | 2018-05-11 | 北京航空航天大学 | 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 |
CN107357639B (zh) * | 2016-05-09 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 一种分布式处理系统、数据处理的方法及设备 |
CN107423203A (zh) * | 2017-04-19 | 2017-12-01 | 浙江大学 | 非侵入式Hadoop应用性能分析装置和方法 |
CN107480038B (zh) * | 2017-08-28 | 2020-07-28 | 北京翼辉信息技术有限公司 | 实时操作系统的性能分析方法 |
CN107994943B (zh) * | 2017-12-05 | 2020-04-10 | 中盈优创资讯科技有限公司 | 参数采集系统、方法及计算机可读存储介质 |
CN111830039B (zh) * | 2020-07-22 | 2021-07-27 | 南京认知物联网研究院有限公司 | 一种智能化的产品质量检测方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US6507903B1 (en) * | 2000-06-20 | 2003-01-14 | International Business Machines Corporation | High performance non-blocking parallel storage manager for parallel software executing on coordinates |
-
2011
- 2011-01-05 CN CN 201110001265 patent/CN102063330B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102063330A (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102063330B (zh) | 一种大规模并行程序性能数据采集方法 | |
Liu et al. | Adaptive asynchronous federated learning in resource-constrained edge computing | |
US10114682B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
CN101460923B (zh) | 用于在m核处理器上操作n核应用程序的虚拟机 | |
US8055649B2 (en) | Scaled management system | |
EP3857381B1 (en) | Collecting samples hierarchically in a datacenter | |
US7739331B2 (en) | Method and apparatus for providing load diffusion in data stream correlations | |
CN103067297B (zh) | 一种基于资源消耗预测的动态负载均衡方法及装置 | |
CN102521014B (zh) | 虚拟机的部署方法及装置 | |
Zhou et al. | Falcon: Addressing stragglers in heterogeneous parameter server via multiple parallelism | |
CN103995735A (zh) | 用于调度工作流作业的设备和方法 | |
CN102340489B (zh) | 一种服务器之间的数据传输方法和服务器 | |
US20090006071A1 (en) | Methods for Definition and Scalable Execution of Performance Models for Distributed Applications | |
CN105094981B (zh) | 一种数据处理的方法及装置 | |
Li et al. | An improved algorithm for optimizing MapReduce based on locality and overlapping | |
Liu et al. | Yarnsim: Simulating hadoop yarn | |
WO2022212415A1 (en) | On-chip interconnect for memory channel controllers | |
Saxena et al. | Modeling data backups as a batch-service queue with vacations and exhaustive policy | |
US20230280996A1 (en) | Application hosting, monitoring, and management within a container hosting environment | |
CN114201306A (zh) | 基于负载均衡技术的多维地理空间实体分布方法及系统 | |
Suetterlein et al. | Asynchronous runtimes in action: An introspective framework for a next gen runtime | |
Yang et al. | A workflow-based computational resource broker with information monitoring in grids | |
Shinozaki et al. | A high performance simulator system for a multiprocessor system based on a multi-way cluster | |
Wu et al. | ARES: A scalable high-performance passive measurement tool using a multicore system | |
US20240028397A1 (en) | Computational resource allocation advisor for elastic cloud databases |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130424 Termination date: 20140105 |