高性能计算机资源管理系统改进设计与实现

2018-01-18 16:03顾文静常飚李娟
计算技术与自动化 2017年4期
关键词:预处理资源管理

顾文静+常飚+李娟

摘 要:为实现高性能计算机资源精细化的统计查询和跨区域调配管理,调研中国气象局(CMA)和各区域中心需求,分析现有资源管理系统的实现方法和不足,充分利用数据库索引和预处理技术优化数据结构,整合SSH和jQuery框架重新设计和实现资源管理系统。测试及业务应用表明,新系统在响应速度、系统可维护性、功能可扩展性和使用便捷性等诸多方面均得到提升。系统管理员可据此调整系统资源分配调度策略,用户可选择空闲时段和队列提交作业,从而更合理高效的利用系统资源,有效提高系统运行效益。

关键词:高性能计算机;资源管理;系统改进;JQuery+Ajax;SSH;预处理

中图分类号:TP302 文献标识码:A

Improved Design and Implementation of Resource Management System

GU Wen-jing,CHANG Biao,LI Juan

(National Meteorological Information Center,High Performance Computing Division,Beijing 100081,China)

Abstract:To achieve high performance computer resources statistical query refinement and cross-regional management,Investigating the demand of China Meteorological Administration(CMA) and the regional center .Analyzing the implementation method and defect of the existing resource management system .Redesigning and implementing the resource management system adopted the database index and pre-processing to improve data storage structure which based on SSH and jQuery framework .Test and business applications indicates that response speed,system maintainability,function extensibility and convenience of the resource management system has been improved.Through the platform,System administrators can adjust the resources allocation scheduling policy,Users can choose the free time and queue to submit jobs,Thus more reasonable and efficient use of system,Effectively improve the operation efficiency of the system.

Key words:HPC system;resource management;system improvement;JQuery+ Ajax;SSH;pre-processing

高性能計算机系统是天气、气候、地球环境数值模拟业务和相关科学研究所必须的基础平台。为了对高性能计算机系统进行资源记账和统计分析,国家气象信息中心组织研发了“高性能计算机资源管理系统”,系统开发完成后,为日常资源的统计管理提供了便捷。

自2013年起,依托“气候变化应对决策支撑系统工程”项目,中国气象局(CMA)陆续在国家局、广东、上海、辽宁、湖北、四川以及甘肃和新疆等多个区域中心建设10套高性能计算机系统,系统总体峰值能力为1759TFlops,存储物理容量为6925TB,日均作业量近5万个。

1 现状分析

随着新一代高性能计算机系统正式投入运行,系统资源使用量和作业量与日俱增,资源统计查询需求也日趋复杂,现有的资源管理系统暴露出了诸多需要改进的问题,例如系统响应慢、可维护性和可扩展性差、查询功能纷乱、无法自动生成统计图等。

通过调研国家局及各区域中心对“高性能计算机资源管理系统”的功能需求,分析系统实现的具体方法,主要针对系统的响应速度、功能可扩展性、页面结构和图表展示等进行重新设计与实现。

2 关键问题

(1)记账信息提取。

记账信息是统计查询的基础,因此必须保证记账信息采集的准确性和时效性。

(2)合理组织数据。

针对原有资源系统响应速度慢的问题,设计合理的数据存储结构,有助于提升系统响应速度,同时能够降低系统开发的复杂度。

(3)架构改进。

原资源管理系统功能简单,使用JSP+Servlet+JavaBean进行B/S架构的系统开发,Html标签与Java代码的混合体严重影响系统可维护性和可扩展性;伴随着系统需求的不断增加,软件开发也变得越来越复杂,如何代码复用,如何设计一个灵活松耦的系统,成为系统设计中重点研究的问题。

(4)界面的设计。

为满足资源的跨区域调配管理及多方面统计查询需求,查询粒度大幅增加,功能复杂,各模块的设计及图表展示是系统开发成败的主要因素之一。优良合理的页面布局对用户而言,能方便清晰地展现用户所关心的信息[1]。endprint

3 系统设计与实现

