基于TORQUE的高性能计算平台记账系统

2016-09-08 10:30李惠欢吴汝明
计算机应用与软件 2016年8期
关键词:记账日志高性能

李惠欢 杨 敏 吴汝明

(中山大学网络与信息技术中心 广东 广州 510275)



基于TORQUE的高性能计算平台记账系统

李惠欢杨敏吴汝明

(中山大学网络与信息技术中心广东 广州 510275)

高性能计算已成为继理论研究和实验科学之后的第三种科研方法。如何高效地利用高性能计算平台上众多的设备为科研提供有效服务是管理者需要面对的主要问题。主要介绍基于开源软件TORQUE的高性能计算平台记账系统的设计与实现,包括计算算法、系统架构、主要功能模块、数据设计及代码实现。通过归纳法分析TORQUE日志记录模式,给出从作业角度和资源角度进行资源使用率的计算方法。该记账系统架构划分为五层,系统具有很好的灵活性和开放性,可以很容易地移植到其他平台或者其他类型的作业调度系统上。该系统更着重于当前资源的使用情况、用户资源使用情况、任务等待时间,而非简单的费用计算和账单打印,所以它更能为管理者和决策者提供有效且强大的数据支撑。

TORQUE记账系统高性能计算平台资源利用率

0 引 言

随着科学技术的高速发展,无论是计算平台还是科学计算的应用软件都得到迅速发展。为了满足各学科科学计算的需求,集中式的高性能计算(HPC)平台、GPU平台在高等学校如雨后春笋般出现。高性能计算机系统是一套由多个计算节点、管理节点和存储节点组成的计算机系统,节点间通过网络有序协同工作,目前计算力可达到每秒亿亿次的水平。HPC被广泛应用于高性能计算中心、国家实验室和各种领域。

通观我国目前在高性能计算平台上记账和计费系统的研究情况,有基于PBS系统记账信息设计的计费系统[7,9],也有基于PBS系统并重新设计记账信息收集器和分析器的;有基于其他作业管理软件设计的(如通过采集LSF系统作业调度及资源分配信息设计的预付费系统[3]、基于LSF的计算配额系统[5]、对神威4000A系统和IBM系统设计的统一资源管理系统[1]),也有进行了校园网格系统和计费系统整体结构及模块设计的研究[10]。但系统设计往往缺乏对高性能计算平台整体系统的通盘考虑,缺少对计算平台的环境监控管理系统、集群负荷管理系统、Web作业提交系统、作业记账计费系统、门户系统、决策分析系统等整个生态系统的统筹规划,系统缺少可扩展性和灵活性。

目前中山大学高性能计算服务平台共有4套系统,包括3套HPC平台和1套GPU平台,使用团队已超过170多个,涉及化工、环境、物理、海洋、生物等多个学科领域。随着用户数量的增加,如何充分利用现有资源为用户和高性能中心带来最大的效率和效益,是HPC平台管理者必须面对的问题。为此我们希望通过利用HPC平台的TORQUE日志信息开发一个记账系统。鉴于当前我校免费使用、院校共建、资方优先、统一管理的政策,系统关注点主要是系统资源是如何使用,哪些资源是短缺的,哪些资源没有被充分利用,哪些资源被哪些应用长期占用等;并非关注用户使用了哪些资源及他们需要付多少费,因而它为领导决策、平台扩展和升级、用户使用指引提供了有效有力的数据依据。

1 TORQUE工作原理

PBS是一个批处理作业和计算机系统资源管理的软件包,是功能最全、历史最久、支持最广的本地集群调度器之一。PBS包括OpenPBS、PBS Pro和TORQUE三个主要分支,TORQUE是Adaptive Computing公司基于OpenPBS给予后续支持的一个开源版本。TORQUE和Maui一起进行资源调度和作业管理,对批量作业和分布式计算节点提供控制。

1.1TORQUE工作模式

