CN103593192B - 一种基于slurm调度的算法集成与评测系统及方法 - Google Patents

一种基于slurm调度的算法集成与评测系统及方法 Download PDF

Info

Publication number
CN103593192B
CN103593192B CN201310585227.2A CN201310585227A CN103593192B CN 103593192 B CN103593192 B CN 103593192B CN 201310585227 A CN201310585227 A CN 201310585227A CN 103593192 B CN103593192 B CN 103593192B
Authority
CN
China
Prior art keywords
file
module
scheduling
algorithm
slurm
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.)
Active
Application number
CN201310585227.2A
Other languages
English (en)
Other versions
CN103593192A (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.)
Hunan University
Original Assignee
Hunan University
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 Hunan University filed Critical Hunan University
Priority to CN201310585227.2A priority Critical patent/CN103593192B/zh
Publication of CN103593192A publication Critical patent/CN103593192A/zh
Application granted granted Critical
Publication of CN103593192B publication Critical patent/CN103593192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于SLURM调度的算法集成与评测平台及方法,该平台包括封装模块、调度接口模块、上传下载模块、编译模块、算法集成模块及算法性能统计模块。在SLURM中心守护进程和监控进程运行过程中,利用该平台用户可动态的进行调度方法集成。当用户使用该平台的时候,只需要了解平台封装模块下提供的公共变量、结构体以及基础函数库文件,实现平台对外的两个子函数接口网上提交至服务器即可,无需关心该软件其它部分的源码以及平台中各个模块的协作关系,使SLURM开发人员或者高性能计算用户更方便的集成各自的调度算法而忽略对该软件其它模块源码的研究,在真实的环境下检测算法的性能、灵活运用各种调度算法。

Description