资源管理系统是“气候变化应对决策支撑系统工程”的子系统之一,用户管理部分单独建设,因此用户注册、登录和修改信息等功能本文不做赘述。资源管理系统主体功能如图1所示,开发环境:Eclipse Luna Release (4.4.0);后台数据库:Oracle 11g;Web服务器:Tomcat8.0。

3.1 记账信息提取

作业被Loadleveler提交到高性能计算机系统的计算节点上,用户作业运行之前作业管理软件调用prolog.sh,提取用户作业的相关信息,放至相应的日志文件中;用户作业结束时,调用epilog.sh程序,提取用户作业的相关运行信息,存入相应的日志文件中;batchchargework.sh脚本解析作业日志,获取作业信息各关键字段,将作业以记录形式存入资源使用信息数据库中[2]。

原资源管理系统,作业结束后启动batchchargework.sh脚本解析作业日志入库,由于大量气候模式作业运行时间长达几天甚至十几天,当作业结束后再解析日志入库,会导致作业运行期间资源统计量少于实际值,新系统修改batchchargework.sh脚本,当作业提交后,启动解析脚本,将作业信息入库,结束时间实时更新,直至作业运行结束。

3.2 数据预处理

原资源管理系统部署在IBM cluster 1600和神威4000A高性能计算机系统上,两套系统总理论峰值约55TFlops(万亿次浮点运算每秒)[3],而新一代高性能计算机系统总理论峰值达1759TFlops;源数据表job表总记录由原来的不足300万条增加到现有的3000多万条;job表的日增量由原来的6000多条增加到5万条。

伴随数据量的迅速增长,对于用户的统计请求,如果实时的从海量原始数据中进行统计计算,给系统造成较大压力,并且让用户等待较长时间。从用户角度出发,充分利用Oracle数据库索引技术,提高SQL语句的执行效率,将有索引的字段放在Where条件的前面,避免全表扫描。同时对海量数据进行统计预处理,形成符合需求的中间统计结果进行存储,对于统计访问请求,能够直接在中间统计结果中进行查询,大幅减少等待时间。

为了提高数据安全性和降低数据的冗余,新资源管理系统数据库创建13张数据表,其中基础信息表包括用户信息表(userinfo)、部门信息表(organization)、计算机系统信息表(machineinfo)、文件系统信息表(gpfsinfo),资源分配信息表(allocation);记账信息表包括作业信息表(job)、存储资源信息表(disk)、CPU使用情况信息表(cpu_usage),实时概览信息表(realtimeinfo);对job表和disk表进行统计预处理,生成队列资源信息表(queueu_amt)、模式资源信息表(model_amt)、系统记账信息表(machine_chg)和用户记账信息表(user_chg);其中记账信息表的可统计属性均与基础信息表建立主外键关系。改进后的数据库表结构如图2所示[3]。

3.3 SSH+jQuery框架

3.3.1 系统实现模型

新系统采用MVC模式的SSH(Struts2+Spring+Hibernate)和jQuery两个框架整合实现,大大提高了软件开发的效率,系统的可维护性和可扩展性都有所改进。

视图层采用Struts2框架与jQuery框架实现,Struts2提供对Ajax的支持,与jQuery框架配合,可将程序的触发事件直接封装在JS代码中,Struts2与jQuery整合过程中,还需Json插件来辅助实现Ajax功能[4];配置文件struts.xml负责前、后台文件的映射关系。业务逻辑层由Spring和Struts2整合实现,Struts2根据用户请求调用相应Action控制器,Action调用Service实现业务逻辑处理,将Json对象和参数传入到了后台Service层,在Service层封装解析数据对象;数据持久层由Spring和Hibernate整合实现,Service調用Dao实现对数据库的操作,Dao通过调用Hibernate API对持久化对象进行操作,Hibernate将Dao连接oracle数据库,将配置文件装载到applicationContext.xml中,最终实现对数据库的增删改查操作[5]。

3.3.2 实现举例

用户资源统计模块包含4个子模块,分别为申请与分配、分配与使用、计费与收费和缴费记录,下面以分配与使用子模块为例详述后台查询及前台展示的实现。

用户资源分配与使用模块的JSP页面引入jQuery的JS文件库和UserRes.js文件,用户在UserRes.jsp页面上选择查询条件后提交,JQuery+Ajax通过get方式向服务器提交请求[6,7],服务器接收请求后,根据struts.xml找到UserResInfo-Allocation

used.json对应UserResInfoAction对象,调用其AllocationUsed( ) 方法;UserResInfoAction对象调用UserResInfo

-Service对象的getAllocationUsed( )方法,UserResInfoService对象调用UserRes-

InfoDao对象的getAllocationUsed( )方法最终实现用户资源分配与使用的查询,并将查询结果逐级返回给UserResInfoAction对象。当UserResInfoAction返回结果为success时,UserResInfoAction将查询出需要返回的数据转换为Json类型,返回的Json串通过正则表达式进行解析,回调函数callback处理请求返回的结果data。UserRes.jsp页面显示用户资源分配与使用的查询结果,UserRes.JSP和UserRes.js部分代码如下。endprint

(1)获取参数值,并以json的数据形式保存到params中

var params = {

params.queue = $('#queuename').val();

params.starttime = $("#starttimeymd").val();

params.endtime = $("#endtimeymd").val();

params.username = $('#username').val();

params.apptype = $('#apptype').val();

$('.system-select ul li a.active').each(

function(index,dom) {

params.machines += "," + $(dom).attr("id");

});

params.center = $('#userunit option:

selected').text();

}

(2)使用$.get方式處理请求返回结果data

$.get("UserResInfo-allocationused.json",

<!--服务器要接受的url->

params, //表单中传递的参数

function(data) {//回调函数

if (data == null || data.success == 'false') {

return;

}

var list = data.list;

$.each(list,function(index,data) { }

});

(3)struts.xml配置

<!--指定需要struts2处理请求后缀-->

value="page,json,file,index,action/>

<!--用通配符方式配置Action跳转路径-->

text/plain

outFileStream

用户资源分配与使用模块类图如图3所示。

本系统数据库中有13个表,用来存储系统中所有数据信息;用spring配置数据源和hibernate,数据库连接采用BoneCP连接池的方式,以提高数据库的使用效率。

本例中hibernate将数据库中user_chg表和allocation表映射为持久化类UserRes-Element和映射文件UserRes.hbm.xml,该表中存储用户的分配与使用详细信息;UserResInfoDao对象调用hibernateTemplate对象的方法getAllocattionUsed( ),实现对UserResElement中数据查询。

dataSource,sessionFactory,hibernate-Template等对象被配置在applicationContext.xml文件中,通过依赖注入,dataSource被注入到sessionFactory中,sessionFactory被注入到hibernateTemplate中,hibernate-Template被注入到UserResInfoDAO中[6]。

applicationContext.xml部分代码如下:

<! --数据库的配置-->

"oracle.jdbc.driver.OracleDriver">

……….//配置信息

<! -- Hibernate配置 -->

class="org.springframework.orm.hibernate3.

LocalSessionFactoryBean">

<!--注入数据源 -->

<!--注入映射文件 -->

com/urw/hibernate/beans/

Home.hbm.xml

com/urw/hibernate/beans/

UserRes.hbm.xml

……….

com/urw/hibernate/beans/

Jobstat.hbm.xml

3.4 Highcharts与jQuery的整合

HighCharts支持ASP,PHP,JAVA,.NET等多种语言,用浏览器运行时不需要插件,运行速度快、并且能够支持当前大多数浏览器[8,9]。

资源统计数据是时间序列化的数据,通过动态曲线能够更直观地显示数据在一个时间段中的变化过程。应用HighCharts来显示资源统计数据,可以极大地提高开发效率和显示效果,以CPU使用情况->用户时段使用情况为例,HighCharts部分代码如下,图表效果如图4所示:

$target.highcharts({

//图表类型选择

chart : {

type : chartType

},

//图表标题

title : {

……….//参数设置

}

},

// X轴的坐标值

xAxis : {

categories : names,

},

// Y轴的坐标值设置

yAxis : {

……….//参数设置

},

//当鼠标悬置数据点时的格式化提示

tooltip : {

valueSuffix : '%'

},

//数据点相关属性

plotOptions : {

……….//参数设置

},

//【图例】位置样式

legend : {

……….//参数设置

}

},

series : value

});