TORQUE由一个头节点和多个计算节点构成,在头节点上运行pbs_server守护进程,在各计算节点上运行的是pbs_mom进程。提交和管理作业的客户端命令(作业的启动、取消、监控)可以在任何主机上安装,包括没有运行pbs_server或 pbs_mom进程的主机[6],如图1所示。

图1 TORQUE结构图

头节点同时还运行了一个调度进程pbs_sched,此调度器与pbs_server进程一起,提供资源使用决策并为作业分配节点。TORQUE提供了包括启动、保留、取消和监控作业的一系列底层方法,调度器借此实施作业控制。在TORQUE的分发包中提供了简单的FIFO先入先出调度器以及高级的编程式调度器两个选择,但大部分的TORQUE用户选择使用打包的第三方调度器,如Maui或Moab。

作业整个生命周期可以分为创建、提交、执行和结束四个阶段。用户首先要编写作业脚本,在脚本中定义作业各种参数,包括作业应运行多长时间(walltime)、哪些资源是必要的以及作业执行内容。然后使用qsub命令向pbs_server进程发送作业提交请求。TORQUE将依据管理员预先定义的策略规则设定作业优先级,并同时开始启动作业执行。pbs_server接收到一个新作业后通知调度器。当调度器为作业找到所需资源后,就向pbs_server发送指令,把可分配给作业的节点列表信息发送给pbs_server进程。紧接着pbs_server将新作业发送到节点列表的第一个节点上,并命令它启动作业。此节点被指定为执行主机,称为Mother Superior,作业中的其他节点称为sister moms。

1.2TORQUE日志记录分析

TORQUE把批量作业的日志记录存放在$TORQUEROOT/server_priv/accounting/文件中,是以YYYYMMDD的日期格式进行定义,每天的日志记录放在同一个文件中。文件为普通的文本文件,在文件中记录了作业发生的事件、时间戳、用户、作业队列、请求资源和使用资源的信息。日志记录基本格式为:

Timestamp;EventMarker;JobNum;EventDetail

日志记录有八种不同的事件标记EventMarker,包括A(系统放弃执行作业)、C(作业已设置检查点并保留)、D(作业已被删除)、E(作业已退出,可能是作业计算完毕退出或者中途出错而退出)、Q(作业已递交或者排队中)、R(试图返回作业)、S(试图开始一个新作业)、T(试图从检查点重启作业)。如果平台可用资源未能满足作业需求而导致作业未能启动,将产生多个作业试图启动事件,也就会记录多个S日志记录。

不同事件的事件详情EventDetail不尽相同。在事件S和事件E中,详细记录了作业的申请用户user、用户组group、作业名称jobname、作业所在队列queue、作业提交时间ctime、启动时间start、实际运行节点exec_host、作业请求资源情况(作业运行所需节点、节点数量、运行所需时间)。事件E中还记录了作业结束时间end、退出状态Exit_status、资源使用情况(CPU内核使用时间的最大值resources_used.cput、内存使用量的最大值resources_used.mem、虚拟内存使用量最大值resources_used.vmem以及作业实际运行时间最大值resources_used.walltime)。

我们从日志记录文件中抽取了10 000多个记录进行分析,从分析结果归纳出三种TORQUE日志记录模型(如图2所示)。通常情况下,用户用qsub命令发出作业请求后,TORQUE将作业请求放到作业队列中,同时生成事件Q日志。然后通知调度器为新作业搜索所需资源,同时产生事件S日志。如果当前可用资源不能完全满足作业要求,TORQUE将不断重复轮询,也就是事件S。当可用资源已能满足作业所需时,系统将分配资源给新作业并开始计算,直到作业正确执行完成或者中途出错退出,TORQUE将记录事件E日志。在场景2中,在已启动作业或者请求资源还未成功时,用户执行qdel命令主动删除了作业的,系统进行作业删除操作释放资源并生成事件D日志记录,删除成功后再生成事件E日志记录。

图2 TORQUE日志记录模型