一种基于SLURM调度的算法集成与评测系统 及方法
技术领域
本发明涉及一种基于SLURM调度的算法集成与评测平台及方法。
背景技术
SLURM是一个针对不同大小Linux集群的资源管理和调度软件。它主要提供三个方面的功能:首先,它为用户提供了一种以独占或者非独占的方式使用计算资源一定时间的机制,用以在相应的时间内为用户运行作业;其次,它提供了一套启动、执行及监控分配在计算节点上作业的框架,主要是方便用户实时的了解提交作业的运行情况;最后,它实现了对排队作业资源竞争的管理。
SLURM是非常模块化的设计,包括数十个可选的插件。它最简单的配置中,可以在几分钟之内安装完成,而更复杂的配置可以依赖于以MySQL等数据库来对作业记录、作业管理以及资源限制条件进行归档,同时,它还支持更复杂的作业优先权调度算法。目前,世界上已经有很多的超算机构使用SLURM来对资源和作业进行管理,其中著名的有Tianhe-1A、Tera100、Dawn、Rosa、EKA等。总的来说,SLURM主要包括资源管理模块和作业调度模块。
资源管理模块主要负责对系统资源进行管理、分配和收集,在主控制节点上会有中心守护进程(slurmctld)驻留,而在计算节点上会有监控进程(slurmd)驻留。slurmd调用相应的资源收集信息函数,收集本地资源信息。初始时,次节点守护进程向中心守护进程发送信息注册,之后主控进程(slurmctld)定期的向次节点进行询问以便了解整个系统的情况。
作业调度模块则根据系统资源的当前状况对作业队列进行调度,而调度方法主要采用插件的机制进行集成。作业调度模块可以动态的根据资源管理模块提供的当前资源状态信息,如License使用情况、处理器负载、应用系统负载等信息,用一种或多种调度算法决定将作业分发到哪个节点上进行计算。作业调度模块主要分为两部分,一是对作业队列进行调度,即如何选择作业队列中的作业;二是将选择的作业分发到合适的计算节点,以便充分利用资源的同时又能提高作业的运行效率。因此,如何使该软件的调度模块具有更强的灵活性,丰富该模块的算法是一个很重要的问题。
现有的SLURM调度模块插件机制虽然有一定的灵活性,但也有诸多不足:
一方面,软件开发人员或者用户在对SLURM软件的调度模块中集成自己的算法时需要做很多与该模块相关的工作。如,需要剖析与该模块相关的其它模块的源码、分析该模块在SLURM总体架构中的位置、从现有的SLURM软件中提取出公共的结构体和重要的全局变量等。对于熟悉该软件的开发人员来说可能不是一件很难的事,然而,对于普通的应用SLURM 软件的人员来说就不方便集成自己的算法,极大的限制了相关人员集成算法的想法。
另一方面,原有的插件机制虽然很灵活,但也需要剖析该软件的源码,将方法静态的加入该软件中。不能动态的使用相关的其它调度算法,也不能测试算法的性能。在一定程度上难以丰富该模块中的算法,也难以对相关的调度算法在真实的环境中的性能进行评测和比较。
总的来说,对于只想应用SLURM软件的用户来说,在模块中集成自己的算法或在真实的环境下评测自己调度算法的性能使用不便。
发明内容
本发明提供了一种基于SLURM调度的算法集成与评测平台及方法,其目的在于克服现有技术中,使用采用该SLURM软件集成算法时不方便,无法直接对算法进行性能检测的问题。
一种基于SLURM调度的算法集成与评测平台,包括封装模块、上传下载模块、调度接口模块、编译模块、算法集成模块及算法性能统计模块;
所述的算法集成与评测平台运行在计算机集群环境中,所述计算机集群是指包含多台装有Linux操作系统且安装有SLURM软件的计算机;
所述上传下载模块,用于将平台使用者自行编写的子函数接口源码文件上传至服务器;以及用于使用者从服务器下载封装模块;
所述服务器是指计算机集群中的一台计算机;
所述封装模块是指封装好的头文件或动态链接库文件;
所述调度接口模块,包括两部分:第一部分是该平台设计者对调度API接口定义的编码框架模版文件;第二部分是调度接口文件整合程序;
所述调度接口文件整合程序的作用是利用Linux的sed指令将编码框架模板文件中的算法名称更改为使用者指定的名称,形成新的调度文件;以及利用Linux的cat指令将形成的新的调度文件与使用者上传的源码文件进行融合,形成完整的调度API接口文件;
当平台使用者上传源码文件后,运行调度接口文件整合程序,自动将新的调度文件和源码文件的内容整合成完整的调度API接口文件;
所述编译模块,用于编译上传至服务器后经调度接口整合程序整合后的源码文件以生成可执行文件并存储到设定的服务器设定的文件夹下;
所述算法集成模块,在Linux服务器上运行一个算法集成脚本文件,该脚本文件将生成的新的可执行文件分发到集群的各个节点,同时在各个节点上重新启动调度进程;
所述算法集成脚本文件的功能是:首先从SLURM集群配置文件slurm.conf中读取集群中各个节点的主机名和IP信息,接着将编译模块生成的可执行文件通过Linux的scp指令按照 读取的IP信息复制到集群中的各个节点,最后利用Linux下的ssh指令重启各个节点的调度进程;
所述算法性能统计模块的作用是:在中心控制进程设置两个计数器,分别记录单位时间内作业的到达数目和单位时间内作业的完成数目;利用slurm已有的指令sacct查看各个作业的起止执行时间,各个作业运行分配的节点以及cpu的利用率,以及cpu的实时温度,完成算法的调度性能指标的统计。
所述封装好的头文件中包括slurm源码中的全局变量List job_list、List part_list及int32_t bitstr_t;slurm源码中的结构体struct job_record、struct job_details、struct list、struct listIterator、struct part_record及struct job_queue_rec,以及这六个结构体的子结构体;
所述封装好的动态链接库包括SLURM源码中的三类函数:1)函数名当中带有字符串list的函数;2)函数的参数当中带有struct job_record或bitstr_t字段的函数;3)函数名当中带有字段job_record或part_record的函数。
还包括显示模块,所述封装模块、上传下载模块、调度接口模块、编译模块、算法集成模块及算法性能统计模块均与显示模块相连,用于设计者与平台各模块之间进行GUI交互。
一种基于SLURM调度的算法集成与评测方法,采用上述的基于SLURM调度的算法集成与评测平台,所述方法包括以下步骤:
步骤1:平台使用者从计算机集群中下载所需的封装好的头文件和动态链接库文件;
步骤2:利用步骤1获得的头文件和动态链接库文件完成作业排序函数sort_job_queue3()和预调度函数_try_sched()的源码文件的编写,并调用上传下载模块将写好的源码文件上传至服务器;
所述作业排序函数,是对作业队列中的作业进行排序,即指定作业调度的次序;
所述预调度函数是获得运行每个作业的节点名,即计算机名;
步骤3:平台的调度接口文件整合程序将上传的源码和已经存在的模版文件整合形成完整的调度API源码文件;
步骤4:所述编译模块对步骤3得到的调度API源码进行编译形成新的可执行文件,并利用算法集成模块将新的可执行文件分发到集群的各个节点,然后重启调度程序;
步骤5:算法性能统计模块中的测试程序统计算法的调度性能指标,调度性能指标包括单位时间内作业的到达数目和单位时间内作业的完成数目;各个作业的起止执行时间,各个作业运行分配的节点以及cpu的实时利用率,以及cpu的实时温度。
有益效果
与传统仅有的插件机制相比,集成平台及评测方法增强了调度方法集成的灵活性。在该平台下,不仅SLURM软件的开发人员可以方便的集成算法,而且对于只想使用SLURM而不想剖析该软件其它模块源码的普通用户也很方便。另一方面,该平台包括在线编译模块,用户将调度算法API实现后只需提交源码,系统将自动的对源码进行评测、编译、生成可执行文件。通过平台的集成模块将生成的可执行文件发送到Linux集群的各个计算节点,在真实的环境下运用新增的调度算法。与此同时,还可对算法的性能进行评测,在丰富调度模块的同时又可对相关的算法进行对比。
该平台提供的封装模块,封装有全局变量、结构体以及3类函数,以库的形式提供给使用者。这些库的提供,一方面能方便使用者了解SLURM软件现有的基础;另一方面也为使用者实现调度算法API时提供了一定的帮助。
平台提供的用户需要实现的调度算法API接口的两个子函数接口,使用者可以在只了解封装模块的基础上实现这两个子函数,而不需要剖析其它SLURM源码(如,资源管理模块的源码)。子函数接口部分就是使用者自己的算法思想实现部分,在实现过程中使用者可以使用封装模块中已有的全局变量,如全局任务队列指针、全局分区队列指针、全局节点队列指针等,也可使用封装模块中的函数如List的创建、List迭代器使用等等。
平台提供的在线评测模块,可以及时方便的对用户的调度方法进行集成。在用户初始提交的源码检测通过后,平台对源码进行编译生成可执行文件,然后,通过该平台的集成模块将生成的可执行文件分发到集群的各个节点。在真实的环境下运用用户新增的调度算法,同时检测算法的调度性能。
通过上述的算法集成与评测平台,可以极大的简化集成调度算法的难度,同时又可丰富调度模块的性能。
附图说明
图1为算法集成评测平台架构图;
图2为SLURM现有功能图;
图3为修改的调度模块对比图;
图4为SLURM集群及Web服务器图;
图5为使用者具体交互展示图;
图6为上传下载流程图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
一种基于SLURM调度的算法集成与评测平台,包括封装模块、上传下载模块、调度接口模块、编译模块、算法集成模块及算法性能统计模块;如图1所示:
所述的算法集成与评测平台运行在计算机集群环境中,所述计算机集群是指包含多台装有Linux操作系统且安装有SLURM软件的计算机;
所述封装模块,用于该平台使用者编写调度API接口时从SLURM源码中选用的全局变量及结构体封装成头文件,而将部分函数封装成动态链接库;
(1)封装模块中的头文件,包括SLURM源码中的全局变量List job_list、List part_list及int32_t bitstr_t;slurm源码中的结构体struct job_record、struct job_details、struct list、struct listIterator、struct part_record及struct job_queue_rec,以及这六个结构体的子结构体;
(2)封装模块中的动态链接库文件,包括SLURM源码中的三类函数:1)函数名当中带有字符串list的函数;2)函数的参数当中带有struct job_record或bitstr_t字段的函数;3)函数名当中带有字段job_record或part_record的函数。
如图2所示,SLURM主要包括调度模块和资源管理模块,在使用者实现自己的调度算法时不需要看资源管理模块(如,节点管理、作业管理、分区管理)的源码,也不需要看调度模块与资源管理模块衔接部分的源码,而只需要了解平台的封装模块,从而极大的简化了使用者集成算法时所要看的源码量,也减少了使用者集成算法时要编写的源码量。
所述调度接口模块,包括两部分:第一部分是该平台设计者对调度API接口定义的编码框架模版文件;第二部分是调度接口文件整合程序;
(1)调度API接口的固有编码框架部分,定义的调度API接口编码框架模版文件包括template.h、template.c,这两个文件存放在服务器目录/TemplateSource/下:
template.h包含三个函数extern void*template_agent(void*args);extern void stop_template_agent(void);extern void template_reconfig(void)的声明,其中最关键的是template_agent()函数,它周期性的调用template.c中实现的具体调度函数_attempt_algorithm(void),用来将作业分派到某些具体的计算节点并执行。该模版文件的代码如下template.h所示。
temp_agent():中文名称:调度算法代理函数,里面主要是包括一个while循环,用来周期性的调用调度算法。stop_template_agent():中文名称:终止调度算法代理函数,里面只有一条语句stop_template=true,即如果要终止调度算法则将stop_template的值设为真。template_reconfig():中文名称:重配置函数,里面只有一条语句config_flag=true,即如果发 现配置文件slurm.conf已经修改,则调用该函数,即将config_flag值设为真。
template_reconfig()(中文名称:重配置函数)函数主要是用来重置监控配置文件修改变量的值。里面只有一句代码config_flag=true;如果进程发现配置文件slurm.conf已经修改,则调用该函数,即设置变量config_flag值为真;
stop_template_agent()(中文名称:终止调度算法代理函数),该函数功能与template_reconfig类似,也是重新设置变量stop_template的值(stop_template=true),在设置该值之前需要申请资源锁。它主要是用来终止template_agent()函数。
template_agent()函数(中文名称:调度算法代理函数)主要是周期性的调用即将介绍的调度算法函数_attempt_algorithm(void),该函数首先会重读配置文件slurm.conf,然后检查当前的时间now与上一次调度时的时间last_template_time的差值wait_time(wait_time=difftime(now,last_template_time))是否小于template_interval(可以理解成调度区间)。如果小于这个值则该函数调用休眠函数sleep()等待一定的时间,否则,调用调度算法函数int_attempt_algorithm(void)。其中,关键性的代码就是一个while循环,即while(_attempt_algorithm());调用该函数直到调度算法函数_attempt_algorithm()返回成功为止。如此周期性的循环就构成了该调度算法代理函数框架。
template.c文件包含了template.h中三个函数的实现,这三个函数都有固定的编码模式。除此之外,template.c文件中还包括一个函数的实现调度算法函数int_attempt_algorithm(void),如上所述这个函数被调度算法代理函数template_agent(void*args)周期性的调用。实现的int_attempt_algorithm(void)是设计者根据多个现有的SLURM调度方法总结抽象出的通用编码部分的编码模式,其关键性的代码编写框架如下所示:
template.c文件中首先为将要调度的多个作业建立一个队列job_queue=build_job_queue(true);。然后,确定调度的次序,关键的是作业排序函数sort_job_queue3。最后按照得到的次序为一个个的作业分配计算节点,这一步又可分两个小步骤:
1)首先检查在剩余的所有节点中符合这个作业要求的节点由哪些(与template.c中的j=job_test_resv(job_ptr,&start_res,true,&avail_bitmap);对应)。即由avail_bitmap的值得到这个作业可以使用哪些计算节点。
2)从第1步中得到了该作业可以使用哪些节点,那么进一步就是具体使用哪些节点(使目标达到优化,如缩短作业运行时间),这就与template.c中的j=_try_sched(job_ptr,&avail_bitmap,min_nodes,max_nodes,req_nodes);相对应。在该函数中avail_bitmap既作为函数的输入又作为函数的输出,作为输入时是经过1中的函数所得的结果(即该作业可以使用那些节点),作为输出时就是考虑优化后对该作业分配的节点。
(2)需要使用者自己实现的两个子函数部分,在_attempt_algorithm(void)函数中需要调用两个子函数,即排序函数sort_job_queue3和预调度函数_try_sched(job_ptr,&avail_bitmap,min_nodes,max_nodes,req_nodes);前者主要用来指定对整个作业队列中的作业进行排序(即指定作业调度的次序),后者主要是指定对具体的某个作业分配到哪些计算节点。
(3)当使用者上传了自己实现的函数源码文件后(假定使用者指定的调度函数名称为tmpalgorithm),利用编写好的调度接口整合程序将固有编码框架部分模版文件中的两个字符串进行修改,并和使用者上传的子函数部分文件结合形成新的调度方法文件tmpalgorithm.h和tmpalgorithm.c。这样就形成的完成的调度API接口文件。
所述调度接口文件整合程序,是利用Linux的sed指令将编码框架模板文件中的算法名称更改为使用者指定的名称,形成新的调度文件;以及利用Linux的cat指令将形成的新的调度文件与使用者上传的源码文件进行融合,形成完整的调度API接口文件;
当平台使用者上传源码文件后,运行调度接口文件整合程序,自动将两个文件中的内容整合成完整的调度API接口文件;
调度接口整合程序脚本首先利用Linux命令mkdir在目录/src/plugins/下建立子目录tmpalgorithm,之后又用Linux下的sed指令将/TemplateSource/目录下的文件template.h、template.c中的字符串template和TEMPLATE分别替换为使用者指定的名称tmpalgorithm和TEMPALGORITHM,并在/src/plugins/tmpalgorithm/目录下形成新的调度文件tmpalgorithm.h和tmpalgorithm.c。最后用Linux下的cat指令将使用者上传的子函数文件中的内容追加到新 生成的文件/src/plugins/tmpalgorithm/tmpalgorithm.c之下。
所述上传下载模块,用于将平台使用者自行编写的子函数源码上传至服务器;供使用者从服务器下载封装模块;所述服务器是指集群中的一台计算机;所述封装模块是指封装好的头文件或动态链接库文件;
上传下载模块的实现需要在Linux集群的一台机器上搭建LAMP服务器,如图6所示,使用者在浏览器中发送上传(或下载)文件请求到服务器,服务器就根据请求调用相应的upload.php(或download.php)对使用者的请求进行响应;
所述编译模块,用于编译上传至服务器的源码程序以生成可执行文件到设定的服务器设定的文件夹下;
主要是由软件自带的Makefile.am,Makefile.in,configure文件以及Linux下基本的编译器(如gcc,g++)构成,当使用者完成源码上传工作以后(如,算法名称为algorithm1,则在服务器上的SLURM源码目录/src/plugins/sched建立子目录algorithm1,同时将Makefile.am,Makefile.in拷贝到该目录下),平台要修改Makefile.am中的参数,Makefile.am示例如下:需要使用Linux下的sed指令将文件中的pkglib_LTLIBRARIES=sched_builtin.la改成pkglib_LTLIBRARIES=sched_algorithm1.la;将sched_builtin_la_SOURCES=\
builtin.c\
builtin.h
改为
sched_builtin_la_SOURCES=\
algorithm1.c\
algorithm1.h
所述算法集成模块,在Linux服务器上运行一个已经编写好的算法集成脚本文件,该脚本将生成的新的可执行文件分发到集群的各个节点,同时在各个节点上重新启动调度进程;
算法集成脚本文件要包括三个部分功能,第一,从SLURM集群配置文件slurm.conf中读取集群中各个节点的主机名和IP信息。第二,利用读取的IP信息将编译模块生成的可执行文件通过Linux的scp指令复制到集群中的各个节点。第三,利用Linux下的ssh指令重启各个节点的调度进程。
所述算法性能统计模块,通过在中心控制进程设置两个计数器,分别记录单位时间内作业的到达数目和单位时间内作业的完成数目;利用slurm已有的指令sacct查看各个作业的起止执行时间,各个作业运行分配的节点以及cpu的利用率,以及cpu的实时温度,完成算法的调度性能指标统计。读取cpu的温度信息需要安装lmsensor软件,通过运行lmsensor指令 可以取到cpu的实时温度。
所述封装模块中的头文件中包括SLURM源码中的全局变量List job_list、List part_list及int32_t bitstr_t;slurm源码中的结构体struct job_record、struct job_details、struct list、struct listIterator、struct part_record及struct job_queue_rec,以及这六个结构体的子结构体;
所述封装模块中的动态链接库包括SLURM源码中的三类函数:1)函数名当中带有字符串list的函数;2)函数的参数当中带有struct job_record或bitstr_t字段的函数;3)函数名当中带有字段job_record或part_record的函数。
还包括显示模块,所述封装模块、调度接口模块、上传下载模块、编译模块、算法集成模块及算法性能统计模块均与显示模块相连,用于设计者与平台各模块之间进行GUI交互。
一种基于SLURM调度的算法集成与评测方法,如图1所示,采用所述的基于SLURM调度的算法集成与评测平台,所述方法包括以下步骤:
步骤1:平台使用者从计算机集群中下载所需的封装好的头文件和动态链接库文件;
步骤2:利用步骤1获得的头文件和动态链接库文件完成作业排序函数sort_job_queue3()和预调度函数_try_sched()的源码文件的编写,并调用上传下载模块将写好的源码文件上传至服务器;
所述作业排序函数,输入是全局调度队列中所有等待调度的作业,输出是将队列中的作业排序后所形成的作业调度队列。
所述预调度函数,输入是经作业排序函数之后输出的作业调度队列,可用的节点组,以及作业的请求信息(如,最少节点数、最大节点数)。输出是运行各个作业的计算节点。
所述作业排序函数,是对作业队列中的作业进行排序,即指定作业调度的次序;
所述预调度函数是获得运行每个作业的节点名,即计算机名;
步骤3:平台的调度接口文件整合程序将上传的源码和已经存在的模版文件整合形成完整的调度API源码文件;
步骤4:所述编译模块源码对步骤3得到的调度API源码进行编译形成新的可执行文件,并利用算法集成模块将新的可执行文件分发到集群的各个节点,然后重启调度程序;
步骤5:算法性能统计模块中的测试程序统计算法的调度性能指标,包括时间内作业的到达数目和单位时间内作业的完成数目;各个作业的起止执行时间,各个作业运行分配的节点以及cpu的实时利用率,以及cpu的实时温度。
图3对两种算法集成方式用户所需做的工作做了对比,图4展示了SLURM集群与服务器之间的关系,以下具体说明传统调度模块算法集成与该平台下算法集成的不同之处。
平台使用者集成算法的过程(交互图如图5所示):
(1)登录集群Web服务器LAMP,在资源下载区下载文件CommonVar.h和libFunctionLib.a文件到本地计算机,同时,在该模块下了解CommonVar.h和libFunctionLib.a中封装的核心公共变量和核心操作函数。
(2)打开CodeBlocks,新建工程Algorithm(Menu->File->New->Project->Console application);添加头文件CommonVar.h;在管理窗口右击工程Algorithm->Build options;在弹出的选项框左侧点击工程Algorithm,之后,选择tab标签中的Linker settings;在文本框Link libraries点击Add按钮,添加已经下载的动态链接库文件libFunctionLib.a。
(3)在主程序中实现要求实现的调度API接口的两个子函数(作业排序函数sort_job_queue3()和预调度函数_try_sched())接口。
(4)选择Web服务器上的源码提交区,将写好的接口子函数文件上传给服务器。若上传成功则继续后续步骤,否则,重新上传。
(5)服务器自动调用编译分布模块的函数,若编译成功则生成该方法的可执行文件,否则,编译失败返回失败信息。使用平台的集成模块将生成的可执行文件分发到集群的各个节点。
(6)在算法集成模块查看已集成的调度算法,同时终止现有调度算法的运行,选择新集成的调度算法,点击更改按钮。
(7)在算法性能统计模块查看新集成的调度算法性能参数(如,吞吐量、能耗等等)。
本发明在SLURM集群管理和调度和软件中引入了一个方便用户集成自己调度算法、实时更改调度算法以及查看算法性能的算法集成评测平台。它使得使用者在集成算法时不需考虑SLURM软件其它的源码模块,只需实现自己算法调度API接口的两个子函数接口,极大的缩减了用户所需要做的工作。同时,还可以根据不同环境的调度情况适时的更改已经集成的另一调度算法,增强了软件调度模块的灵活性和适应性。

