论文部分内容阅读
当前,云计算正在受到越来越多的关注,开源云平台如Eucalyptus、OpenStack等主要提供IaaS层上的服务,即基础设施即服务,用户向云平台购买一定量的虚拟机,将自己的任务提交到购买的计算节点上去执行。当用户完成计算任务时,可以将这些云端的虚拟机释放掉,他们所支付的只是使用期间的费用。通常这些计算资源的负载会随着时间发生明显变化,呈现“震荡”现象,这给用户准确购买计算资源的数量带来困难。云计算通过引入auto scaling机制解决上面的问题。所谓auto scaling是指系统会通过监控负载的大小情况,根据用户提前制定的策略自动进行资源规模的伸缩。目前auto scaling机制主要应用于web服务中。
在本文中,我们将auto scaling机制应用到批处理系统中,与服务器的CPU、内存等性能指标相比,用户更关心的是每个作业能否在它们的deadline之前完成。本文在实验室已有的基于Eucalyptus的瀚海星云计算平台的基础上,分别用Torque和Maui作为作业管理软件和调度软件,设计并实现了基于批处理的auto scaling系统。为了尽量减少自动伸缩对底层云平台的影响,我们将整个auto scaling系统分成上下两层:上层是auto scaling系统的核心部件,负责接收用户提交的作业、做出资源扩展和收缩决定、调用云平台的接口启动/关闭虚拟机等;下层是云平台,负责提供计算资源、执行作业等。分层的设计降低了auto scaling部件与底层云平台之间的耦合,只要将auto scaling系统调用的云平台接口替换,很容易实现系统的移植。
本系统处理的批作业对计算资源的性能要求大致相同,用户掌握大量历史信息,可以估算每个作业的预计运行时间。通过参考任务的完成期限、支付费用限制及虚拟机启动时间等信息,我们设计实现了一种比较简单实用的自动伸缩算法。Auto scaling系统能够根据该算法自动地扩展和收缩计算资源规模,保证任务在用户提供的截止时间之前完成的前提下,最大限度地为用户节省资金。