对于某些VIP用户,可以把作业递交给多个作业队列进行资源轮询,此时可能出现R事件标记。在这些特殊场景中,也就是场景3中,即使作业进入E退出状态后,仍可以发生事件R,并可再次引发事件S重新试图启动作业。这样将产生多个E事件记录,在计算作业实际运行耗时时需额外考虑。

2 记账系统的设计

本记账系统是基于TORQUE日志记录的,高性能计算集群采用曙光5000A系统,集群平台在2010年扩容后理论计算峰值达3.5万亿次,平台日常负载在60%~70%。操作系统使用Rocks 5.1和CentOS 5.3,科学计算软件有MM5、WRF、Material Studio、Gaussian、CASTEP等,可支持气象、环境、海洋、物理、化学、材料、生物等相关领域的科学计算。为能适应TORQUE日志记录模式的特性,为便于移植到其他平台(如GPU平台)作业调度系统上,本记账系统的体系结构设计体现开放性和灵活性的特点,系统模块设计充分考虑原子性和扩展性。

2.1使用率计算算法

高性能计算集群系统主要包括CPU、内存、虚拟内存、硬盘空间、带宽等资源类型。对所有资源按“集群+节点类型+资源类型”方式进行资源分类,节点类型包括计算节点、管理节点、胖节点、存储节点等。定义HPC系统整体可用资源集为:V={V1,V2,…,VM},假设按上述资源分类方式共有K种资源分类情况。

(1) 从作业角度计算用户应付费用或使用资源情况

对于不同的资源分类定义其单价,如5000A系统上胖节点的CPU单价为p1,GPU系统上计算节点的GPU单价为p2等,则定义单价集合为:P={p1,p2,…,pK}。

假设某用户在集群上运行了N个作业,定义作业集为:S={s1,s2,…,sN}。设其中某个作业si(1≤i≤N)运行实际耗时为ti,作业运行期间共使用了Li个资源,则其使用的资源集为:Ri={rij|rij∈V且j=1,2,…,Li},资源rij的使用数量记为aij,资源使用量集合可以表示为:Ai={aij|j=1,2,…,Li}。根据以上资源分类方式,统计资源使用量得到各类资源使用量汇总集:

此套公式同样地可用于计算资源使用情况,只要把单价集合P看作各资源分类的使用比重则可。可见,费用与所使用资源的类型、资源的提供能力、使用资源时长有关,为增加系统可扩展性增加了用户组级别和作业级别的影响因子。

(2) 从资源角度计算资源使用情况

(3) 其他需考虑因素

对于内存、虚拟内存、带宽等系统资源而言,资源使用数量是动态的,只能估算时间段内资源使用均值,从而计算资源使用率。在实际应用中往往以CPU利用率作为节点/集群使用率计算标准。例如某个计算节点有8个内核,如果某作业占用了该节点全部8个内核,无论其他资源的使用情况如何,可以认为节点的全部资源都已分配给该作业,其他作业不能同时使用此节点。

作业往往会出现跨天、跨周、跨月运行的情况,统计时间颗粒度越小则可能性越大。对于这些情况,通常记账信息中只有事件S的日志记录,记录了作业运行的节点和CPU内核情况。对于从作业角度进行用户资源使用情况统计的,应以作业运行完毕并释放资源才能进行统计。对于从资源角度进行资源使用情况统计的,应考虑作业跨越统计时间段的问题,考虑统计时间段之前就已经开始执行的作业以及在统计时间段后才结束的作业。这样的话,对于CPU内核资源使用情况的统计结果才是准确的。

2.2系统结构

参考数字化校务管理系统的设计,记账系统采用自上而下的设计方法,系统架构分为5层(如图3所示),包括用户界面层、业务层、应用组件层、应用接口层以及基础平台层。技术规范、信息标准和系统安全保障横跨各个层面。每层为上层提供服务,同时从下层接口中获得相应的服务。

图3 记账系统架构