Claims (4)

1.一种基于SLURM调度的算法集成与评测系统,其特征在于,包括封装模块、上传下载模块、调度接口模块、编译模块、算法集成模块及算法性能统计模块;
所述的算法集成与评测平台运行在计算机集群环境中,所述计算机集群是指包含多台装有Linux操作系统且安装有SLURM软件的计算机;
所述上传下载模块,用于将平台使用者自行编写的子函数接口源码文件上传至服务器;以及用于使用者从服务器下载封装模块;
所述服务器是指计算机集群中的一台计算机;
所述封装模块是指封装好的头文件或动态链接库文件;
所述调度接口模块,包括两部分:第一部分是该平台设计者对调度API接口定义的编码框架模版文件;第二部分是调度接口文件整合程序;
所述调度接口文件整合程序的作用是利用Linux的sed指令将编码框架模板文件中的算法名称更改为使用者指定的名称,形成新的调度文件;以及利用Linux的cat指令将形成的新的调度文件与使用者上传的源码文件进行融合,形成完整的调度API接口文件;
当平台使用者上传源码文件后,运行调度接口文件整合程序,自动将新的调度文件和源码文件的内容整合成完整的调度API接口文件;
所述编译模块,用于编译上传至服务器后经调度接口整合程序整合后的源码文件以生成可执行文件并存储到设定的服务器设定的文件夹下;
所述算法集成模块,在Linux服务器上运行一个算法集成脚本文件,该脚本文件将生成的新的可执行文件分发到集群的各个节点,同时在各个节点上重新启动调度进程;
所述算法集成脚本文件的功能是:首先从SLURM集群配置文件slurm.conf中读取集群中各个节点的主机名和IP信息,接着将编译模块生成的可执行文件通过Linux的scp指令按照读取的IP信息复制到集群中的各个节点,最后利用Linux下的ssh指令重启各个节点的调度进程;
所述算法性能统计模块的作用是:在中心控制进程设置两个计数器,分别记录单位时间内作业的到达数目和单位时间内作业的完成数目;利用slurm已有的指令sacct查看各个作业的起止执行时间,各个作业运行分配的节点以及cpu的利用率,以及cpu的实时温度,完成算法的调度性能指标的统计。
2.根据权利要求1所述的基于SLURM调度的算法集成与评测系统,其特征在于,所述封装好的头文件中包括slurm源码中的全局变量List job_list、List part_list及int32_t bitstr_t;slurm源码中的结构体struct job_record、struct job_details、struct list、struct listIterator、structpart_record及struct job_queue_rec,以及这六个结构体的子结构体;
所述封装好的动态链接库包括SLURM源码中的三类函数:1)函数名当中带有字符串list的函数;2)函数的参数当中带有struct job_record或bitstr_t字段的函数;3)函数名当中带有字段job_record或part_record的函数。
3.根据权利要求1所述的基于SLURM调度的算法集成与评测系统,其特征在于,还包括显示模块,所述封装模块、上传下载模块、调度接口模块、编译模块、算法集成模块及算法性能统计模块均与显示模块相连,用于设计者与平台各模块之间进行GUI交互。
4.一种基于SLURM调度的算法集成与评测方法,其特征在于,采用权利要求1-3任一项所述的基于SLURM调度的算法集成与评测系统,所述方法包括以下步骤:
步骤1:平台使用者从计算机集群中下载所需的封装好的头文件和动态链接库文件;
步骤2:利用步骤1获得的头文件和动态链接库文件完成作业排序函数sort_job_queue3( )和预调度函数_try_sched()的源码文件的编写,并调用上传下载模块将写好的源码文件上传至服务器;
步骤3:平台的调度接口文件整合程序将上传的源码和已经存在的模版文件整合形成完整的调度API源码文件;
步骤4:所述编译模块对步骤3得到的调度API源码进行编译形成新的可执行文件,并利用算法集成模块将新的可执行文件分发到集群的各个节点,然后重启调度程序;
步骤5:算法性能统计模块中的测试程序统计算法的调度性能指标,调度性能指标包括单位时间内作业的到达数目和单位时间内作业的完成数目;各个作业的起止执行时间,各个作业运行分配的节点以及cpu的实时利用率,以及cpu的实时温度。
CN201310585227.2A 2013-11-19 2013-11-19 一种基于slurm调度的算法集成与评测系统及方法 Active CN103593192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310585227.2A CN103593192B (zh) 2013-11-19 2013-11-19 一种基于slurm调度的算法集成与评测系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310585227.2A CN103593192B (zh) 2013-11-19 2013-11-19 一种基于slurm调度的算法集成与评测系统及方法

