数据中心资源管理系统及作业调度方法

文档序号:6436803阅读:299来源:国知局
专利名称:数据中心资源管理系统及作业调度方法
技术领域
本发明属于计算机系统技术领域,尤其涉及提高数据中心资源共享效率的方法。
背景技术
数据中心(DataCenter)通常是指在一个物理空间内实现信息的集中处理、存储、 传输、交换、管理的场所,由位于同一个机房的一个或者多个机群组成。机群是由众多服务器或工作站(workstation)通过高速网络连接起来构成的计算机系统,构成机群的服务器或工作站被称为节点。近年来,互联网应用发展迅速,呈现出应用类型多,应用规模大(活跃用户量、访问量和业务数据量)等特征,使得支撑互联网应用的数据中心规模急剧扩大,由几百台、几千台扩展至几万台甚至是几十万台规模。并且,由于应用负载特征的多样性、数据中心节点资源的多样性以及节点资源在使用过程中的动态性,给数据中心机群作业调度带来了很大的困难。如何合理地调度作业(例如互联网应用),高效地共享机群资源,提高数据中心资源利用率,是数据中心资源管理的关键问题。一般的数据中心资源管理系统如附图1所示,采用资源分区的方法将数据中心资源划分为多个独立的分区(多个独立的小机群),根据应用和资源的特征,为每一个分区 (机群)设置不同的作业调度策略,在一定的规则下,不同分区间可以租借部分资源。这种方法简单、易实现,但是存在机群数量多,规模小,作业不能跨分区有效共享资源的现象,造成资源碎片;此外,租借式的资源共享方法缺乏灵活性和即时性,导致作业无法快速扩容和缩容,不能很好地适应当前互联网应用的需求,造成资源利用率低,应用成本较高。

发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种兼顾公平和容量的数据中心调度方法。本发明的目的是通过以下技术方案实现的—方面,本发明提供了一种数据中心资源管理系统,所述系统包括位于数据中心的多个物理节点和数据中心资源管理器,所述数据中心资源管理器以组为单位来管理和分配物理节点上的资源,一个或多个组共享数据中心的多个物理节点上的资源,每个组各自拥有资源配额和作业调度算法,所述每个组的资源配额为该组可以使用的最低的资源使用数量,每个组的作业能运行于数据中心中的任何满足作业运行要求的物理节点上。上述系统中,数据中心资源管理器可以以配置文件方式来对组进行管理,在所述配置文件中,为每个组配置的属性包括名称、资源配额、有权向该组提交作业的用户、作业调度策略、作业抢占调度策略、优先级、已使用的资源数量。上述系统中,数据中心资源管理器可以通过修改配置文件来建立组、删除组或改变每个组的属性。上述系统中,其中用户或者应用可以向多个有提交作业权限的组提交作业,但同
4一作业能且只能提交给一个组。上述系统中,其中数据中心资源管理器还用于进行作业调度。另一方面,本发明提供了一种用于上述系统的作业调度方法,所述方法包括步骤1,计算每个组的优先级;步骤2,选择要参与作业调度的组;步骤3,对所选择的组进行作业调度。上述方法中,所述步骤1可以按照如下公式来计算每个组的优先级一个组的优先级=所有组的资源配额的最小公倍数/该组已用资源数量。上述方法中,在所述步骤2之前还包括对多个组按照优先级从高到低进行排序的步骤。上述方法中,所述步骤2按照下面的优先顺序来选择要参与作业调度的组(1)选择优先级最高且有等待作业的组;(2)选择比该组优先级高的所有组等待作业个数为0,而该组是有等待作业的组;(3)选择前面优先级高的、参与了作业调度但不成功的组,且该组已用资源小于其资源配额的优先级高的组。上述方法中,步骤幻包括步骤31,根据所选择的组的作业调度策略进行作业调度;步骤32,如果作业调度成功,则转至步骤1 ;如果作业调度不成功,判断是否需要进行作业抢占调度;步骤33,对所选择的组进行作业抢占调度;步骤34,如果作业抢占调度成功,则睡眠一段时间,转至步骤1 ;否则,判断所选择的组是否是优先级最低的组,如果是,则睡眠一段时间,转至步骤1,否则选择下一个组,并判断其已用资源的数量是否小于其资源配额,如果小于,则转至步骤31,否则睡眠一段时间,转至步骤1。上述方法中,步骤32可以采用下面的步骤来判断是否需要进行作业抢占调度当一个组的已用资源小于“其资源配额X第一阈值”的值时,需要进行抢占调度;当一个组的已用资源大于“资源配额X第二阈值”的值时,其可以被抢占调度;其中第一阈值的取值范围为(0,1],第二阈值的取值范围为[1,自然数)。上述方法中,第一阈值可以是0.9,第二阈值可以是1. 1。与现有技术相比,本发明的优点在于以组为单位来管理和分配资源以及进行作业调度,每一个组的作业能运行于数据中心任何一台满足作业运行要求、有足够空闲资源的节点上,因此不存在资源分割和资源碎片的现象。当负载高时,多个组按照资源配额成比例地共享数据中心的资源,当负载低时,有等待作业的组可以按资源配额成比例地申请空闲资源,尽可能多地下发作业,从而提高数据中心资源利用率。而且可以通过修改组的资源配额以及作业调度策略,实现多个组的资源的快速扩容和动态收缩,满足应用作业调度需求的多样性以及应对突发时间的需求。


以下参照附图对本发明实施例作进一步说明,其中图1为现有的数据中心资源管理系统的结构示意图;图2为根据本发明实施例的数据中心资源管理系统的结构示意图;图3为根据本发明实施例的数据中心作业调度方法的流程图。
具体实施例方式为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明, 并不用于限定本发明。图2所示是根据本发明一个实施例的数据中心资源管理系统的架构示意图。该系统包括位于数据中心的多个物理节点以及数据中心资源管理器。其中,数据中心资源管理器以组(Group)为单位来分配和管理多个物理节点上的资源以及进行作业调度。多个组共享数据中心的所有资源。可以为每个组分配一定的资源配额(Resource Quota)和选择作业调度策略。用户或者应用可以向多个有提交作业权限的组提交作业,但同一作业能且只能提交给一个组。一个组可以代表一个用户组或应用,例如应用可以是如IM即时通讯,开心农场,QQ游戏,在线视频等的互联网业务。与现有的数据中心资源管理系统中的分区不同,分配给一个组的资源配额是一个逻辑概念,表示保证满足它可以使用的最低资源数量,并不包含专用于该组的节点列表。每个组的作业能运行于数据中心任何一台满足作业运行要求、有足够空闲资源的节点上,因此不存在资源分割和资源碎片的现象。而现有系统中的分区是物理概念,通常分区各自拥有一定数量的节点,分区之间相互独立。其中,数据中心常用的资源划分主要包括以下几种形式(1)物理机;( 虚拟机, 为每一台虚拟机分配的计算资源,主要有CPU,内存,磁盘和网络;C3)槽(Slot),按照节点的CPU个数划分成多个槽;(4)Linux容器(Container)。本发明可以支持多种机群资源划分方式,也就是任何形式的数据中心的资源都可以按照本发明提供的方法来进行管理和分配。借助下文将要介绍的作业调度方法,当机群负载高时,多个组按照资源配额公平地共享机群资源,满足每个组的最低资源需求;当机群负载低时,有等待作业的组可以按资源配额成比例地申请机群空闲资源,尽可能多地下发作业,从而提高机群资源利用率,实现机群资源可伸缩管理。数据中心资源管理器可以通过配置文件(例如其可以命名为Group, conf)的方式来实现组的配置和管理。根据这个配置文件,数据中心资源管理器读取并初始化每个组的资源配额、作业调度策略、作业抢占调度策略和权限管理等配置信息。通过修改配置文件, 可以动态地组织多个组,达到数据中心资源管理的灵活性。也可以为每个组增加各种属性以及权限,例如为每个组选择合适的作业调度策略,来实现数据中心资源管理的多样化,满足互联网应用作业调度需求的多样性。在一个实施例中,Group, conf文件格式例如为对每个组的配置包含下列关键字 (关键字与内容可以以冒号进行隔离)Name 组的名字,它可以由大写字母(A-Z)、小写字母(a_z)、数字(0_9)以及下划
6线(_)构成的字符串,但其最大长度不超过常量MAXGROUPNAMELEN(最大分区名长度),并且任何两个组的名字不能相同。ResourceQuota 该组的资源配额,即该组最低资源使用数量。它必须是大于O的自然数,它的取值范围为(0,可用资源数量)。Users 有权向该组提交作业的用户信息,可以如下形式描述"username | username,,其中“ |,,表示“或者,,。khedPolicy 该组的作业调度策略。可以字符串表示,不区分大小写,主要有 FIFO, Priority, Capacity, BackFill 等作业调度策略。I^reemptiv必chedPolicy 该组的抢占作业调度策略。可以字符串表示,不区分大小写,主要有低优先级作业优先、最近运行作业优先等抢占作业调度策略。Priority 该组的优先级。(可参见下文讨论的组的优先级计算方法)UsedResource 该组所有已运行作业占用资源数量的总和。对于已用资源的数量的计算方式,目前通用的有两种(1)直接按照CPU的个数来计算已用资源数量。⑵关键资源计算方法,例如假设一台服务器有4个CPU,16G内存。作业的资源需求是2CPU,4G内存。它占用了整台服务的CPU,1/4的内存,按占用比例最大的CPU计算共享资源使用量,即1/2台服务器;应指出本发明支持多种资源计算方法,在本发明中要求的得到一个组的已用资源的数量,至于其具体计算方法,用户可以根据需求,自行选择。另外,上文关于资源配额的设置与资源计算方法相关,如果采用CPU个数的方法,其配额只要指定最低可使用的CPU个数就可以了 ;如果采用关键资源计算方法,其资源配额需要指定CPU,内存,磁盘和网络带宽。系统启动时,读取配置文件获取Group的资源配额、作业调度算法和作业抢占调度算法等的初始值,但其值在系统运行时是可以动态修改的,例如可以通过API动态修改。 每次作业调度时,根据组的新的资源配额值计算该组的优先级,以及根据该组的调度算法配置,选择不同的作业调度算法。每个Group可以根据应用负载特征,选择合适的作业调度策略和作业抢占调度策略,满足互联网应用作业调度需求的多样性。图3示出了根据本发明一个实施例的数据中心作业调度方法的流程图。该方法采用了两级的作业调度方法。第一级作业调度,根据每个组的优先级和已用资源情况,选择参与作业调度的组,保证多个组按照资源配额成比例地共享机群资源;第二级作业调度,根据所选择的组的配置,选择作业调度算法,调度该组的等待作业。主要包括以下步骤步骤1, 首先计算每个组的优先级并按优先级由高到低排序;步骤2,选择参与作业调度的组;步骤 3,按照所选择的组的配置,进行作业调度。另外,如果机群目前负载高,资源紧张,则利用作业抢占调度实现多个组按照资源配额成比例地共享机群资源。在一个实施例中,每个组的优先级可以由该组的资源配额以及它所有已运行作业占用资源总量计算得出,数值越大,优先级越低,具体计算方法如下(1)设置一个组的资源配额;(2)计算所有组资源配额的最小公倍数;(3)计算该组的已用资源数量;(4)该组优先级=所有组的资源配额的最小公倍数/该组已用资源数量;当该组已用资源为0时,其优先级固定为0。
在上述组的优先级算法中,通过求最小公倍数,再除以该组使用的资源数可以保证多个group按资源配额比例公平的共享集群资源。举例来说,有两个组A和B,组A的资源配额是2,组B的资源配额是3,运行相同的作业,每个作业消耗的资源假设是1,那么当A 已运行作业个数为1,B已运行作业个数为1时,B的优先级比A高,作业调度时排在前面,但是当B已运行作业个数为2时,其优先级值为4,而A优先级值为3,A排在前面。再例如,A 和B的资源配额都是1,A运行一个作业,B没有运行作业,作业调度时,B的优先级比A高, 当B运行作业为两个时,A的优先级比B高。可见,上述关于组的优先级计算算法在多个组共享机群资源时,按已用资源与其资源配额的比值数值,由低到高排序,保证了排在前面的优先得到作业调度的权利。一次作业调度流程,会选择优先级高的组进行作业调度,如果它的作业调度成功,则本次作业调度结束,进行下一次作业调度,如果它没有等待作业或者它后面的组的已用资源小于它的资源配额,则会接着调度下一个组的作业。另外,为了提高算法的效率,可以按优先级从高到低进行排序,以方便后面的选择步骤。在一个实施例中,可以按照下面的优先顺序来选择要进行作业调度的组(1)选择优先级最高且有等待作业的组;( 选择在该组前面优先级高的所有组等待作业个数为 0,而该组是有等待作业的组;C3)选择前面优先级高的组,参与了作业调度,但是作业调度不成功,也就是等待作业没有匹配上合适的计算资源,而该组已用资源小于它的资源配额。 除此以外的组,都不会得到作业调度的机会。在一个实施例中,可以采用作业调度和作业抢占调度相结合的方式来完成对作业的调度。进行作业抢占调度的目的是保证多个组公平地共享集群资源,防止一个组在机群空闲的时候,下发很多作业,而且都是长作业。机群忙时,其它组可以通过作业抢占调度来抢占该组的作业,以使自身的作业得到下发。应指出,一次作业调度流程只调度一个组的一个作业。从上文可看出,一次作业调度流程分为两个步骤,一是选择要进行作业调度的组,二是根据选择的组进行作业调度,但是对该组的作业调度一次只调度一个作业。一个作业调度成功后,作业调度流程完成,会进入下一个作业调度流程,会重新计算每个组的优先级,对这些组进行重新排序。更具体地,如图3所示,该方法包括以下步骤a)置标志 IsSched 等于 False ;其中,该标志的作用是判断作业调度流程是否选择了一个组进行作业调度。通常, 选择一个组进行作业调度的可能性会存在三种情况(1)选择优先级最高的组,该组有等待作业,进行作业调度,且作业资源匹配、作业下发成功,则本次作业调度流程结束;(2)优先选择优先级高的组进行作业调度,但是发现这些组没有等待作业,则接着调度优先级低一些,但是有等待作业的组,这时IsSched值为false,因为前面的组没有进行作业调度; (3)前面优先级高的组有等待作业,并且作业调度不成功,则这个时候IsSched值为true, 作业调度流程会接着调度后面的组,但是会附加一个条件,该组的已用资源小于它的资源配额。这样做的目的是(a)保证多个组的作业调度之间的公平性,已用资源/资源配额这个比值小的组优先得到作业调度的权利;(b)保证每个组的最小资源配额。就是说,就算前面的组作业调度不成功,排在后面的组,只要它的已用资源小于它的资源配额,它依然有机会得到作业调度。这样不仅可以满足每个组的最小资源配额,而且在机群空闲资源时,每个组根据资源配额比例,公平地分享。即在机群忙时,多个组按照资源配额比例公平的分享机群资源;在机群闲时,有等待作业需要下发的组,按照资源配额比例,公平的分享空闲资源。b)计算每个组的优先级;c)对于组按优先级由高到低进行排序;d)选择优先级最高的组;e)判断被选择的组是否有等待作业?没有,则跳转至步骤1);f)置标志 IsSched 等于 iTrue ;g)根据所选择的组的配置选择合适的作业调度算法,进行作业调度;正如上文所介绍的,作业调度算法的初始值已经在配置文件里设置,但也可以动态地选择。h)判断所选择的组的作业调度是否成功?成功,则跳转至步骤a);i)判断所选择的组是否需要作业抢占调度?不需要,则跳转至步骤1);可以通过设置两个阈值,A和B,来判断一个组是否需要进行作业抢占调度和是否能被抢占调度,其中A的取值范围为(0,1],例如可以是0.9,B的取值范围为[1,自然数), 例如可以是1. 1,设置两个阈值A和b的目的是为了避免抢占调度产生抖动。当一个组的已用资源小于“其资源配额XA”的值时,需要进行抢占调度。当一个组的已用资源大于“资源配额XB”的值时,可以被抢占调度。A和B的值是可以根据需求进行配置的。一个组被抢占调度后一段时间内(例如20秒)不参加作业调度,也就是说作业调度流程会跳过该组, 直接调度后面的组,这样可以防止作业调度产生抖动。而且当一个组被抢占后的一段时间, 例如一分钟,如果它的已用资源数量大于它的资源配额,仍不参与作业调度。j)进行该组的作业抢占调度;k)判断Group作业抢占调度是否成功?成功,则跳转至步骤ο);1)判断该组是否是最后一个组?是,则跳转至步骤ο);m)选择下一个组;η)判断被选择的组的已用资源数量小于它的资源配额或者IsSched等于True ? 为真,则跳转至步骤e);ο)睡眠一段时间,转至步骤a);从上述步骤可以看出,优先选择的组有等待作业且优先级最高的组,再者是选择有等待作业且已用资源小于其资源配额的组参与作业调度。系统还可以设定一个默认组 (Default Group),该组的资源配额较少(约为机群资源总量的1 % _5 。当机群负载高时,由于默认组的资源配额少,优先级低,而且它的已用资源数量很容易超过它的资源配额,所以默认组的大部分等待作业得不到调度和执行;当机群负载低时,默认组可以按资源配额成比例地申请机群空闲资源,调度和执行它的等待作业,其适合用户提交优先级低、没有完成时间限定的作业。另外,如果所选择的组的一个作业调度成功,则表明机群有空闲资源,负载不高, 立即进入新的作业调度流程,可以有效地调度大量小作业;否则,调度流程睡眠一段时间, 避免重复无效的作业调度。而且,系统管理员可以通过更改组的资源配额,在作业抢占调度的帮助下,实现多个组的资源的快速扩容和动态收缩。
下面以举例的方式来说明在上述实施例中所提供的系统和方法的应用及其效果。 例如,由于智能手机的普及,越来越多的人们在乘坐公交车或者地铁的时候,登录手机应用 (新闻,音乐,图书等)消遣乘车时间,使得手机应用的高峰期集中在早上七点半至九点,晚上五点半至七点半这两个区间。当人们打开电脑开始工作时,门户网站、电子邮箱、开心农场和网页游戏等PC客户端应用迎来了它们的高峰时段。晚上八点至十一点,休闲类应用进入高峰时段,如网络游戏、在线视频等。所以可以按照应用高峰时段的不同,设置应用在不同时间的资源配额,比如规定手机应用在早上七点半到九点的资源配额是20,其它时间是 10,新闻网站在上班时段的资源配额是50,其它时段是20,网络游戏晚上时间的资源配额是50,其它时间是20,在作业抢占调度和应用自动部署等服务的协助下,每个应用的使用资源随着时间变化不同而不同,实现每个组的资源快速扩容与动态收缩。这是由于通过按时段动态改变各个组的资源配额,每个组优先级会变化,会主动地抢占其它组的资源或者被其它组抢占。虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。
权利要求
1.一种数据中心资源管理系统,所述系统包括位于数据中心的多个物理节点和数据中心资源管理器,所述数据中心资源管理器以组为单位来管理和分配物理节点上的资源,一个或多个组共享数据中心的多个物理节点上的资源,每个组各自拥有资源配额和作业调度算法,所述每个组的资源配额为该组可以使用的最低的资源使用数量,每个组的作业能运行于数据中心中的任何满足作业运行要求的物理节点上。
2.根据权利要求1所述的系统,其中,数据中心资源管理器以配置文件方式来对组进行管理,在所述配置文件中,为每个组配置的属性包括名称、资源配额、有权向该组提交作业的用户、作业调度策略、作业抢占调度策略、优先级、已使用的资源数量。
3.根据权利要求2所述的系统,其中,数据中心资源管理器通过修改配置文件来建立组、删除组或者改变每个组的属性。
4.根据权利要求2所述的系统,其中用户或者应用可以向多个有提交作业权限的组提交作业,但同一作业能且只能提交给一个组。
5.根据权利要求1所述的系统,其中数据中心资源管理器还用于进行作业调度。
6.一种用于如上述任一权利要求所述的系统的作业调度方法,所述方法包括 步骤1,计算每个组的优先级;步骤2,选择要参与作业调度的组; 步骤3,对所选择的组进行作业调度。
7.根据权利要求6所述的方法,其中,所述步骤1以如下公式来计算每个组的优先级 一个组的优先级=所有组的资源配额的最小公倍数/该组已用资源数量。
8.根据权利要求6所述的方法,其中,在所述步骤2之前还包括对多个组按照优先级从高到低进行排序的步骤。
9.根据权利要求6所述的方法,其中,所述步骤2按照下面的优先顺序来选择要参与作业调度的组(1)选择优先级最高且有等待作业的组;(2)选择比该组优先级高的所有组等待作业个数为0,而该组是有等待作业的组;(3)选择前面优先级高的、参与了作业调度但不成功的组,且该组已用资源小于其资源配额的优先级高的组。
10.根据权利要求6所述的方法,其中,所述步骤;3)包括步骤31,根据所选择的组的作业调度策略进行作业调度;步骤32,如果作业调度成功,则转至步骤1 ;如果作业调度不成功,判断是否需要进行作业抢占调度;步骤33,对所选择的组进行作业抢占调度; 步骤34,如果作业抢占调度成功,则睡眠一段时间,转至步骤1 ; 否则,判断所选择的组是否是优先级最低的组,如果是,则睡眠一段时间,转至步骤1, 否则选择下一个组,并判断其已用资源的数量是否小于其资源配额,如果小于,则转至步骤 31,否则睡眠一段时间,转至步骤1。
11.根据权利要求10所述的方法,其中,步骤32采用下面的步骤来判断是否需要进行作业抢占调度当一个组的已用资源小于“其资源配额X第一阈值”的值时,需要进行抢占调度;当一个组的已用资源大于“资源配额X第二阈值”的值时,其可以被抢占调度; 其中第一阈值的取值范围为(0,1],第二阈值的取值范围为[1,自然数)。
12.根据权利要求11所述的方法,其中第一阈值为0. 9,第二阈值为1. 1。
全文摘要
本发明提供了数据中心资源管理系统以及用于该系统的作业调度方法。所述系统包括位于数据中心的多个物理节点和数据中心资源管理器,所述数据中心资源管理器以组为单位来管理和分配物理节点上的资源,每个组的作业能运行于数据中心中的任何满足作业运行要求的物理节点上。当负载高时,多个组按照资源配额成比例地共享数据中心的资源,当负载低时,有等待作业的组可以按资源配额成比例地申请空闲资源,尽可能多地下发作业,提高了数据中心资源利用率。而且可以通过修改组的资源配额以及作业调度策略,实现多个组的资源的快速扩容和动态收缩,满足了应用作业调度需求的多样性以及应对突发时间的需求。
文档编号G06F9/50GK102426542SQ201110335469
公开日2012年4月25日 申请日期2011年10月28日 优先权日2011年10月28日
发明者孟丹, 李勇, 李青, 涂碧波, 陈竞 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1