在最顶层为用户界面层,直接面向最终用户服务,使用普通浏览器作为客户端,用户无需额外安装客户端软件包。用户界面层为所有用户提供了统一登陆入口,系统挂载在高性能计算门户系统下,门户系统与校园SSO单点登陆系统对接实现了NetID登录,用户只需输入NetID账号密码就可以进入记账系统。系统根据用户所在的用户组为其展现个性化界面,安全模块中的授权管理模块可为各用户组设定不同的功能菜单项。将用户界面作为单独一层,可以把系统外观设计独立出来,使系统更具柔韧性。

第二层为业务层,也是记账系统的功能模型集合。该层包含每月资源使用率计算、每月账单打印查询、各种类统计报表表格生成以及决策支持等功能。这层以服务接口的方式为用户界面层提供服务,同时从下层的应用组件层的相应引擎中获取服务。

第三层为应用组件层,从记账系统业务中分析抽象出来的引擎组件,为上层提供通用的应用组件以构成业务功能块。通用组件包括对TORQUE原始日志记录进行分析的数据分析引擎、实现日志文件访问的文件处理引擎、实现统计报表管理的报表引擎、记录用户操作的日志引擎等。应用组件层的设计遵守以下原则:

① 支持未来发展,使用规则引擎避免重复编码;

② 使组件尽量单一化,以实现代码重用和业务功能重构;

③ 通过组件聚合使得组件更易于维护和扩展。

应用接口层由各类适配器构成,负责与基础平台层进行对接和通信,为应用组件层提供服务,使其不必依赖于基础平台。这层主要包括文件读写接口、数据库存取接口等。

最底层的基础平台层是记账系统的基础,包括高性能计算平台上的各种基础部件(如集群的操作系统和文件系统、作业管理调度系统)、数据库、Java虚拟机等。

2.3系统功能

系统服务对象包括普通使用者、集群管理员以及决策层领导等三大类用户群体,不同类型用户的权限将不尽相同,系统为不同用户组的用户提供差异化服务。系统包括五大模块,分别是基础信息管理、使用情况查询、费用和账单、统计报表和安全管理等。

基础信息管理是对系统基础数据的维护,包括集群、节点、各类资源、集群用户等。

在使用情况查询模块中,普通用户可以获知每个作业使用资源的详细情况,包括运行所使用的节点、CPU内核、内存和存储的情况(对于未完成作业不可查询)。管理员可以查看某个用户的资源使用情况,也可以查看所有用户的使用情况详情和单独查看某个设备的使用情况。

在费用和账单模块中,普通用户可以查看他们每月需付费用,自行打印账单以及账单明细项目。对于管理员则可以进行每月账单的计算和适量调整,可以进行计费标准的设置,而且还可以按月打印所有用户的账单。

统计报表模块为管理员和决策领导提供每周、每月和每年的各类资源使用报告(包括CPU内核、内存以及虚拟内存),提供作业等待时间的统计,对用户使用资源的统计,对紧缺资源的统计,还提供统计结果图形方式展示。图4是资源使用情况统计报告的用例图,模块中除了含有公用的报表打印用例外,还包括对每周、每月和每年统计报表的查看。利用统计报表模块,管理员可以摸索出各种资源使用规律,可以给集群用户提供准确的使用建议以充分发挥计算平台性能。通过统计报表模块,决策者可以获知平台是否使用恰当,是否能满足用户需要,资源是否紧缺,从而为平台扩展升级作出准确的判断和决策。

图4 统计报表模块用例图

安全模块包含了用户管理、用户组管理和用户认证授权等。用户授权是面向用户组的,实现功能菜单级授权,不同用户组可查看的业务功能不尽相同,同一用户只能指定唯一的用户组。

2.4系统概要设计

记账系统使用单独的服务器安装部署,每天晚上进行日志文件的同步。通过DAWNING 5000A系统中的定时任务,以scp方式把TORQUE前一天的日志文件传送到记账系统上。在计算平台DAWNING 5000A的管理节点上,定义定时任务脚本upload.sh,由于scp会出现询问用户密码和确认传送的交互过程,因此借助系统的Expect工具实行自动化控制。另一方面,记账系统中也需定义每晚的定时任务,通过整合Quartz到Spring架构中就可以实现。处理过程大致为:首先检查新日志文件是否已传送过来,如果文件没找到则发邮件给管理员,否则进行日志文件数据分析,生成每天日志记录、作业、资源使用情况等信息存到数据库中。

记账系统采用Java作为开发语言,采用Struts+Spring+Hibernate架构搭建基于MySQL数据库的B/S应用。依据用户需求,系统分日志记录、基础数据、费用账单、用户管理等业务包,核心的日志记录部分的类图如图5所示。日志记录包覆盖了TORQUE原始日志信息(基于作业事件)、数据分析后产生的作业详情(基于每个作业)、节点和CPU内核占用情况(从资源角度);基础数据包用于记录平台各类资源(节点、内核、存储、内存);费用帐单包记录了每个用户每月使用各类资源的小计、费用以及收费标准等;用户管理包括用户、用户组、菜单资源和资源分配关系等类。

图5 日志记录部分的类图

图6为经过分析原始日志记录后生成的作业信息的查询界面,可以查看每个作业的状态(事件)路径历程,与1.2节中日志记录模型相吻合。图7为通过分析原始日志记录,得到作业执行节点和内核信息后,统计出的节点使用率,可以进行每天、每周、每月三种粒度的使用率统计。

图6 作业信息详情查询页面

图7 节点使用率统计页面

记帐系统的数据分析过程包括如下步骤:

1) 每天晚上定时获得TORQUE日志记录文件;

2) 分析每天日志文件,对每行记录日志进行分析并存储在accounting日志记录表中;如果是新作业则新建作业信息到job作业表中,否则更新job表的旧作业;

3) 对于已完成计算的作业,根据作业计算实际使用的内核信息,生成每天内核上运行作业的占用时间和比率,并存储到coreOccupation内核占用情况表中;

4) 根据内核占用情况,统计每天节点的占用时间和比率均值,并存储在nodeOccupation节点占用情况表;

5) 对于已完成计算的作业,计算用户运行该作业所使用各类资源总和(内核总时数、内存及虚拟内存最大使用量)。

下面给出处理日志记录文件部分的代码:

/** 读取并分析pathname路径下文件 **/

private boolean readFile(String pathname) {

int rowCount=0; String line = ″″;

try {

File filename = new File(pathname);

InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));

BufferedReader br = new BufferedReader(reader);

line = br.readLine();

//一次读入一行数据

while (line != null) {

analysisOneLine(line);

rowCount++;

line = br.readLine();

}

br.close();

} catch (Exception e) {

e.printStackTrace();

}

return true;

}

/** 分析某一行数据 **/

private void analysisOneLine(String line) {

Map acclog = new HashMap();

//用于存储某行的日志信息

List hosts = new ArrayList();

//用于存储该作业的实际执行节点和内核

if (null != line && line.length() > 0) {

//每行数据用分号分隔并记录日志的时间截、事件标志、

//作业号、详细信息

String[] lineCell = line.split(″;″);

if(lineCell.length==3 || lineCell.length==4){

acclog.put(″logTimestamp″, lineCell[0]);

acclog.put(″status″, lineCell[1]);

acclog.put(″jobid″, lineCell[2]);

//有详细信息的,要进行详细信息处理

if(lineCell.length==4){

acclog.put(″detail″, lineCell[3]);

analysisDetail(lineCell[3], acclog, hosts);

}

//存储日志信息到数据库中

addDb(acclog,hosts);

}

}

}

3 结 语

本文提出的记账系统适用于所有基于TORQUE的作业管理计算平台,系统设计充分考虑灵活性和可扩展性,易于维护管理,易于移植到其他工作调度系统或其他平台的调度系统上。下一步将不断丰富系统功能,增强系统健壮性,并将系统扩展应用到GPU平台上。

