发明内容
本公开实施例至少提供一种资源分配方法及装置。
第一方面,本公开实施例提供了一种资源分配的方法,所述资源分配的方法包括:
接收至少一个目标用户端发送的针对目标队列的作业资源分配请求;
获取所述目标队列中包括所述目标用户端在内的多个用户端在所述目标队列的预定资源量,以及所述多个用户端分别对应的已分配资源量;所述已分配资源量为针对所述多个用户端提交的历史作业分配的所述目标队列的资源量;
根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配。
在一种可选的实施方式中,所述根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配,包括:
根据所述多个用户端分别对应的所述预定资源量和所述已分配资源量,确定每个所述用户端对应的资源满足度;所述资源满足度为所述已分配资源量与所述预定资源量的比值;
根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配。
在一种可选的实施方式中,根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配,包括:
根据所述目标队列对应的所述多个用户端的所述资源满足度,按照对应的资源满足度低则优先被分配资源的原则,为所述至少一个目标用户端进行资源分配。
在一种可选的实施方式中,根据所述目标队列对应的多个用户端的所述资源满足度,按照对应的资源满足度低则优先被分配资源的原则,为所述至少一个目标用户端进行资源分配,包括:
若接收到多个目标用户端发送的资源分配请求,将所述多个目标用户端按照对应的资源满足度由小到大的顺序进行排列;
按照所述多个目标用户端的排列顺序,依次为所述多个目标用户端分配所述目标队列的资源,直到所述目标队列的资源不足。
在一种可选的实施方式中,所述根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配,包括:
判断所述目标队列的可用资源量是否小于所述作业资源分配请求中的资源需求量;所述可用资源量为所述目标队列的总资源量与所述多个用户端的所述已分配资源量之和的差值;
若小于,判断所述目标队列的所述多个用户端中是否存在可抢占资源用户端,若存在,则释放所述可抢占资源用户端占用的可抢占资源,并将释放的所述可抢占资源分配给所述目标用户端;
其中,所述可抢占资源用户端是指对应的资源满足度大于1、且当前允许释放资源的用户端。
在一种可选的实施方式中,若接收到多个目标用户端的作业资源分配请求,将所述多个目标用户端按照对应的资源满足度由小到大的顺序进行排列,包括:
若所述多个目标用户端对应的资源满足度相同,则将所述多个目标用户端按照提交的作业的优先级由高到低进行排列;
若所述多个目标用户端提交的作业的优先级相同,则将所述多个目标用户端按照提交作业的时间的先后顺序进行排列;
若所述多个目标用户端提交作业的时间相同,则将所述多个目标用户端按照提交的作业对应的被分配标识号由小到大的顺序进行排列。
在一种可选的实施方式中,根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配,包括:
根据所述多个用户端在所述目标队列的所述预定资源量、所述多个用户端分别对应的所述已分配资源量、以及不同类型作业对应的资源分配量上限,为所述至少一个目标用户端进行作业资源分配。
第二方面,本公开实施例还提供一种资源分配装置,包括:
接收模块,用于接收至少一个目标用户端发送的针对目标队列的作业资源分配请求;
获取模块,用于获取所述目标队列中包括所述目标用户端在内的多个用户端在所述目标队列的预定资源量,以及所述多个用户端分别对应的已分配资源量;所述已分配资源量为针对所述多个用户端提交的历史作业分配的所述目标队列的资源量;
资源分配模块,用于根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配。
在一种可选的实施方式中,所述资源分配模块,具体用于:
根据所述多个用户端分别对应的所述预定资源量和所述已分配资源量,确定每个所述用户端对应的资源满足度;所述资源满足度为所述已分配资源量与所述预定资源量的比值;
根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配。
在一种可选的实施方式中,所述资源分配模块,还具体用于:
根据所述目标队列对应的多个用户端的所述资源满足度,按照对应的资源满足度低则优先被分配资源的原则,为所述至少一个目标用户端进行资源分配。
在一种可选的实施方式中,所述资源分配模块,还具体用于:
若接收到多个目标用户端发送的资源分配请求,将所述多个目标用户端按照对应的资源满足度由小到大的顺序进行排列;
按照所述多个目标用户端的排列顺序,依次为所述多个目标用户端分配所述目标队列的资源,直到所述目标队列的资源不足。
在一种可选的实施方式中,所述资源分配模块,还具体用于:
判断所述目标队列的可用资源量是否小于所述作业资源分配请求中的资源需求量;所述可用资源量为所述目标队列的总资源量与所述多个用户端的所述已分配资源量之和的差值;
若小于,判断所述目标队列的所述多个用户端中是否存在可抢占资源用户端,若存在,则释放所述可抢占资源用户端占用的可抢占资源,并将释放的所述可抢占资源分配给所述目标用户端;
其中,所述可抢占资源用户端是指对应的资源满足度大于1、且当前允许释放资源的用户端。
在一种可选的实施方式中,所述资源分配模块,还具体用于:若所述多个目标用户端对应的资源满足度相同,则将所述多个目标用户端按照提交的作业的优先级由高到低进行排列;
若所述多个目标用户端提交的作业的优先级相同,则将所述多个目标用户端按照提交作业的时间的先后顺序进行排列;
若所述多个目标用户端提交作业的时间相同,则将所述多个目标用户端按照提交的作业对应的被分配标识号由小到大的顺序进行排列。
在一种可选的实施方式中,所述资源分配模块,还具体用于:
根据所述多个用户端在所述目标队列的所述预定资源量、所述多个用户端分别对应的所述已分配资源量、以及不同类型作业对应的资源分配量上限,为所述至少一个目标用户端进行作业资源分配。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的一种资源分配方法及装置,当用户端提交目标作业时,会根据该用户端在目标队列的预定资源量和该用户端在该目标队列的已分配资源量,为该用户端提交的作业分配资源,这样有利于满足提交不同作业类型的用户端对队列资源的基本需求,可以平衡不同用户端对队列的资源占用量,有利于不同类型作业的顺利进行。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
为了平衡不同用户端对于同一队列资源的占用量,保证不同类型作业的顺利进行,本公开实施例提供了一种资源分配方法及装置,根据多个用户端在目标队列的预定资源量以及多个用户端分别对应的已分配资源量,为目标用户端进行作业资源分配,这样,由于为不同用户端预先规定好了预定资源量,在进行资源分配时,结合该预定资源量和已分配资源量进行资源分配,有利于满足对应提交不用作业类型的用户端对队列资源的基本需求,可以平衡不同用户端对队列的资源占用量,有利于不同类型作业的顺利进行。
另外,本公开实施例中,当队列资源充足时,用户端可以临时申请大于其对应的预定资源量的资源,当其他用户端申请对应的预定资源量内的资源时,若队列资源不足,可以再对被分配资源量超过预定资源量的用户端进行资源释放,从而一方面提高了集群资源利用率,减少资源的空闲时间,另一方面也确保了不同用户端使用队列资源的公平性,确保不同类型作业的顺利进行。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种资源分配方法进行详细介绍,本公开实施例所提供的资源分配方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该资源分配方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为服务器为例对本公开实施例提供的资源分配方法加以说明。
实施例一
参见图1所示,为本公开实施例提供的一种资源分配方法的流程图,所述方法包括步骤S101~S103,其中:
S101、接收至少一个目标用户端发送的针对目标队列的作业资源分配请求。
其中,目标用户端为具有集群资源使用需求的用户终端,上述用户终端可以终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
其中,作业资源分配请求可以包括目标作业的资源申请量。
这里,集群资源管理和调度平台一般包括多个服务器,每个服务器为一个节点,一般将集群中临近的多个节点划分为一个节点集合label,其中每个节点集合对应有多个队列,用户端可以预先向其中一个队列申请资源使用权限,其中可以包括申请的预定资源量,或者集群为多个用户端统一规划好对应的预定资源量。当用户提交作业时,需要同时向队列所有者提交资源使用申请。
其中,上述目标队列为目标用户端具有资源使用权限的队列。
这里,目标用户端提交针对目标队列的作业资源分配请求,集群资源管理和调度平台的资源管理器(Resource Manager,RM)接收上述资源分配请求,并执行下述资源分配过程。
S102、获取所述目标队列中包括所述目标用户端在内的多个用户端在所述目标队列的预定资源量,以及所述多个用户端分别对应的已分配资源量。
其中,所述已分配资源量为针对所述多个用户端提交的历史作业分配的所述目标队列的资源量。
这里,多个用户端向集群提交作业,也即发起作业资源分配请求,集群的资源管理器获取多个用户端中每个用户端在目标队列对应的预设资源量和每个用户端在目标队列对应的已分配资源量,然后结合该作业的资源申请量进行资源分配,详见下述描述。
S103、根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配。
在具体实施中,可以根据所述多个用户端分别对应的所述预定资源量和所述已分配资源量,确定每个所述用户端对应的资源满足度;所述资源满足度为所述已分配资源量与所述预定资源量的比值;根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配。
其中,资源满足度为多个用户端中的每个用户端在具有使用权限的队列的已分配资源量和预定资源量的比值,用于指示各个目标用户端在对应队列的资源使用情况。
具体的,可以根据所述目标队列对应的多个用户端的所述资源满足度,按照每个用户端对应的资源满足度低则优先被分配资源的原则,为所述至少一个目标用户端进行资源分配。
在具体实施中,若接收到多个目标用户端发送的资源分配请求,则可以将所述多个目标用户端按照对应的资源满足度由小到大的顺序进行排列;按照所述多个目标用户端的排列顺序,依次为所述每个目标用户端分配所述目标队列的资源,直到所述目标队列的资源不足。
具体的,当有多个目标用户端向集群发送针对同一目标队列的作业资源分配请求时,集群的资源管理器可以获取多个目标用户端中每个目标用户端在该目标队列的已分配资源量和预定资源量,将上述已分配资源量与预定资源量进行除法运算,得到每个目标用户端在该目标队列中的已分配资源量和预定资源量的比值,即资源满足度,将多个目标用户端对应的资源满足度从小到大排序,根据资源满足度低则先被分配资源的原则,按照上述从小到大的顺序,依次为每个目标用户端分配对应队列的资源,直到队列的资源全部被分配为止。
例如,一个队列具有可分配资源量为100quota(quota可以理解为资源配额,1quota可以对应一定量的内存大小和CPU大小等),用户端A和用户端B具有该队列资源的使用权限,且用户端A在该队列的预定资源量为30quota,用户端B在该队列的预定资源量为50quota,当前用户端A在该队列中的已分配资源量为20quota,当前用户端B在该队列中的已分配资源量为40quota,则当前该队列的剩余可分配资源量为40quota;此时当用户端A与用户端B同时提交资源申请量分别为30quota的作业a和作业b时,集群RM计算用户端A的资源满足度D(A)(其中,D(A)=已分配资源量20/预定资源量30=0.67)与用户端B的资源满足度D(B)(其中,D(B)=已分配资源量40/预定资源量50=0.8),将用户端A的资源满足度D(A)与用户端B的资源满足度D(B)从小到大排序为D(A)、D(B),根据资源满足度低则先被分配资源的原则,先为用户端A提交的作业a分配队列资源,在为作业a分配资源后,该队列的剩余可分配资源量为10quota,此时由于作业b需要的资源量为30quota,作业b需要的资源量大于目前队列的剩余可分配资源量,此时,可以根据用户端B提交的作业b是否可拆分为作业b分配资源;当作业b可拆分且可拆分的最大粒度的资源量小于10quota时,则先为作业b分配10quota的资源,等待用户端A的作业或用户端B的作业释放资源后,再为作业b分配20quota的资源;若作业b不可拆分时,则需等待用户端A的作业或用户端B的作业释放资源后,再为作业b分配30quota的资源。
在具体实施中,若在为任一目标用户端分配目标队列的资源时,该目标队列的资源不足,则可以通过判断该目标队列中的多个用户端中是否存在可抢占资源用户端,为该目标用户端分配资源,具体描述如下:
在为任一目标用户端分配目标队列的资源时,判断目标队列的可用资源量是否小于该目标用户端提交的作业资源分配请求中的资源申请量,若小于,则判断该目标队列的多个用户端中是否存在可抢占资源用户端;若该目标队列中存在可抢占资源用户端,则释放该可抢占资源用户端占用的可抢占资源,并将释放的上述可抢占资源分配给目标用户端。
其中,可用资源量为目标队列的总资源量与多个用户端的已分配资源量之和的差值;可抢占资源用户端是指对应的资源满足度大于1、且当前允许释放资源的用户端。
这里,当目标用户端向具有资源使用权限的队列提交作业时,当前目标用户端在对应队列的已分配资源量与预定资源量的比值小于1,也即资源满足度还没有达到100%,且目标用户端提交的作业所需的资源量大于该队列的剩余可分配资源量(也即可用资源量不足),若此时该队列中存在任一用户端当前已分配资源量超过对应的预定资源量、且该用户端的作业可以拆分时,则释放该用户端已分配的部分资源,并将释放的部分资源分配给上述目标用户端。
例如,一个队列具有可分配资源量为100quota,用户端A和用户端B具有该队列的资源使用权限,且用户端A在该队列中的预定资源量为30quota,用户端B在该队列中的预定资源量为50quota,当前用户端A在该队列中的已分配资源量为80quota,当前用户端B在该队列中的已分配资源量为10quota,当前该队列的剩余可分配资源量为10quota;此时,用户端B向队列提交20quota的作业b,但是作业b所需的资源量20quota大于该队列的剩余可分配资源量10quota,此时确定用户端B的资源满足度D(B)(D(B)=已分配资源量10/预定资源量50=0.2)小于1,且用户端A已分配资源量80quota大于用户端A的预定资源量为30quota,即用户端A的资源满足度大于100%,若用户端A的作业可拆分,则可以选择释放用户端A已分配的部分资源,比如释放用户端A已分配的资源中的20quota资源,并将释放的20quota资源和队列剩余的10quota的资源分配给用户端B的作业b。另外,若用户端A可释放的资源只有10quota,若作业b可拆分且可拆分的最大粒度为10quota,则可以释放用户端A已分配的资源中的10quota资源,并将释放的10quota的资源与该队列的剩余可分配资源10quota的资源分配给用户端B的作业b。
在具体实施中,在接收到多个目标用户端的作业资源分配请求后,若确定多个目标用户端对应的资源满足度相同,则按照提交的作业的优先级由高到低的顺序,对所述多个目标用户端进行资源分配,直到该目标队列的资源全部被分配为止。
其中,作业的优先级为集群管理员根据作业类型设置的,其中作业的优先级可以包括极高(VeryHigh)、高(High)、一般(Normal)、低(Low)、极低(VeryLow)和最高优先级(RootHigh)六类,其中VeryHigh、High、Normal、Low和VeryLow暴露给用户,用户可以根据提交作业的作业类型设置作业的优先级,RootHigh为集群的探针作业,不暴露给用户,用于监控集群资源的使用。
具体的,当多个目标用户端向集群中的目标队列发送作业资源分配请求时,集群RM获取每个目标用户端在该目标队列中的已分配资源量与预定资源量,计算每个目标用户端的资源满足度,当上述每个目标用户端对应的资源满足度相同时,则将每个目标用户端提交的作业按照优先级从高到低的顺序进行排序,根据优先级高的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止。
在具体实施中,在接收到多个目标用户端的作业资源分配请求后,若确定多个目标用户端对应的资源满足度相同、且多个目标用户端提交的作业的优先级相同,则按照提交作业的时间的先后顺序,对所述多个目标用户端进行资源分配,直到该目标队列的资源全部被分配为止。
具体的,当多个目标用户端向集群中的目标队列发送作业资源分配请求时,集群RM根据获取每个目标用户端在该目标队列中的已分配资源量与预定资源量,计算每个目标用户端的资源满足度,当上述每个目标用户端对应的资源满足度相同时,则获取每个目标用户端提交的作业的优先级,若确定上述各个目标用户端提交的作业的优先级相同,则按照各个目标用户端提交作业的时间先后顺序,根据先提交的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止。
在具体实施中,在接收到多个目标用户端的作业资源分配请求后,若确定多个目标用户端对应的资源满足度相同、多个目标用户端提交的作业的优先级相同且多个目标用户端提交作业的时间相同,则按照提交的作业对应的被分配标识号由小到大的顺序,对所述多个目标用户端进行资源分配,直到该目标队列的资源全部被分配为止。
这里,集群的资源管理器会为用户端提交的作业分配唯一标识号(Identity,ID)。在分配ID时,按照分配的先后顺序,依次将ID加1,所以先分配ID的用户端的作业会被优先分配资源。
具体的,当多个目标用户端向集群中的目标队列发送作业资源分配请求时,集群RM获取每个目标用户端在该目标队列中的已分配资源量与预定资源量,计算每个目标用户端的资源满足度,当上述每个目标用户端对应的资源满足度相同时,则获取每个目标用户端提交的作业的优先级,若确定上述各个目标用户端提交的作业的优先级相同,则获取各个目标用户端提交作业的时间,若确定多个目标用户端提交作业的时间相同,则获取各个目标用户端提交的作业对应的标识号,将上述标识号从小到大排序,按照标识号小的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止。
也即,为多个用户端分配资源时,各个影响因素的考虑顺序为:资源满足度→作业优先级→作业提交时间→作业ID。
在本公开又一可选实施方案中,还可以增加资源分配的限制条件:限制不同类型作业对应的资源分配量。也即,为不同优先级的作业设置资源分配量上限,该上限一般大于上述预定资源量。这样,通过对不同优先级的作业进行资源分配量的限制,能够保证各优先级的作业在目标队列中被配置合适的队列资源使用比例,避免了在高优先级作业没有合适资源供调度时再临时抢占其它低优先级用户端的资源的情况,从而更好的进行高优作业的快速调度。
这里,如前所述,作业的优先级可以为集群管理员根据作业类型设置的,集群管理员可以将作业类型划分为上述VeryHigh、High、Normal、Low和VeryLow五类优先级,并分别为每一类优先级的作业设置资源分配量上限。
参照图2所示,为本公开一种可选的实施方案提供的资源分配过程的流程图,具体资源分配过程如下:
当多个目标用户端向集群中的目标队列发送作业资源分配请求时,集群RM获取每个目标用户端提交作业的作业优先级,并根据为不同优先级的作业设置资源分配量上限,判断每个目标用户端提交的作业的资源申请量是否超过对应的作业资源分配量上限,若存在目标用户端提交的作业申请量超过对应的作业资源分配量上限时,则判断该目标用户端提交的作业是否可拆分,当该目标用户提交的作业不可拆分时,则无法为该目标用户端提交的作业分配资源;当该目标用户端提交的作业可拆分,或该目标用户端提交作业的资源申请量未超过对应的作业资源分配量上限时,则获取每个目标用户端在该目标队列中的已分配资源量与预定资源量,计算每个目标用户端的资源满足度,当上述每个目标用户端对应的资源满足度不同时,将多个目标用户端分别对应的资源满足度从小到大排序,根据资源满足度低则先被分配资源的原则,按照上述从小到大的顺序,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止;当上述每个目标用户端对应的资源满足度相同时,则获取每个目标用户端提交的作业的优先级,将每个目标用户端提交的作业按照优先级从高到低的顺序进行排序,根据优先级高的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止;若上述各个目标用户端提交的作业的优先级相同,则获取各个目标用户端提交作业的时间,则按照各个目标用户端提交作业的时间先后顺序,根据先提交的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止;若每个目标用户端提交作业的时间相同,则获取每个目标用户端提交的作业对应的标识号,将上述标识号从小到大排序,按照标识号小的作业先被分配资源的原则,依次为每个目标用户端分配该目标队列的资源,直到该目标队列的资源全部被分配为止。
综上,本公开实施例由于为不同用户端预先规定好了预定资源量,在进行资源分配时,结合每个用户端在目标队列中的预定资源量和已分配资源量进行资源分配,有利于满足对应提交不用作业类型的用户端对队列资源的基本需求,可以平衡不同用户端对队列的资源占用量,有利于不同类型作业的顺利进行。另外,本公开实施例中,当队列资源充足时,用户端可以临时申请大于其对应的预定资源量的资源,当其他用户端申请的资源小于该用户端在目标队列中的预定资源量时,若队列资源不足,可以再对被分配资源量超过预定资源量的用户端进行资源释放,从而一方面提高了集群资源利用率,减少资源的空闲时间,另一方面也确保了不同用户端使用队列资源的公平性,确保不同类型作业的顺利进行。再者,本公开实施例还可以为不同优先级的作业设置资源分配量上限,这样,通过对不同优先级的作业进行资源分配量的限制,能够保证各优先级的作业被配置合适的队列资源使用比例,不必在高优先级作业没有合适资源供调度时再临时抢占其它用户端资源,从而更好的进行高优作业的快速调度。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与资源分配方法对应的资源分配装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述资源分配方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
实施例二
参照图3所示,为本公开实施例提供的一种资源分配装置300的示意图,所述装置包括:接收模块301、获取模块302和资源分配模块303;具体的:
接收模块301,用于接收至少一个目标用户端发送的针对目标队列的作业资源分配请求。
获取模块302,用于获取所述目标队列中包括所述目标用户端在内的多个用户端在所述目标队列的预定资源量,以及所述多个用户端分别对应的已分配资源量;所述已分配资源量为针对用户端提交的历史作业分配的所述目标队列的资源量。
资源分配模块303,用于根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配。
本公开实施例中,根据多个用户端在目标队列的预定资源量以及多个用户端分别对应的已分配资源量,为目标用户端进行作业资源分配,这样当用户端提交目标作业时,会根据该用户端在目标队列的预定资源量和该用户端在该目标队列的已分配资源量,为目标作业分配资源,避免出现某一用户提交的大量作业占满队列资源,其余用户提交的作业无法及时被分配资源的情况,平衡不同用户端间资源分配的公平性,从而提高了集群资源利用率。
一种可选的实施方式中,资源分配模块303,具体用于:
根据所述多个用户端分别对应的所述预定资源量和所述已分配资源量,确定每个所述用户端对应的资源满足度;所述资源满足度为所述已分配资源量与所述预定资源量的比值;根据所述目标队列对应的多个用户端的所述资源满足度,为所述至少一个目标用户端进行资源分配。
一种可选的实施方式中,资源分配模块303,还具体用于:根据所述目标队列对应的多个用户端的所述资源满足度,按照对应的资源满足度低则优先被分配资源的原则,为所述至少一个目标用户端进行资源分配。
一种可选的实施方式中,资源分配模块303,还具体用于:若接收到多个目标用户端发送的资源分配请求,将所述多个目标用户端按照对应的资源满足度由小到大的顺序进行排列;按照所述多个目标用户端的排列顺序,依次为所述多个目标用户端分配所述目标队列的资源,直到所述目标队列的资源不足。
一种可选的实施方式中,资源分配模块303,还具体用于:判断所述目标队列的可用资源量是否小于所述作业资源分配请求中的资源需求量;所述可用资源量为所述目标队列的总资源量与所述多个用户端的所述已分配资源量之和的差值;若小于,判断所述目标队列的所述多个用户端中是否存在可抢占资源用户端,若存在,则释放所述可抢占资源用户端占用的可抢占资源,并将释放的所述可抢占资源分配给所述目标用户端;其中,所述可抢占资源用户端是指对应的资源满足度大于1、且当前允许释放资源的用户端。
一种可选的实施方式中,资源分配模块303,还具体用于:
若所述多个目标用户端对应的资源满足度相同,则将所述多个目标用户端按照提交的作业的优先级由高到低进行排列。
若所述多个目标用户端提交的作业的优先级相同,则将所述多个目标用户端按照提交作业的时间的先后顺序进行排列。
若所述多个目标用户端提交作业的时间相同,则将所述多个目标用户端按照提交的作业对应的被分配标识号由小到大的顺序进行排列。
一种可选的实施方式中,资源分配模块303,还具体用于:根据所述多个用户端在所述目标队列的所述预定资源量、所述多个用户端分别对应的所述已分配资源量、以及不同类型作业对应的资源分配量上限,为所述至少一个目标用户端进行作业资源分配。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图4所示,为本申请实施例提供的计算机设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当电子设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401执行以下指令:
接收至少一个目标用户端发送的针对目标队列的作业资源分配请求。
获取所述目标队列中包括所述目标用户端在内的多个用户端在所述目标队列的预定资源量,以及所述多个用户端分别对应的已分配资源量;所述已分配资源量为针对所述多个用户端提交的历史作业分配的所述目标队列的资源量。
根据所述多个用户端在所述目标队列的所述预定资源量,以及所述多个用户端分别对应的所述已分配资源量,为所述至少一个目标用户端进行作业资源分配。
其中,处理器401的具体处理流程可以参照上述方法实施例的记载,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的资源分配方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的资源分配方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的资源分配方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。