Publications (2)

Publication Number Publication Date
CN103593192A CN103593192A (zh) 2014-02-19
CN103593192B true CN103593192B (zh) 2016-08-17

Family

ID=50083352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310585227.2A Active CN103593192B (zh) 2013-11-19 2013-11-19 一种基于slurm调度的算法集成与评测系统及方法

Country Status (1)

Country Link
CN (1) CN103593192B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105787359B (zh) * 2016-02-19 2019-01-08 百度在线网络技术(北京)有限公司 进程守护方法和装置
CN108228154A (zh) * 2017-12-25 2018-06-29 上海中畅数据技术有限公司 一种基于算法的通用监控框架设计系统
CN108427636A (zh) * 2018-01-09 2018-08-21 阿里巴巴集团控股有限公司 应用的测试方法、系统和电子设备
CN108319514A (zh) * 2018-01-26 2018-07-24 山东超越数控电子股份有限公司 一种基于Slurm作业管理的可视化调度系统
CN110673858B (zh) * 2019-08-30 2023-04-11 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法
CN111031022A (zh) * 2019-12-05 2020-04-17 安徽大学 基于Slurm的资源管理调度方法、装置、电子设备及存储介质
CN112052144B (zh) * 2020-09-15 2023-05-26 曙光信息产业(北京)有限公司 信息管理方法、装置、电子设备及存储介质
WO2022109932A1 (zh) * 2020-11-26 2022-06-02 深圳晶泰科技有限公司 基于slurm计算平台的多任务提交系统
CN112882828B (zh) * 2021-01-25 2023-09-05 北京大学 基于slurm作业调度系统的昇腾处理器管理和调度方法
CN114745385B (zh) * 2022-04-12 2023-05-30 吉林大学 一种构建slurm调度并行计算集群的方法
CN117056057A (zh) * 2023-10-11 2023-11-14 北京大数据先进技术研究院 算法调度方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049326A (zh) * 2013-01-16 2013-04-17 浪潮(北京)电子信息产业有限公司 在作业管理与调度系统中管理作业程序的方法和系统
CN103336720A (zh) * 2013-06-17 2013-10-02 湖南大学 一种基于slurm的具有数据依赖关系的作业执行方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8958346B2 (en) * 2006-03-02 2015-02-17 Tango Networks, Inc. Calling line/name identification of enterprise subscribers in mobile calls

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049326A (zh) * 2013-01-16 2013-04-17 浪潮(北京)电子信息产业有限公司 在作业管理与调度系统中管理作业程序的方法和系统
CN103336720A (zh) * 2013-06-17 2013-10-02 湖南大学 一种基于slurm的具有数据依赖关系的作业执行方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Linux 集群系统性能的实时监测及其可视化研究;彭土有;《计算机技术与发展》;20101130;第33-36页 *
资源管理系统中基于作业检查点的自动容错;曹宏嘉 等;《计算机工程与科学》;20091115;第66-68,109页 *