鉴于我校免费使用的政策,目前系统只提供用户的资源使用情况,还没有做用户费用计算。当前系统数据分析完全依赖于TORQUE的日志记录,但日志记录只能反映单个作业对资源的整体使用情况,对于节点的真实使用情况无法获得,因此目前系统只提供CPU资源的使用情况。

后续可以进一步改进,在节点上做操作系统层的资源使用情况日志记录,并结合TORQUE日志则可以知道具体作业在节点上的详尽资源使用情况。可以跟踪用户所使用计算软件,掌握计算软件的资源使用特性,为以后设备采购起指导性作用。

[1] 沈瑜,李娟,常飚,等.高性能计算机统一资源管理系统的设计与实现[J].计算技术与自动化,2014,33(1):83-90.

[2] 顾群.基于Torque的异构集群平台调度算法的设计与实现[D].西安电子科技大学,2013.

[3] 林皎,张武生,徐伟平,等.高性能计算平台预付费管理系统的研制与应用[J].实验技术与管理,2012,29(12):104-105.

[4] 杨敏.广东省教育科研网格门户系统构建[J].武汉大学学报:理学版,2012,58(S1):371-375.

[5] 牛铁,朱鹏,赵毅,等.超级计算环境计算配额系统设计和实现[J].计算机应用,2010,30(S2):8-9,39.

[6] Adaptive Computing.TORQUE Resource Manager Administrator Guide version 4.2.1[M].Adaptive Computing Enterprises Inc,2012.

[7] 陈振娅,杨英,陈丽娟,等.基于OpenPBS的高性能计算平台计费系统[J].山东科学,2009,22(5):98-102.

[8] 辛小霞,吴汝明.一种基于SOA的校务管理系统框架模型[J].中山大学学报:自然科学版,2009,48(S1):264-266.

[9] 王伟,杨利,刘建锋.一种高性能计算环境中的计费系统[J].计算机工程与科学,2008,30(1):148-150.

[10] 刘明良.基于校园网格系统计费方案研究[J].计算机系统应用,2008,17(3):60-63,91.

[11] Radulescu A,Van Gemund A J C.Low-cost task scheduling for distributed-memory machines[J].IEEE Transactions on Parallel and Distributed Systems,2002,13(6):648-658.

[12] Jianhua Adu.An New Accounting and Billing System for HPC Cluster[C]//Advanced Materials Research,2010,108-111:884-887.

TORQUE-BASED ACCOUNTING SYSTEM FOR HIGH-PERFORMANCE COMPUTING PLATFORM

Li HuihuanYang MinWu Ruming

(NetworkandInformationTechnologyCenter,SunYat-senUniversity,Guangzhou510275,Guangdong,China)

High-performance computing has become the third scientific research method following the theoretical research and experimental science. How to efficiently utilise numerous devices on high-performance computing platform to provide effective services for scientific researches is a major problem faced by the managers. This paper mainly introduces the design and implementation of a TORQUE-based accounting system for high-performance computing platform, which includes the computational algorithm, the system architecture, the main functional modules, the data design and the code implementation. Through analysing the logging mode of TORQUE with induction it presents the calculation method of resource utilisation from the prospective of jobs and resources. The architecture of accounting system is divided into five levels and the system has good flexibility and openness, which can be easily ported to other platforms and other kinds of job scheduling systems. The system focuses more on the usage of current resources, user’s resource utilisation and task waiting time rather than the cost calculation and bill printing, so it can provide more effective and powerful data support for administrators and decision-makers.

TORQUEAccounting systemHigh-performance computing platformResource utilisation

2014-11-01。李惠欢,工程师,主研领域:计算机软件和应用,网络信息技术,高性能计算软件。杨敏,工程师。吴汝明,高工。

TP315

A

10.3969/j.issn.1000-386x.2016.08.028

猜你喜欢
记账日志高性能
一名老党员的工作日志
记账类APP
扶贫日志
记账理财的好处有哪些
游学日志
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用
中小企业代理记账存在的问题及对策
代理记账:会计“工学结合”的新动向
SATA推出全新高性能喷枪SATAjet 5000 B