图4 用户时段使用情况数据显示图

4 与旧系统比较

4.1 功能完善

新资源管理系统增加3大模块,13个子模块,其中首页和作业运行情况模块,实时展示作业运行和资源使用情况,系统管理员可据此调整系统资源分配调度策略,用户可选择空闲的时段和队列提交作业,从而更合理高效的利用系统资源;用户资源统计模块,便于用户查询本人资源申请、分配、使用和缴费情况。扩展CPU使用情况,资源综合统计和模式应用模式使用情况等模块,大幅增加统计粒度,实现资源精细化管理。

4.2 响应速度

使用LoadRunner对系统进行测试,测试主要关注响应时间,分别访问新旧系统相同的功能模块,业务场景中设置100个并发用户进行查询任务,初始连接用户2人,每15秒增加2人,直到同时连接用户数100,100用户持续访问10分钟,然后每隔30秒减少5人,直到场景结束。各模块的系统响应速度最少提高13倍,最高达到99倍。CPU占用率和应用模式计算资源统计模块的平均事物响应时间对比数据如表1和表2所示,结果表明采用数据库索引、预处理优化数据结构取得明显效果。

4.3 用户体验

1)新系统通过数据结构优化,提升系统响应速度,大幅减少了查询时间。

2)设计查询条件继承机制,模块间具有的相同查询条件时,不用重复选择。

3)旧系统中查询模块杂乱,用户很难找到需要的统计信息,新系统对所有查询模块精细分类,并从用户操作习惯考虑合理布局,系统使用便捷性明显提升。

4)旧系统只提供数据查询,所有统计图需通过excel绘制,新系统图表由HighCharts自动生成,图形丰富,并提供导出和打印功能,大幅减少统计工作量。

5 结束语

本文针对原资源管理系统中出现的问题进行重新设计与实现,目前系统已在国家级气象业务内网中投入使用,下一步将推广到各区域中心,根据需求继续发展完善。随着天气、气候模式预报精度的提高、物理过程的复杂化,以及集合预报样本的增加,导致模式计算规模越来越大,模式运算所需的计算资源和存储资源也将迅速增加,如何利用有限的资源为气象用户做到最优、最好的服务,是需要我们系统资源管理工作者认真思考的问题[10]。

参考文献

[1] 孙周军,肖文明,宋远清,等.气象信息实时监视系统改进设计与实现[J].成都信息工程学院学报,2008,19(4):507-511.

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

[3] 吕爽,马艳军,刘一谦,等.国家气象网络计算资源管理和共享方案的应用[J].贵州气象,2013,37(5):40-42.

[4] 孙长明,徐立建.基于Hibernate+Spring+Struts的Web应用开发框架[J].铁路计算机应用,2007,16(3):31-33.

[5] 赵晓君,崔建涛,邓璐娟,等.基于SSH和jQuery的大学生校园综合服务平台的设计与实现[J].郑州轻工业学院学报,2014,29(3):100-104.

[6] HighCharts官網.http://www.highcharts.com/demo[OL],2015.

[7] 常飚,王斌.气象计算资源管理系统设计[J].计算机工程,2014,37(8):281-284.

[8] 孙周军,肖文明,宋远清,等.气象信息实时监视系统改进设计与实现[J].成都信息工程学院学报,2008,19(4):507-511.

[9] 吴孟春,丁岚.HighCharts组件在气象业务中的开发和应用[J].计算机与网络,2014,(12):65-68.

[10] 陈志雄.利用Struts2 框架和jQuery 框架实现AJAX 的开发[J].现代计算机,2011,(8):77-80.endprint

猜你喜欢
预处理资源管理
菌剂预处理秸秆与牛粪混合对厌氧发酵产气的影响
国企改革中政工工作与人力资源管理的融合推进
3S技术在重庆市荣昌区森林资源管理“一张图”年度更新中的应用
手术器械预处理在手术室的应用
电信管线资源管理系统在规划设计中的应用
强化国土资源管理,调控土地交易行为
企业战略人力资源管理策略
种养废弃物预处理技术可行性分析与实践
液化天然气技术及其应用探析
碱预处理提高香蕉茎秆厌氧消化产气性能的研究