Also Published As

Publication number Publication date
CN103593192A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
CN103593192B (zh) 一种基于slurm调度的算法集成与评测系统及方法
CN103955373B (zh) 一种sdn应用集成开发环境的设计方法
US20220188086A1 (en) Off-load servers software optimal placement method and program
WO2022110446A1 (zh) 异构集群调度的模拟方法、装置、计算机设备及存储介质
CN101246424A (zh) 一种基于文件的菜单自动生成系统和方法
Bambrik A survey on cloud computing simulation and modeling
CN109614227A (zh) 任务资源调配方法、装置、电子设备及计算机可读介质
Desell et al. Malleable applications for scalable high performance computing
CN110532044A (zh) 一种大数据批处理方法、装置、电子设备及存储介质
Albrecht et al. Making work queue cluster-friendly for data intensive scientific applications
Ramakrishnan et al. Performability modeling for scheduling and fault tolerance strategies for scientific workflows
Pop et al. A simulation model for grid scheduling analysis and optimization
CN115237547A (zh) 一种非侵入式hpc计算集群的统一容器集群托管系统和方法
Padilla Self-adaptation for Internet of things applications
CN114579250A (zh) 一种构建虚拟集群的方法、装置及存储介质
Kim et al. Spinal code: Automatic code extraction for near-user computation in fogs
Amar et al. Tunable scheduling in a GridRPC framework
D'amico Scheduling and resource management solutions for the scalable and efficient design of today's and tomorrow's HPC machines
De Munck et al. Distribution of parallel discrete-event simulations in GES: Core design and optimizations
Zhang et al. A Scheme and Implementation of Automatic Deployment of Multilingual Industrial Mechanism Model Based on OpenStack
Pautasso et al. Autonomic computing for virtual laboratories
Kashyap et al. Big data at hpc wales
Scriven et al. Resource evaluation and node monitoring in service oriented ad-hoc grids
Menard et al. Mocasin—Rapid Prototyping of Rapid Prototyping Tools
Zhao et al. Architecture design of a distributed workflow platform based on microservice architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant