CN113434253B - 集群资源调度方法、装置、设备及存储介质 - Google Patents

集群资源调度方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113434253B
CN113434253B CN202110725928.6A CN202110725928A CN113434253B CN 113434253 B CN113434253 B CN 113434253B CN 202110725928 A CN202110725928 A CN 202110725928A CN 113434253 B CN113434253 B CN 113434253B
Authority
CN
China
Prior art keywords
application
historical data
resource
target
applications
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110725928.6A
Other languages
English (en)
Other versions
CN113434253A (zh
Inventor
李子佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN202110725928.6A priority Critical patent/CN113434253B/zh
Publication of CN113434253A publication Critical patent/CN113434253A/zh
Application granted granted Critical
Publication of CN113434253B publication Critical patent/CN113434253B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了集群资源调度方法、装置、设备及存储介质,涉及数据分析技术领域,方法包括:更新应用集群中各应用对应的历史数据,从中筛选出与各应用的当前资源状态匹配的候选历史数据,基于述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;对所述目标应用进行容量调整,返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作。本方案能够降低全局优化问题的求解难度,提高资源调度的合理性、准确性和调度效果。

Description

集群资源调度方法、装置、设备及存储介质
技术领域
本申请实施例涉及数据分析技术领域,尤其涉及一种集群资源调度方法、装置、设备及存储介质。
背景技术
目前,对于集群的资源调度大多仅参照资源利用情况,对单一应用实现扩缩容,即通过增加或减少虚拟机资源数量,以满足算力需求。例如,对于某个应用,为其分配了若干台虚拟机作为计算资源,当监测到虚拟机的CPU使用率升高,或预测到未来CPU使用率可能升高时,将按照某种策略对该应用进行扩容,即为该应用分配更多的虚拟机,增加计算资源,以保证虚拟机CPU使用率不会超过安全阈值;反之则缩容,释放计算资源,节省成本。
虽然上述方案能够针对单一应用进行资源调配,平衡算力需求和成本之间的矛盾,即仅实现针对单一应用的局部最优。但是没有从全局的角度,对所有应用的资源成本进行综合分析和统一调配资源,导致资源调度不合理且利用率一般。
发明内容
本申请实施例提供了一种集群资源调度方法、装置、设备及存储介质,旨在解决现有技术中资源调度不合理且利用率一般的问题。
第一方面,本申请实施例提供了一种集群资源调度方法,其包括:
确定待进行资源调度的应用集群,所述应用集群包括多个应用;
更新所述应用集群中各应用对应的历史数据,从所述应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;
确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;
根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;
对所述目标应用进行容量调整,返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作。
第二方面,本申请实施例提供了一种集群资源调度装置,其包括:
更新模块,用于确定待进行资源调度的应用集群,所述应用集群包括多个应用;以及更新应用集群中各应用对应的历史数据;
处理模块,用于从所述应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并通过所述更新模块基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;
所述处理模块还用于确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;
根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;
对所述目标应用进行容量调整;
回调模块,用于在所述处理模块对所述目标应用容量调整之后,将操作返回到所述更新模块更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作。
第三方面,本申请实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的集群资源调度方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的集群资源调度方法。
本申请实施例提供了一种集群资源调度方法、装置、设备及存储介质,通过更新应用集群中各应用对应的历史数据,从中筛选出与各应用的当前资源状态匹配的候选历史数据,基于述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;对所述目标应用进行容量调整,返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作,即循环选定待进行容量调整的目标应用,并进行对应容量调整。可见,本方案能够降低全局优化问题的求解难度,进而可通过内点法等通用数值方法对凸优化问题进行求解,提高资源调度的合理性、准确性和调度效果。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的集群资源调度方法的应用场景示意图;
图2为本申请实施例提供的集群资源调度方法的流程示意图;
图3为本申请实施例提供的集群资源调度装置的示意性框图;
图4为本申请实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
参阅图1,图1为本申请实施例提供的集群资源调度方法的应用场景示意图。图1中,集群系统包括服务器、虚拟资源池,应用集群1(运行在终端设备上,图1未标示出),应用集群1包括n个应用,服务器可将虚拟资源池中的空闲资源分配给应用集群1中需要扩容的应用,以及将应用集群1中需要缩容的应用所占据的多余资源释放回虚拟资源池。
图2为本申请实施例提供的集群资源调度方法的流程示意图,该集群资源调度方法应用于服务器中,该服务器部署虚拟资源池,虚拟资源池可为虚拟机资源。该方法通过安装于服务器中的应用软件进行执行。
为便于理解,本申请实施例先介绍针对每一应用建立小扰动线性统计模型的实施例,具体如下。
(1)获取历史数据集合。
其中,所述历史数据集合包括多个应用在预设历史时段内的历史数据。其中,所述历史数据集合包括多个应用的历史数据,各应用的历史数据包括业务需求、资源数量和资源使用率。
(2)将所述历史数据集合输入小扰动线性统计模型,以对所述小扰动线性统计模型进行训练,得到各应用对应的小扰动线性统计模。
(3)根据各应用对应的所述小扰动线性统计模型,分别估计各应用当前的资源使用率。
一些实施方式中,小扰动线性统计模型可用于在业务需求与资源数量小范围变化时估计资源使用率。例如,该应用部署在10台虚拟机上,当每秒访问量增加1000次/秒时,对应CPU使用率将升高1%;将该应用缩容到5台虚拟机后,访问量每增加1000次/秒,CPU使用率将升高2%;基于该模型,可结合业务需求的预测,估计少量扩缩容对CPU使用率的影响。
为便于理解,将所有应用表示为集合A,集合大小即总的应用个数为M。对于任意应用ak∈A,k∈[1,M],业务需求仅考虑该应用每秒钟访问量QPS,资源数量仅考虑为该应用分配的虚拟机数量,即集群容量,资源使用率仅考虑集群CPU,具体为一定时间段内的CPU99线值,即该时间段内99%的虚拟机CPU低于该数值,作为集群CPU使用率的整体描述,同时对短期的异常波动进行剔除。
按照上述数据定义,对于每一应用ak,收集各应用在预设历史时段内的历史数据,包括:
(1)业务需求,即每秒钟访问量QPS,记作qi
(2)资源数量,即集群容量或虚拟机数量,记作ni,;
(3)资源使用率,即集群CPU99线,记作yi
(4)上述数据对应的发生时刻,记作ti
储存上述数据,组成应用ak的历史数据集合Sk={(qiniyiti)|i=1,2,…,Nk}。其中Nk表示应用ak拥有的历史数据的样本总条数。
另一些实施方式中,考虑到资源使用率、业务需求、资源数量、之间存在复杂的非线性关系,将导致后续进行全局优化时问题求解难度较高。因此,可基于小扰动线性化理论为每一应用ak,建立资源使用率y和平均单机访问量q/n之间的小扰动线性模型,即当业务需求q和集群容量n小范围变化时,资源使用率y的估计值,y的一种表达式为:
其中,θk,0k,1为应用ak对应的模型参数。
基于上述针对每一应用建立小扰动线性统计模型的实施例,下面介绍本申请实施例中集群资源调度方法,本申请实施例以对集群中的虚拟资源的调度为例。如图2所示,具体包括步骤S101-S106:
S101、确定待进行资源调度的应用集群。
其中,所述应用集群包括多个应用。所述应用集群中的多个应用可包括在预设时长内未进行资源扩容或资源缩容的应用。该预设时长可为1min、1h等,具体可根据业务需求或者历史调整扩容或缩容的频率来确定,预设时长的设定方式本申请不作限定。
需要说明的是,同一个应用是可以被反复扩容或缩容的,本申请实施例仅以一个预设时长内对有资源扩容或资源缩容需求的应用作为一次完整的资源调度流程为例,一次完整的资源调度流程包括多轮选定待扩容或带缩容的应用。在针对一次完整的资源调度流程中,每个应用可参与一次缩容或扩容,直至该应用集群中所有的应用都完成资源扩容或缩容。由此可见,本申请实施例中的应用集群中待进行扩容或缩容的应用是可以动态变化的。
另一些实施方式中,也可以将使用整个虚拟资源池的应用看作一个应用集群,然后对该应用集群中的应用进行扩容或缩容的确定或选定满足扩容或缩容的目标应用。本申请实施例不对此作限定。具体可依据实际情况对应用集群做适应性调整,以减少系统负荷和提高算力。
S102、更新应用集群中各应用对应的历史数据,从应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新。
举例来说,针对每一应用ak∈A,更新其历史数据集合Sk。以该应用的当前状态(qk,nk)以及当前时刻tk为基准,定义样本距离度量方式:
distance=λq|qi-qk|+λn|ni-nk|+λtexp(ti-tk)
其中,λqnt分别为业务需求、集群容量和时间间隔的比例系数,用于平衡三者之间的重要性。
以上述距离度量方式作为样本相似度准确,即距离distance数值越小,表示该条数据与当前状态越相似。从历史数据中筛选出和当前状态最相似,即距离最小的NΔ,k条数据,组成相比于当前状态具有小扰动的历史数据集合SΔ,k={(qiniyiti)|i=1,2,…,NΔ,k}。
然后,使用上述小扰动历史数据集SΔ,k,求解下列凸优化问题,从而得到应用ak的模型参数θk,0k,1
subjectto·Prob[fk(qi,ni)≥yi]≥η·θk,1≥0
其中优化变量包括:应用ak的模型参数θk,0k,1
优化目标表示,估计值fk(qi,ni)与真实值yi的差异尽量小,即估计尽量准确;
第一约束表示:估计值fk(qi,ni)以较大的概率值η,如η=95%,高于真实值yi。即对资源使用率的估计考虑最差的情况,以提高安全性。
第二约束表示:该模型需要符合实际意义,即每秒钟访问量q越大、虚拟机数量n越少,CPU使用率y越高。因此要求比例系数非负,即θk,1≥0。
S103、确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级。
一些实施方式中,所述多个应用的容量调整优先级可包括所述多个应用的扩容优先级顺序和缩容优先级顺序。
一些实施方式中,可参照资源使用率相比于预期值的偏离量,对于所有应用进行排序,得到扩缩容优先级顺序。
S104、根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用。
一些实施方式中,可根据所述扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,以及根据所述缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用。
另一些实施方式中,所述多个应用包括扩容优先级高于第一优先级的第一应用;所述根据所述扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,包括:
确定所述第一应用当前的资源使用率;
若所述资源使用率高于安全阈值,则将所述第一应用确定为所述第一目标应用。
一些实施方式中,可选出与预期值偏离程度高于预设程度的目标应用,例如选出与预期值偏离程度最高的目标应用作为本轮待扩容的第一目标应用或待缩容的第二目标应用。另一些实施方式中,所述多个应用包括缩容优先级高于第一优先级的第二应用;所述根据所述缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用,包括:
确定所述第二应用当前所占的第二资源空间;
根据所述第二应用的业务需求确定第二应用的待缩容空间;
若确定根据所述缩容空间将所述第二应用的所述第二资源空间进行缩容后满足所述第二应用的业务需求;
则将所述第二应用确定为所述第二目标应用。
对于每个应用ak∈A,k∈[1,M],统计最近一段时间的CPU99线值yk,参考预设的CPU99线期望值yexp,k,CPU使用率相比于预期值的偏离情况表示为:
Δyk=|yk-yexp,k|,k∈[1,M]
根据CPU使用率的偏离情况,对所有应用进行排序,得到应用的优先级序列k1,k2,k3,…,kM,使得
按照上述排序结果,选出与预期值偏离程度最高的应用,即作为本轮待扩容的第一目标应用或待缩容的第二目标应用。
S105、对所述目标应用进行容量调整。
一些实施方式中,可分别对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容。当某些应用缩容后也可以满足业务需求时,则对该类应用缩容,以降低资源成本;同时,选择尽量大的缩容数量,在满足业务需求的前提下,增加成本减少量。
一些实施方式中,步骤105可基于神经网络模型实现,例如可基于全局优化模型实现。将全局优化模型表示为凸优化问题,即可求解得到最优的资源调度策略,根据该最优的资源调度策略对本轮待扩容的第一目标应用或待缩容的第二目标应用执行相应扩缩容操作。相应的,在对所述第一目标应用进行扩容之前,所述方法还包括:
构建全局优化模型;
根据所述全局优化模型得到资源调度策略;
所述对所述第一目标应用进行扩容,包括:
根据所述第一目标应用的业务需求确定对所述第一目标应用进行扩容的虚拟资源数量;
按照所述资源调度策略和所述虚拟资源数量,对所述第一目标应用进行扩容。
另一些实施方式中,还可以根据应用的资源需求信息来对第一目标应用进行扩容。具体来说,所述方法还包括:
获取虚拟资源池当前的空闲资源;
若所述空闲资源无法满足各待扩容的第一目标应用,且待扩容的第一目标应用之间存在资源竞争,则确定各待扩容的第一目标应用的资源需求信息,所述资源需求信息包括资源需求程度和资源紧急程度之间的至少一项;
根据各待扩容的第一目标应用的资源需求信息,将所述空闲资源分配给各待扩容的第一目标应用。
可见,当虚拟资源有限、应用之间出现资源竞争时,权衡各个应用的资源需求程度或紧急程度,实现有限资源的最合理分配。此外,当某些应用资源使用率将超过安全阈值时,则对该类应用扩容,以支持业务需求;同时,选择得到尽量小的扩容数量,在满足业务需求的前提下,减小成本增加量。
对于全局成本优化问题,可以表示为:
其中,nk为应用ak目前虚拟机数量,经过成本优化及资源调度后,虚拟机数量变为n'k,虚拟机CPU99线变为y'k
优化变量为:资源调度后,每一应用的虚拟机数量n'1,n'2,…,n'M
优化目标表示:资源调度后,对于全部应用,使用的虚拟机资源总量尽量少;
第一约束条件表示:对于任意应用ak,资源调度后,虚拟机CPU99线y'k均低于该应用预设的安全阈值ysafe,k
第二约束条件表示:对于任意应用ak,资源调度后,虚拟机的增加量n'k-nk不多于该应用的最大扩容量Δnk,max>0;
第三约束条件表示:对于任意应用ak,资源调度后,虚拟机的减少量nk-n'k不多于该应用的最大缩容量Δnk,min>0;
结合前述实施例构建的资源使用率y的估计模型y≈fk(q,n),上述问题第一约束条件可以表示为小扰动线性函数:
其中,S103中对模型参数θk,0k,1进行了估计,阈值ysafe,k为人为预设的安全值。任意应用的访问量q'k可通过预测或人为设定进行估计。
综上,全局成本优化问题可表示为凸优化问题:
通过对上述全局成本优化问题进行求解,可得到最优资源调度方案,即每个应用的虚拟机分类量(n'1,n'2,…,n'M)。具体求解方式可采用内点法等数值方法。
按照算得到的最优资源调度方案,对S104选出的最优先的扩缩容应用 进行扩缩容操作。
S106、返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作。
具体来说,可返回到更新所述应用集群中除所述第一目标应用和所述第二目标应用之外的各应用对应的历史数据的操作,进而继续选取下一个待进行容量调整的目标应用,直至完成对应用集群中的所有应用的循环容量调整(即扩容和缩容)。即,上述S105完成后,返回S103,重新对历史数据和模型参数进行更新,对应用进行排序,即对应用的扩缩容优先级k1,k2,k3,…,kM进行更新,从而得到新的待调整容量的目标应用。通过循环执行S103至S105,从而达到全局优化目的,即对于所有应用,虚拟机资源分配合理,保持资源分配全局最优。
可见,本申请实施例从全局角度出发,通过建立成本模型并表示为凸优化问题,能够解决计算集群资源分配的全局最优问题,从而在保证所有应用均有足有计算资源的安全前提下,降低整体资源成本,实现成本控制。
具体表现为:
(1)当某些应用缩容后也可以满足业务需求时,则对该类应用缩容,以降低资源成本;同时,选择尽量大的缩容数量,在满足业务需求的前提下,增加成本减少量;
(2)当某些应用资源使用率将超过安全阈值时,则对该类应用扩容,以支持业务需求;同时,选择得到尽量小的扩容数量,在满足业务需求的前提下,减小成本增加量;
(3)当虚拟资源有限、应用之间出现资源竞争时,权衡各个应用的资源需求程度或紧急程度,实现有限资源的最合理分配。
可见,本申请实施例中,通过小扰动线性化方法,建立资源利用率和单机访问量之间的线性模型,能够降低全局优化问题的求解难度,进而可通过内点法等通用数值方法对凸优化问题进行求解,提高资源调度的合理性、准确性和调度效果。
本申请实施例还提供一种集群资源调度装置,该集群资源调度装置用于执行前述集群资源调度方法的任一实施例。具体地,请参阅图3,图3是本申请实施例提供的集群资源调度装置的示意性框图。该集群资源调度装置20可以配置于服务器中。
如图3所示,集群资源调度装置20包括:
更新模块201,用于确定待进行资源调度的应用集群,所述应用集群包括多个应用;以及更新应用集群中各应用对应的历史数据;
处理模块202用于从所述应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并通过所述更新模块基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;
所述处理模块202还用于确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;
根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;对所述目标应用进行容量调整;
回调模块203,用于在所述处理模块202对所述目标应用容量调整之后,将操作返回到所述更新模块201更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作。
在一实施例中,所述容量调整优先级包括扩容优先级顺序和缩容优先级顺序;所述从里面202具体用于:
根据所述扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,以及根据所述缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用;
对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容;
通过所述回调模块203返回到更新所述应用集群中除所述第一目标应用和所述第二目标应用之外的各应用对应的历史数据的操作。
在一实施例中,所述多个应用包括扩容优先级高于第一优先级的第一应用;所述处理模块202具体用于:
确定所述第一应用当前的资源使用率;
若所述资源使用率高于安全阈值,则将所述第一应用确定为所述第一目标应用。
在一实施例中,所述处理模块202对所述第一目标应用进行扩容之前,还用于:
构建全局优化模型;
根据所述全局优化模型得到资源调度策略;
所述对所述第一目标应用进行扩容,包括:
根据所述第一目标应用的业务需求确定对所述第一目标应用进行扩容的虚拟资源数量;
按照所述资源调度策略和所述虚拟资源数量,对所述第一目标应用进行扩容。
在一实施例中,所述多个应用包括缩容优先级高于第一优先级的第二应用;所述处理模块202具体用于:
确定所述第二应用当前所占的第二资源空间;
根据所述第二应用的业务需求确定第二应用的待缩容空间;
若确定根据所述缩容空间将所述第二应用的所述第二资源空间进行缩容后满足所述第二应用的业务需求;
则将所述第二应用确定为所述第二目标应用。
在一实施例中,所述处理模块202还用于:
获取虚拟资源池当前的空闲资源;
若所述空闲资源无法满足各待扩容的第一目标应用,且待扩容的第一目标应用之间存在资源竞争,则确定各待扩容的第一目标应用的资源需求信息,所述资源需求信息包括资源需求程度和资源紧急程度之间的至少一项;
根据各待扩容的第一目标应用的资源需求信息,将所述空闲资源分配给各待扩容的第一目标应用。
在一实施例中,所述处理模块202确定各应用当前的资源使用率与预期值的偏离量之前,还用于:
获取历史数据集合,所述历史数据集合包括多个应用在预设历史时段内的历史数据;
将所述历史数据集合输入小扰动线性统计模型,以对所述小扰动线性统计模型进行训练,得到各应用对应的小扰动线性统计模型;
根据各应用对应的所述小扰动线性统计模型,分别估计各应用当前的资源使用率。
该集群资源调度装置20能够降低全局优化问题的求解难度,进而可通过内点法等通用数值方法对凸优化问题进行求解,提高资源调度的合理性、准确性和调度效果。
上述集群资源调度装置可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4是本申请实施例提供的计算机设备的示意性框图。该计算机设备400是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图4,该计算机设备400包括通过系统总线401连接的处理器402、存储器和网络接口405,其中,存储器可以包括非易失性存储介质403和内存储器404。
该非易失性存储介质403可存储操作系统4031和计算机程序4032。该计算机程序4032被执行时,可使得处理器402执行集群资源调度方法。
该处理器402用于提供计算和控制能力,支撑整个计算机设备400的运行。
该内存储器404为非易失性存储介质403中的计算机程序4032的运行提供环境,该计算机程序4032被处理器402执行时,可使得处理器402执行集群资源调度方法。
该网络接口405用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备400的限定,具体的计算机设备400可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器402用于运行存储在存储器中的计算机程序4032,以实现本申请实施例公开的集群资源调度方法。
本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。
应当理解,在本申请实施例中,处理器402可以是中央处理单元(CentralProcessing Unit,CPU),该处理器402还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本申请的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本申请实施例公开的集群资源调度方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种集群资源调度方法,其特征在于,所述方法包括:
确定待进行资源调度的应用集群,所述应用集群包括多个应用;
更新所述应用集群中各应用对应的历史数据,从所述应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;其中,所述筛选出与各应用当前资源状态匹配的候选历史数据包括,定义样本距离度量方式,以所述样本距离度量方式筛选出和所述当前资源状态最相似的历史数据,作为所述候选历史数据,构建小扰动历史数据集合;其中,所述基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新包括,使用所述小扰动历史数据集合,进行小扰动线性统计模型参数的更新,得出应用当前的资源使用率的估计值;
确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;
根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;
对所述目标应用进行容量调整,返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作;
所述容量调整优先级包括扩容优先级顺序和缩容优先级顺序;所述根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;对所述目标应用进行容量调整,返回到更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作,包括:
根据所述扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,以及根据所述缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用;
对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容;
返回到更新所述应用集群中除所述第一目标应用和所述第二目标应用之外的各应用对应的历史数据的操作;
所述对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容,包括:
基于全局优化模型,求解资源调度策略;
所述全局优化模型为:
其中,优化变量为:资源调度后,每一应用的虚拟机数量 />;优化目标表示:资源调度后,对于全部应用,使用的虚拟机资源总量尽量少; />为总的应用个数;
第一约束条件为基于预设第一约束条件, 根据应用的小扰动线性函数得出; 所述预设第一约束条件为: ;所述小扰动线性函数为:其中,/>为预设的安全阈值;/>为虚拟机的增加量;/>以及/>为应用的小扰动线性统计模型参数;/>为应用的平均单机访问量;/>为资源调度后虚拟机的数量;/>为虚拟机 CPU99 线;
第二约束条件表示:对于任意应用,资源调度后,虚拟机的增加量/>不多于该应用的最大扩容量 />;第三约束条件表示:对于任意应用/>,资源调度后,虚拟机的减少量/>不多于该应用的最大缩容量/>
根据所述资源调度策略对所述第一目标应用进行扩容或者对所述第二目标应用进行缩容;
所述确定各应用当前的资源使用率与预期值的偏离量之前,所述方法还包括:
获取历史数据集合,所述历史数据集合包括多个应用在预设历史时段内的历史数据;
将所述历史数据集合输入小扰动线性统计模型,以对所述小扰动线性统计模型进行训练,得到各应用对应的小扰动线性统计模型;
根据各应用对应的所述小扰动线性统计模型,分别估计各应用当前的资源使用率;
所述方法还包括:
获取虚拟资源池当前的空闲资源;
若所述空闲资源无法满足各待扩容的第一目标应用,且待扩容的第一目标应用之间存在资源竞争,则确定各待扩容的第一目标应用的资源需求信息,所述资源需求信息包括资源需求程度和资源紧急程度之间的至少一项;
根据各待扩容的第一目标应用的资源需求信息,将所述空闲资源分配给各待扩容的第一目标应用。
2.根据权利要求1所述的方法,其特征在于,所述多个应用包括扩容优先级高于第一优先级的第一应用;所述根据所述扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,包括:
确定所述第一应用当前的资源使用率;
若所述资源使用率高于安全阈值,则将所述第一应用确定为所述第一目标应用。
3.根据权利要求2所述的方法,其特征在于,所述对所述第一目标应用进行扩容之前,所述方法还包括:
构建所述全局优化模型;
所述对所述第一目标应用进行扩容,包括:
根据所述第一目标应用的业务需求确定对所述第一目标应用进行扩容的虚拟资源数量;
按照所述资源调度策略和所述虚拟资源数量,对所述第一目标应用进行扩容。
4.根据权利要求1所述的方法,其特征在于,所述多个应用包括缩容优先级高于第一优先级的第二应用;所述根据所述缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用,包括:
确定所述第二应用当前所占的第二资源空间;
根据所述第二应用的业务需求确定第二应用的待缩容空间;
若确定根据所述缩容空间将所述第二应用的所述第二资源空间进行缩容后满足所述第二应用的业务需求;
则将所述第二应用确定为所述第二目标应用。
5.一种集群资源调度装置,其特征在于,所述集群资源调度装置包括:
更新模块,用于确定待进行资源调度的应用集群,所述应用集群包括多个应用;以及更新应用集群中各应用对应的历史数据;
处理模块,用于从所述应用集群中筛选出与各应用的当前资源状态匹配的候选历史数据,并通过所述更新模块基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新;
所述处理模块还用于确定各应用当前的资源使用率与预期值的偏离量,根据各应用的偏离量对各应用进行排序,得到所述多个应用的容量调整优先级;
根据所述容量调整优先级从所述多个应用中选定待调整容量的目标应用;
对所述目标应用进行容量调整;
回调模块,用于在所述处理模块对所述目标应用容量调整之后,将操作返回到所述更新模块更新所述应用集群中除所述目标应用之外的各应用对应的历史数据的操作;
其中,所述筛选出与各应用当前资源状态匹配的候选历史数据包括,定义样本距离度量方式,以所述样本距离度量方式筛选出和所述当前资源状态最相似的历史数据,作为所述候选历史数据,构建小扰动历史数据集合;其中,所述基于所述候选历史数据对各应用的小扰动线性统计模型的模型参数进行更新包括,使用所述小扰动历史数据集合,进行小扰动线性统计模型参数的更新,得出应用当前的资源使用率的估计值;
其中,所述处理模块具体用于:根据扩容优先级顺序从所述多个应用中选定待扩容的第一目标应用,以及根据缩容优先级顺序从所述多个应用中选定待缩容的第二目标应用对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容;通过所述回调模块返回到更新所述应用集群中除所述第一目标应用和所述第二目标应用之外的各应用对应的历史数据的操作;
所述对所述第一目标应用进行扩容,以及对所述第二目标应用进行缩容,包括:
基于全局优化模型,求解资源调度策略;
所述全局优化模型为:
其中,优化变量为:资源调度后,每一应用的虚拟机数量 />;优化目标表示:资源调度后,对于全部应用,使用的虚拟机资源总量尽量少; />为总的应用个数;
第一约束条件为基于预设第一约束条件, 根据应用的小扰动线性函数得出; 所述预设第一约束条件为: ;所述小扰动线性函数为:其中,/>为预设的安全阈值; />为虚拟机的增加量;/>以及/>为应用的小扰动线性统计模型参数;/>为应用的平均单机访问量;/>为资源调度后虚拟机的数量;/>为虚拟机 CPU99 线;
第二约束条件表示:对于任意应用,资源调度后,虚拟机的增加量/>不多于该应用的最大扩容量 />;第三约束条件表示:对于任意应用/>,资源调度后,虚拟机的减少量/>不多于该应用的最大缩容量/>
根据所述资源调度策略对所述第一目标应用进行扩容或者对所述第二目标应用进行缩容;
所述处理模块确定各应用当前的资源使用率与预期值的偏离量之前,还用于:
获取历史数据集合,所述历史数据集合包括多个应用在预设历史时段内的历史数据;
将所述历史数据集合输入小扰动线性统计模型,以对所述小扰动线性统计模型进行训练,得到各应用对应的小扰动线性统计模型;
根据各应用对应的所述小扰动线性统计模型,分别估计各应用当前的资源使用率;
所述处理模块还用于:
获取虚拟资源池当前的空闲资源;
若所述空闲资源无法满足各待扩容的第一目标应用,且待扩容的第一目标应用之间存在资源竞争,则确定各待扩容的第一目标应用的资源需求信息,所述资源需求信息包括资源需求程度和资源紧急程度之间的至少一项;
根据各待扩容的第一目标应用的资源需求信息,将所述空闲资源分配给各待扩容的第一目标应用。
6.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的集群资源调度方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至4任一项所述的集群资源调度方法。
CN202110725928.6A 2021-06-29 2021-06-29 集群资源调度方法、装置、设备及存储介质 Active CN113434253B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110725928.6A CN113434253B (zh) 2021-06-29 2021-06-29 集群资源调度方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110725928.6A CN113434253B (zh) 2021-06-29 2021-06-29 集群资源调度方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113434253A CN113434253A (zh) 2021-09-24
CN113434253B true CN113434253B (zh) 2023-08-25

Family

ID=77757485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110725928.6A Active CN113434253B (zh) 2021-06-29 2021-06-29 集群资源调度方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113434253B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741181A (zh) * 2022-01-18 2022-07-12 阿里巴巴(中国)有限公司 资源处理方法和存储介质
CN115174406B (zh) * 2022-06-16 2024-02-06 平安银行股份有限公司 容器应用的扩缩容方法、装置、计算机设备及存储介质
CN115834388B (zh) * 2022-10-21 2023-11-14 支付宝(杭州)信息技术有限公司 系统控制方法及装置
CN116149846A (zh) * 2022-12-05 2023-05-23 中国科学院深圳先进技术研究院 一种应用性能优化方法、装置、电子设备及存储介质
CN117370032B (zh) * 2023-12-07 2024-03-01 聊城金恒智慧城市运营有限公司 一种云计算服务器资源优化分配方法
CN117931459B (zh) * 2024-03-22 2024-06-07 深圳威尔视觉科技有限公司 一种算力资源的弹性评价方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017128979A1 (zh) * 2016-01-30 2017-08-03 华为技术有限公司 一种资源管理方法及设备
CN108664321A (zh) * 2017-03-29 2018-10-16 广东神马搜索科技有限公司 系统资源分配调整方法及装置
CN111522636A (zh) * 2020-04-03 2020-08-11 安超云软件有限公司 应用容器的调整方法、调整系统、计算机可读介质及终端设备
CN112463372A (zh) * 2020-11-23 2021-03-09 中国建设银行股份有限公司 一种目标系统的扩容方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860369B2 (en) * 2017-01-11 2020-12-08 International Business Machines Corporation Self-adjusting system for prioritizing computer applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017128979A1 (zh) * 2016-01-30 2017-08-03 华为技术有限公司 一种资源管理方法及设备
CN108664321A (zh) * 2017-03-29 2018-10-16 广东神马搜索科技有限公司 系统资源分配调整方法及装置
CN111522636A (zh) * 2020-04-03 2020-08-11 安超云软件有限公司 应用容器的调整方法、调整系统、计算机可读介质及终端设备
CN112463372A (zh) * 2020-11-23 2021-03-09 中国建设银行股份有限公司 一种目标系统的扩容方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113434253A (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
CN113434253B (zh) 集群资源调度方法、装置、设备及存储介质
US10474504B2 (en) Distributed node intra-group task scheduling method and system
WO2021104096A1 (zh) 容器云环境下的任务调度方法、装置、服务器及存储装置
US9571347B2 (en) Reactive auto-scaling of capacity
JP6157869B2 (ja) カスケード割当てによる長期資源プロビジョニング
US8918792B2 (en) Workflow monitoring and control system, monitoring and control method, and monitoring and control program
WO2016009311A1 (en) System and method for electronic work prediction and dynamically adjusting server resources
CN113010260A (zh) 容器数量弹性伸缩方法以及容器数量弹性伸缩方法系统
WO2020172852A1 (en) Computing resource scheduling method, scheduler, internet of things system, and computer readable medium
CN105703927A (zh) 一种资源分配方法、网络设备和网络系统
CN112689007B (zh) 资源分配方法、装置、计算机设备和存储介质
CN115421930B (zh) 任务处理方法、系统、装置、设备及计算机可读存储介质
US20190138354A1 (en) Method for scheduling jobs with idle resources
CN111046091A (zh) 数据交换系统的运行方法、装置及设备
CN109936471B (zh) 一种多集群的资源分配方法和装置
CN109428950B (zh) Ip地址池自动调度方法和系统
CN114675933A (zh) 一种容器集群调度方法、装置、设备、存储介质
CN107203256B (zh) 一种网络功能虚拟化场景下的节能分配方法与装置
CN113918341A (zh) 设备调度方法、装置、设备及存储介质
CN116743825A (zh) 服务器管理方法、装置、计算机设备和存储介质
CN115658319A (zh) 资源调度方法、系统、设备及存储介质
Larrañaga et al. Stochastic and fluid index policies for resource allocation problems
CN106533730B (zh) Hadoop集群组件指标的采集方法及装置
CN116303804B (zh) 一种数据对比方法、装置、设备和介质
CN117715088B (zh) 基于边缘计算的网络切片管理方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant