并行计算集群电源的能耗控制方法

文档序号:6650087阅读:321来源:国知局

专利名称::并行计算集群电源的能耗控制方法
技术领域
:本发明属于网络并行计算集群电源的能耗控制的
技术领域

背景技术
:现有的并行集群系统耗电量巨大,但实际利用率仅在50%左右,造成了电能的极大浪费,而实际上电费开支也是很庞大的。因此,如何有效节约电能的消耗,又不造成性能的下降,是本技术所要解决的问题。DVS是dynamicvoltagescaling动态电压调整的简称。研究结果显示,处理器的功率跟它的电压几乎是线性关系,能耗跟电压的三次方成正比关系,而处理器又是计算机中能耗的大头,那么根据负载的情况动态调整处理器的电压就能够节省电能的消耗。目前DVS在标准ACPI和IPMI中申明支持。ACPI是高级配置的电源接口规范的简称,IPMI是智能平台管理接口的简称。DVS是最近研究的热点,但它在cluster上的应用现在主要还停留在研究阶段,主要原因是,支持DVS的ACPI现在在一般集群上还都没有完全实现,也就是说,现在于一般的集群,是没办法进行DVS的。一些系统,比如webserver对内存的使用有一定的规律性,那么,可以通过对内存的空闲间隔时间的建模以及预测,来设置内存的能耗状态,从而减少内存的能源消耗。参见Disk-awareRequestDistribution-basedWebServerPowerManagement,LinZhong,DepartmentofElectricalEngineeringPrinceton。同上,磁盘的使用也有一定规律性。依据负载的分布以及系统得性能来动态的关闭或者启用硬盘。参见A.R.Lebeck,X.Fan,H.Zengh,andC.S.Ellis.Powerawarepageallocation.InProceedingsoftheNinthInternationalConferenceonArchitecturalSupportforProgrammingLanguagesandOperatingSystems(ASPLOSIX),2000.而对内存和磁盘的管理,由于缺乏相应的硬件的支持,现有的研究更多的是停留在模拟的阶段;而且内存和磁盘也不是计算机中功耗的主要部件,它们在实际系统中耗电比例很小(一块普通磁盘正常工作的功耗大约是2、3w)。这两方面的工作和研究这两年来已经越来越少了。相对来说,关掉结点省电更彻底,操作也方便。但是这个时候就带来了新的问题,把空闲结点关掉了后来新的任务怎么办,再把机器打开必然会引入不小的延迟,这将大大影响这个系统得性能。
发明内容本发明的目的在于提供一种省电但又不影响系统性能的并行计算集群电源的能耗控制方法。我们对此使用的方法是在关闭其他空闲结点地同时,也保留有限数目的结点作为冗余,以备新进任务的到来。通过这种方式,来尽量减小对系统性能的影响。这里面有两个关键点。一是冗余结点数目的决定,二是要随着负载动态的开关结点。本发明的特征在于该方法在关闭其他空闲结点的同时,也保留有限数目的结点作为冗余,以准备迎接新任务到来的方法,该方法在互联网络管理结点中结合一个名称为openPBS的公开源码的可移植的批处理系统,按以下步骤完成步骤1)修改openPBS中的调度器,在其中插入我们的代码,以便在任务结束或者由新任务提交或者在每一个调度周期到来的时候执行我们的代码,插入的方法如下修改位于源码包中src/scheduler.cc/samples/fifo/的fifo.c,在其中的函数intscheduling_cycle(intsd)头部加入函数调用node_manage(cmd,sinfo),修改为intscheduling_cycle(intcmd,intsd),node_manage是我们自己定义的函数,就是用以实施结点开关控制的策略的;步骤2)初始化,令N=1,N为所述冗余结点数目;步骤3)检查事件命令,如果是错误或者退出的命令则退出,否则进入下一步;步骤4)判别是否是新任务提交,若是新任务提交,则更新任务的历史记录,根据记录按下述方法重新计算N首先,对最近一段时间内提交的任务的记录按下式计算所述任务所要求结点数目的累积概率分布cdf(x)=P(n≤x),x是自变量,范围为最近提交的任务所要求的结点数目的数值范围,n表示某个任务要求的结点数目;上式的含义是最近一段时间内,所要求的结点数目不大于x的任务在最近所有任务中所占的比例;随着x的变化,就构成了任务要求结点数目的累积概率分布;其次,选择某一个概率p0,p0的取值范围为80%~90%,来求得对应的结点数目,以作为冗余结点数目N,即N=cdf-1(p0),接下来转入步骤5;若非新提交任务,则直接转到步骤5;步骤5)计算空闲结点数目n_freen_free=n_on-n_use-n_require,其中,n_on为所述系统中处于开机状态的所有结点的数目;n_use为正在运行任务的结点数目;n_require为还没有被调度运行的任务所要求的结点数目;步骤6)判断空闲的结点数目与冗余结点数目之大小对于非新提交任务的情况,N为上一个调度周期的冗余结点数目N;对于新提交任务的情况,N由步骤4中计算得出;步骤7)若n_free<N,则用WakeOnLAN的局域网唤醒操作启动N-n_free个结点;若n_free>N,则关闭n_free-N个空闲结点;步骤8)在下一个调度周期,重复步骤3~步骤7。本发明是在下述的测试环境下实施的硬件服务器7台(ItaniumIIRX2600)CPUIntelItanium21GHz×2内存2G软件RedHatLinuxAdvanceServerrelease3本发明按以下指标进行评价●EnergyConsumption消耗的电能,实际测试中以累计的开机时间来计算●Performance系统得性能,这里我们用boundedslowdown带边界的减速率来表示。对某一个任务Ti,最后,我们用平均的boundedslowdown来衡量系统的整体性能。平均的值越大,性能越差。整个集群在PBS下的大致部署框架可以用图1来描述。图中,pbs_sched就是我们所修改的调度器,运行在用作服务器的结点上,来控制其他客户结点的启动与关闭。事实上,客户结点上也要作一些相应的设置。比如服务器远程关掉某个结点,我们会标志该结点已经被关掉,不要在其上再分配任务,那么,后来,当此结点由关机的状态启动后,得通知server自己已经启动起来了,可以参与资源的调度了。这个动作可以在客户结点每次开机的时候自动运行。为了比较,我们另外又加入了一种策略,就是随时关掉所有空闲的结点,有任务到来时再打开相应数目的结点以跑任务,我们称之为“全关”。而原本不实施任何电源管理策略的情况,我们称之为“全开”;我们所实现的电源管理方法,我们称之为“冗余”。我们的测试任务集来自http//www.supercluster.org上的trace记录。该记录是来自于一个拥有224个cpu的cluster。由于我们没有他们那么大规模的集群,因此,对任务要求的结点数,提交的间隔,运行的时间都进行了按比例缩放。测试的结果见图2和图3。从测试结果看出,我们提出并且应用的保留冗余结点的方法,从节能上,效果已经接近全关的方法(节能的极限),也就是说,已经接近能耗的下界了。从bounded_slowdown这个性能指标来看,相对于全开的指标(该指标也是最优指标)来说,差别不是很大,而对于全关来说,就好了很多。由于该测试集相对于原任务集进行了按比例压缩,测出的一些数据可能会有些失真。尤其是任务提交间隔的压缩,使得系统更加繁忙。以我们按原任务集模拟的结果来看,保留冗余t的节能效果更接近于“全关”的策略,而平均的bounded_slowdown也更接近于“全开”,就是说,实际上“保留冗余结点”这个方法的效果还会更好。图1.并行集群部署图;图2.本发明的电能消耗比较图;图3.本发明的系统性能比较图;图4.累积概率分布与冗余结点数目计算示范图;图5.本发明的程序流程具体实施例方式我们保留冗余结点的主要目的是保证系统的响应时间不会因我们的策略而增长太多,也就是保证QOS。基本的思路就是时刻保持有N个冗余结点,尽可能使下一个任务到来时,能够立即投入执行,而不会引入额外的延迟。保留多少冗余结点,也就是N的取值大有考究。一种方法是预测,通过对负载的建模来确定冗余的多少。由于负载的建模在预测上并不是很准,因此,我们采用另外一种思路假设从统计上来说,N能满足绝大多数(比如90%)的任务的需求,那么当保留N个冗余结点的时候,90%的可能新提交的任务可以立即运行,这样从总体上来说也能极大减小对系统性能的影响。对最近一段时间内提交的任务的记录按下式计算任务要求结点数目的累积概率分布cdf(x)=P(x≥n),x是自变量,范围为最近提交的任务所要求的结点数目的数值范围,n表示某个任务要求的结点数目;上式的含义是最近一段时间内,所要求的结点数目不大于x的任务的总和在最近所有任务中所占的比例;随着x的变化,就构成了任务要求结点数目的累积概率分布;对最近一段时间内提交的并行任务的记录进行统计分析,按照上式计算累积概率分布。然后根据给定的概率,比如80%,令N=cdf-1(80%),以作为保留的冗余数目。也就是说,这样从统计上来说80%的任务所要求的结点数目不会超过N。图1演示了这种计算(数据来自有224个结点的集群的任务记录)。横轴表示结点数目,纵轴表示对应的cdf(x)的值。在图1中可以看到冗余大约8个结点就可以应付80%的任务了。而8个结点相对于224个结点来说,完全是可以接受的(8/224=3.6%)。这儿要注意的是随着系统的持续运行,历史记录也在不断更新,N也在一直重新计算。因为负载随时在变化,而要维持总是冗余N个结点的状态,那么肯定要随时根据当前的状态决定开机和关机,这个工作显然不能由人来完成,而是应该经由程序控制的。由于Linux下rsh对root账户的限制,关机是通过ssh远程关机的,只要配好RSA密钥,直接执行sshnode_namepoweroff就可以关掉node_name指示的结点。而开机是通过前面提到的WakeOnLAN来实现的。WakeOnLAN一般翻译成局域网唤醒。它指通过网络远程开机的技术。它的工作原理是在局域网上广播含有目标机器的网卡Mac地址的数据包,当目标机器接受到这个包后,就把本机启动起来。它需要网卡和主板的支持(现在市场上的网卡和主板基本上都支持)。由于我们的方法是要用到自动开机的,因此,这是我们的电源管理存在的基础之一。动态开关结点的策略简述每当有任务提交或者结束的时候,计算N,然后检查当前空闲结点的数目,如果小于N,那么通过WakeOnLAN打开不足的结点;如果大于N,那么自动关掉多余的结点。实际操作中还要看集群管理软件的调度器的调度策略进行相应修改。开关结点都要求自动完成,而无须手工操作。一般并行计算集群都会使用资源管理软件来整合和管理整个集群的资源,同时也负责分发和调度提交上来的任务,这样的软件有openPBS等。PBS是PortableBatchSystem的简称,是一个管理任务和计算机资源的系统。openpbs就是开源可以免费使用的PBS。我们在结点层面上的电源管理操作实际上也就是对集群资源的一种管理。但是我们的这种管理可能会影响其它管理软件(如PBS等)的正常运作,比如当我们把结点关掉后,PBS就会认为那些结点unavailable了,当有任务请求大于当前的最大资源时,它会直接返回failure,而不是等待将那些结点再行启动起来。为了解决两者之间的不协调,我们选择将我们的电源管理方法与openPBS整合到一起。与openPBS整合到一起,也有很多好处,比如当系统使用openPBS进行管理时,所有任务都通过openpbs来进行提交和调度。这样,我们就可以知道提交的任务的历史记录,也能够轻易知道系统的负载状况以及具体某个结点的状态(free或者busy)。我们整合的方法是修改openpbs的调度器,在其中插入代码。每当有任务结束或者有新任务提交又或者在每一个schedulecycle时执行我们的代码,就是如前文所述的那样,动态开关结点,并且决定任务的调度。图5描述了修改后的scheduler的大致流程。为了简便起见,只是着重描绘出scheduler主循环体中关于电源管理的大致流程。其它任务的调度,资源的分配等就不画出来了。权利要求1.并行计算集群电源能耗控制方法,特征是该方法在关闭其他空闲结点的同时,也保留有限数目的结点作为冗余,以准备迎接新任务到来的方法,该方法在互联网络管理结点中结合一个名称为openPBS的公开源码的可移植的批处理系统,按以下步骤完成步骤1)修改openPBS中的调度器,在其中插入我们的代码,以便在任务结束或者由新任务提交或者在每一个调度周期到来的时候执行我们的代码,插入的方法如下修改位于源码包中src/scheduler.cc/samples/fifo/的fifo.c,在其中的函数intscheduling_cycle(intsd)头部加入函数调用node_manage(cmd,sinfo),修改为intscheduling_cycle(intcmd,intsd),node_manage是我们自己定义的函数,就是用以实施结点开关控制的策略的;步骤2)初始化,令N=1,N为所述冗余结点数目;步骤3)检查事件命令,如果是错误或者退出的命令则退出,否则进入下一步;步骤4)判别是否是新任务提交,若是新任务提交,则更新任务的历史记录,根据记录按下述方法重新计算N首先,对最近一段时间内提交的任务的记录按下式计算所述任务所要求结点数目的累积概率分布cdf(x)=P(n≤x),x是自变量,范围为最近提交的任务所要求的结点数目的数值范围,n表示某个任务要求的结点数目;上式的含义是最近一段时间内,所要求的结点数目不大于x的任务在最近所有任务中所占的比例;随着x的变化,就构成了任务要求结点数目的累积概率分布;其次,选择某一个概率p0,p0的取值范围为80%~90%,来求得对应的结点数目,以作为冗余结点数目N,即N=cdf-1(p0),接下来转入步骤5;若非新提交任务,则直接转到步骤5;步骤5)计算空闲结点数目n_freen_free=n_on-n_use-n_require,其中,n_on为所述系统中处于开机状态的所有结点的数目;n_use为正在运行任务的结点数目;n_require为还没有被调度运行的任务所要求的结点数目;步骤6)判断空闲的结点数目与冗余结点数目之大小对于非新提交任务的情况,N为上一个调度周期的冗余结点数目N;对于新提交任务的情况,N由步骤4中计算得出;步骤7)若n_free<N,则用WakeOnLAN的局域网唤醒操作启动N-n_free个结点;若n_free>N,则关闭n_free-N个空闲结点;步骤8)在下一个调度周期,重复步骤3~步骤7。全文摘要本发明属于并行集群电源能耗控制领域,其特征在于,该方法在关闭其他空闲结点时也保留有限数目的结点作为冗余,以迎接新任务,所述方法在服务器中通过在openPBS系统调度器中加入启动或关闭结点的代码来实现,而冗余结点的计算要根据在最近一段时间内所有到达任务所要求结点数目的累积概率分布来决定,本发明设定上述分布中80%~90%所对应的结点数目作为冗余结点的数目,它随着在系统运行过程中,所形成的任务的历史记录的不断更新而更新。实验证明,本发明的节能效果已接近全关的状态,即能耗的下限。文档编号G06F1/32GK1758610SQ20051011577公开日2006年4月12日申请日期2005年11月11日优先权日2005年11月11日发明者陈文光,蒋飞云,郑纬民申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1