CN113157379A - 集群节点资源调度方法及装置 - Google Patents
集群节点资源调度方法及装置 Download PDFInfo
- Publication number
- CN113157379A CN113157379A CN202010075772.7A CN202010075772A CN113157379A CN 113157379 A CN113157379 A CN 113157379A CN 202010075772 A CN202010075772 A CN 202010075772A CN 113157379 A CN113157379 A CN 113157379A
- Authority
- CN
- China
- Prior art keywords
- gpu
- weight value
- physical node
- memory
- cluster
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种集群节点资源调度方法及装置,属于计算机技术领域。集群节点资源调度方法,用于调度集群中的物理节点创建容器集群以运行用户应用,包括:获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;获取集群中每个物理节点的资源使用信息;根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本发明的技术方案能够提高集群资源的利用率。
Description
技术领域
本发明涉及计算机技术领域,特别是指一种集群节点资源调度方法及装置。
背景技术
近年来,并行计算集群越来越多的应用于语音识别、图像识别、自然语言理解等人工智能相关领域,使得人工智能相关领域的任务处理能力显著提升,尤其是人工智能相关领域中的深度学习任务的处理能力大大得到提升;而随着数据处理量的增加,单个资源往往无法承载复杂的计算任务,这样就需要并行计算集群中越来越多的资源执行相应任务,以满足实际应用需求,如使用多个图形处理单元(Graphic Processing Unit,GPU)组成一个GPU集群执行海量数据的深度学习任务中的计算需求,这就需要对集群资源进行高效的分配,以充分发挥其并行计算的能力。
现有技术中,在对集群节点进行资源分配时,并没有考虑每个节点资源的使用状况,而是根据所需要的计算资源对节点中的容器进行简单的分配,造成计算任务等待时间较长,集群并行处理能力下降以及资源利用率较低等问题。
发明内容
本发明要解决的技术问题是提供一种集群节点资源调度方法及装置,能够提高集群资源的利用率。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种集群节点资源调度方法,用于调度集群中的物理节点创建容器集群以运行用户应用,包括:
获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
获取集群中每个物理节点的资源使用信息;
根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
可选地,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
可选地,所述根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值包括:
根据所述应用类型确定每个资源的权重值;
根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
可选地,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
可选地,GPU的空闲数目Free gpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPUusage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
可选地,所述根据每个物理节点的分值分配容器到各个物理节点包括:
根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
可选地,所述根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点包括:
根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
可选地,根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值之前,所述方法还包括:
确定所述应用类型是否为GPU密集型应用;
如果是,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
可选地,创建容器集群之后,所述方法还包括:
在所述容器集群上运行用户应用;
在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
本发明实施例还提供了一种集群节点资源调度装置,用于调度集群中的物理节点创建容器集群以运行用户应用,包括:
第一获取模块,用于获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
第二获取模块,用于获取集群中每个物理节点的资源使用信息;
处理模块,用于根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
可选地,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
可选地,所述处理模块包括:
确定子模块,用于根据所述应用类型确定每个资源的权重值;
计算子模块,用于根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
可选地,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
可选地,GPU的空闲数目Free gpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPUusage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memoryratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
可选地,所述处理模块具体用于根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
可选地,所述处理模块包括:
第一标签子模块,用于根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
第二标签子模块,用于根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
匹配模块,用于将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
可选地,所述装置还包括:
判断模块,用于确定所述应用类型是否为GPU密集型应用;
计算模块,用于如果所述应用类型是GPU密集型应用,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
调整模块,用于将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
可选地,所述装置还包括:
运行模块,用于在所述容器集群上运行用户应用;
释放模块,用于在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
本发明实施例还提供了一种集群节点资源调度设备,包括:
处理器;和
存储器,在所述存储器中存储有计算机程序指令,
其中,在所述计算机程序指令被所述处理器运行时,使得所述处理器执行如上所述的集群节点资源调度方法中的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器运行时,使得所述处理器执行如上所述的集群节点资源调度方法中的步骤。
本发明的实施例具有以下有益效果:
上述方案中,根据每个物理节点的资源使用信息和用户应用的参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本实施例根据物理节点的资源利用情况,将容器按物理节点的资源空闲状况按序部署到物理节点上,能够将容器合理调度到不同的物理节点上,在更高效利用资源的同时也提高处理性能。
附图说明
图1为本发明实施例一集群节点资源调度方法的流程示意图;
图2为本发明实施例集群节点资源调度的示意图;
图3为本发明实施例二集群节点资源调度方法的流程示意图;
图4为本发明实施例三集群节点资源调度方法的流程示意图;
图5为本发明实施例四集群节点资源调度方法的流程示意图;
图6为本发明实施例五集群节点资源调度装置的结构框图;
图7为本发明实施例六集群节点资源调度设备的结构框图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
Kubernetes由Google开源的一个容器编排引擎,是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。Kubernetes的目标旨在消除编排物理和/或虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes也提供稳定、兼容的基础(平台),用于构建定制化的workflows和更高级的自动化任务。Kubernetes具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力,同时还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。
相关技术中,在对集群节点进行资源分配时,只是简单的分析神经网络模型的复杂度,并没有考虑每个物理节点资源的使用状况,没有根据物理节点的资源使用率对容器进行更精细化的分配,比较粗糙。
本发明要解决的技术问题是提供一种集群节点资源调度方法及装置,能够提高集群资源的利用率。
实施例一
本实施例提供一种集群节点资源调度方法,用于调度集群中的物理节点创建容器集群以运行用户应用,如图2所示,在Kubernetes平台上部署分布式容器集群来用户应用,用户应用包括GPU密集型应用、计算密集型应用和内存密集型,Kubernetes平台将容器调度到匹配的物理节点进行绑定,并启动容器集群来运行用户应用。
如图1所示,本实施例包括以下步骤:
步骤101:获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
其中,应用类型包括GPU密集型应用、计算密集型应用和内存密集型。
步骤102:获取集群中每个物理节点的资源使用信息;
其中,物理节点的资源可以包括GPU、CPU、内存和磁盘;物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。本实施例中,需要动态持续地监控每个物理节点的资源使用信息。
步骤103:根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
所述根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值具体包括:根据所述应用类型确定每个资源的权重值;根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
对于GPU密集型应用,GPU权重值W1、CPU权重值W2、内存权重值W3和磁盘权重值W4的和等于1,CPU权重值W2大于内存权重值W3,GPU权重值W1大于CPU权重值W2、内存权重值W3和磁盘权重值W4的和;一具体示例中,W1+W2+W3+W4=1,W1>W2>W3=W4,W1=0.55,W 2=0.25W3=W4=0.1。
对于CPU密集型应用,GPU权重值W1、CPU权重值W2、内存权重值W3和磁盘权重值W4的和等于1,内存权重值W3大于磁盘权重值W4,CPU权重值W2大于内存权重值W3,GPU权重值为0;一具体示例中,W1+W2+W3+W4=1,W2>W3>W4,W1=0,W 2=0.5W3=0.3W4=0.2。
对于内存密集型,GPU权重值W1、CPU权重值W2、内存权重值W3和磁盘权重值W4的和等于1,CPU权重值W2大于磁盘权重值W4,内存权重值W3大于CPU权重值W2,GPU权重值为0;一具体示例中,W1+W2+W3+W4=1,W3>W2>W4,W1=0,W 2=0.3W3=0.5W4=0.2。
其中,GPU的空闲数目Free gpu(i)可以采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPUusage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。具体地,第一阈值可以为0.5,第二阈值可以为0.7,当然,第一阈值和第二阈值还可以根据实际应用情况采用其他值。
其中,GPU的内存空闲率=正在运行的GPU的空闲内存/总内存。
具体地,可以采用以下公式计算每个物理节点的分值SCORE(i):
SCORE(i)=W1*(Free gpu(i))+W2*(idle CPU(i))+W3*(free memory(i))+W4(free disk(i))
其中,idle CPU(i)为CPU的空闲数目,free memory(i)为内存的空闲数目,freedisk(i)为磁盘的空闲数目。
物理节点的分值体现了物理节点的空闲资源的多少,物理节点的分值越高,则物理资源的空闲资源越多,物理节点的分值越低,则物理资源的空闲资源越少。在计算出物理节点的分值后,可以根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。分布式机器学习集群的角色包括Master,PS和Worker,在分配物理节点时,可以将空闲资源最少的物理节点分配给PS,空闲资源次少的物理节点分配给Master,剩下的物理节点分配给Worker。
具体地,可以根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
在为物理节点打上标签时,首先获取当前物理节点的Mac地址,将Mac地址从十六进制转换为十进制,得到转换后的数值MacInt;再获取物理节点分配时的时间戳T;根据物理节点的分值决定与物理节点对应的容器的集群角色Role,比如Role的取值可以为0,1,2,其中0代表Master,2代表PS,3代表Worker;最后得到物理节点的标签Label(i)=MacInt_Role_T_No,其中,No为根据物理节点的分值对物理节点进行排序后为物理节点分配的索引。
在为容器打上标签时,对集群所有容器按集群角色进行随机编号PodNo,PodNo=Num(shuf(Podlist)),可以从0开始给容器进行编号;将PodNo与时间戳T组合作为当前容器的key,key=T+PodNo;用key对集群的各角色物理节点总数执行取模操作,获得该容器对应的物理节点索引nodeIndex,nodeIndex=key mod num(NodeList(i)),之后可以获取该nodeIndex对应物理节点的Mac地址,角色Role,然后将Mac,Role,时间戳T和Pod_index组合在一起作为该容器的标签Pod_Node_label=MacInt_Role_T_nodeIndex。
将Pod_label与物理节点标签进行匹配,匹配成功后,将该容器调度到匹配上的物理节点并进行绑定,循环此项操作直到所有容器调度完成。具体地,可以通过调用自定义的Kubernetes调度程序将容器调度到物理节点。
通过上述步骤即可完成容器集群的建立,在创建容器集群之后,可以在所述容器集群上运行用户应用,Kubernetes将各个集群角色的容器分配到指定的物理节点进行训练;在运行完成后获取用户应用的输出结果,所有资源自动被Kubernetes回收,释放所述容器集群占用的资源,以供下一个用户应用使用,同时Kubernetes会删除每个物理节点的标签。
另外,根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值之前,还需要确定所述应用类型是否为GPU密集型应用;如果应用类型为GPU密集型应用,需要根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。其中,需要的GPU数量=训练数据集/GPU速度/期望训练时长,GPU速度可以由根据GPU型号确定的GPU计算能力和GPU内存计算得的。
值得注意的是,上述实施例适用于物理节点数目大于1的场景,如果物理节点数目等于1,则直接将所有容器分配到同一个物理节点。
本实施例中,根据每个物理节点的资源使用信息和用户应用的参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本实施例根据物理节点的资源利用情况,将容器按物理节点的资源空闲状况按序部署到物理节点上,能够将容器合理调度到不同的物理节点上,在更高效利用资源的同时也提高处理性能。
实施例二
本实施例中,情感分析是用户需要处理的应用,这是一个GPU密集型的涉及到深度学习的应用,需要在Kubernetes平台上部署分布式Tensorflow容器集群来处理此应用。本实施例中,Kubernetes平台部署在5台物理节点上,每台物理节点都配置了GPU,CPU,内存和磁盘。本实施例中,动态持续的监控每台物理节点的资源使用信息,并根据资源使用率将Tensorflow容器合理调度到不同的物理节点,在更高效利用资源的同时也提高处理性能。
如图3所示,本实施例包括以下步骤:
步骤201:获取输入的情感分析应用的参数;
用户在确定应用后,会输入训练数据集,期望训练时长,GPU型号,需要创建的Pod(容器)数目等参数,本实施例中,应用类型为GPU密集型应用,训练数据集大小为1TB,期望训练时长为4小时,GPU型号为GeForce RTX2070。
步骤202:获取所有物理节点当前的资源使用情况;
本实施例中,有5个物理节点,每个物理节点的资源包括GPU,CPU,内存,磁盘。
步骤203:对每个物理节点的资源设定权重比;
为GPU,CPU,内存和磁盘设定权重比,设定的原则为四者(GPU,CPU,内存,磁盘)权重值之和为1;内存权重值与磁盘权重值相等;CPU权重值大于内存权重值;同时GPU的权重值大于其余三者权重值之和。依照这样的分配原则设定这四项资源指标的权重值。
步骤204:根据GPU型号获取当前GPU默认的计算能力和总内存值;
其中,可以将物理节点GPU已使用内存值与总内存值进行比较获取每个物理节点的GPU内存使用率,如果GPU内存使用率超过0.5或者GPU计算负载超过0.7,则认为此GPU无空闲资源。
步骤205:计算出物理节点空闲的GPU数目;
对当前物理节点,根据GPU的使用情况,将完全空闲GPU数目设定为1,非空闲的GPU在内存空闲率和GPU计算空闲率中取最小值(例:min(内存空闲率0.6,计算空闲率0.65)=0.6),然后将当前物理节点的GPU数目做迭加处理并取整(例:当前物理节点总可用GPU数目为1+0.6+0+0.7=2),这样可以计算出当前物理节点空闲的GPU数目,对于其余物理节点,依照相同的算法获取空闲的GPU数目Free_GPUs,可以得到所有物理节点的空闲的GPU数目Free_GPUs。
步骤206:计算物理节点的空闲资源得分;
获取四项资源的权重值,针对每个物理节点,将GPU权重值与未使用GPU数目作乘积,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这四者(GPU,CPU,内存和磁盘)的乘积相加求和得到每个物理节点的空闲资源得分。
步骤207:按照每个物理节点的空闲资源得分对物理节点进行排序;
具体地,可以按照空闲资源得分的从高到低对物理节点进行排序。
步骤208:计算出需要的GPU数目Expected_GPUs;
由于情感分析是一个GPU密集型的涉及到深度学习的应用,还需要计算出需要的GPU数目Expected_GPUs,以判断集群空闲的GPU数目是否能满足应用要求。
具体地,将训练数据集除以期望训练时长计算出每小时可训练的数据规模,然后用每小时可训练的数据规模除以GPU型号获取到的GPU计算能力计算出需要的GPU数目Expected_GPUs。
步骤209:将需要的GPU数与集群当前空闲的GPU数比较,如果需要的GPU数多于集群当前空闲的GPU数,则调整训练数据集规模或者期望训练时长,循环这一过程,直到需要的GPU数不多于集群当前空闲的GPU数;
其中,集群当前空闲的GPU数为所有物理节点的空闲的GPU数目Free_GPUs之和。
步骤210:为物理节点打上标签;
获取当前物理节点的Mac地址,然后进行10进制转换(例:48-89-E7-2A-60-11–72137231429617),得到转换后的数值Num1。
Tensorflow分布式容器集群包含三个角色Role,分别为Master,PS和Worker(例:取值分别为0,1,2);首先将空闲资源得分最少的物理节点标记为PS角色,然后将空闲资源得分次少的物理节点标记为Master角色,最后将剩下的物理节点全部标记为Worker角色。
另外自动获取物理节点分配时的时间戳T(例:20191211141125)。
然后按照物理节点的空闲资源得分进行排序,得到物理节点的索引Index。
利用Num1,Role,T以及分配到的物理节点索引作为物理节点的标签Num1_Role_T_Index,一具体示例中,物理节点的标签可以为72137231429617_1_20191211141125_0。
重复上述过程,得到所有物理节点的标签。
步骤211:为容器打上标签;
对Tensorflow集群所有容器按集群角色进行随机编号PodNum,例:Worker角色(2)第三个容器(03)的PodNum为203。
将PodNum与时间戳T组合作为当前容器key,然后用key对集群的各角色物理节点总数执行取模操作,获得此容器对应的物理节点索引Pod_index。
获取此Pod_index对应物理节点的Mac地址,角色Role,然后将Mac,Role,时间戳T和Pod_index组合在一起作为此容器的标签Pod_label,一具体示例中,容器的标签为72137231429617_2_20191211141125_1。
重复上述过程,得到所有容器的标签。
步骤212:将容器标签与物理节点标签进行匹配,匹配成功后,将此容器调度到匹配上的物理节点并进行绑定,循环此项操作直到所有容器调度完成。
将用户所需容器调度完成后,启动分布式Tensorflow集群执行情感分析模型训练,接着将训练执行后的结果返回给用户。由Kubernetes在各物理节点停止运行此应用相关的所有容器,接着,销毁所有物理节点上为情感分析应用分配的所有容器,释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用所需的训练数据集,GPU型号等参数,就能自动选择适当的物理节点快速的创建容器并搭建出集群,本实施例能根据物理节点的资源利用情况,智能的将容器按资源空闲状况按序部署到物理节点上,能够保证资源均衡利用的同时也大大降低了集群搭建的时间成本。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
实施例三
在本实施例中,WordCount是用户需要处理的应用。这是一个CPU密集型的应用,需要在Kubernetes平台上部署分布式Spark容器集群来处理此应用。Kubernetes平台部署在5台物理节点上,每台节点都配置了GPU,CPU,内存和磁盘。本实施例中,动态持续的监控每台物理节点的资源使用信息,并根据资源使用率将Spark容器合理调度到不同的物理节点来处理WordCount应用,在更高效利用资源的同时也提高处理性能。
如图4所示,本实施例包括以下步骤:
步骤301:获取输入的WordCount应用的参数;
用户在确定应用后,会输入应用类型,需要创建的Pod(容器)数目等,本实施例中,WordCount应用类型为GPU密集型应用。
步骤302:获取所有物理节点当前的资源使用情况;
本实施例中,有5个物理节点,每个物理节点的资源包括GPU,CPU,内存,磁盘。
步骤303:对每个物理节点的资源设定权重比;
对每个物理节点,为GPU,CPU,内存,磁盘设定权重比,设定的原则为四者(GPU,CPU,内存,磁盘)权重值之和为1;内存权重值大于磁盘权重值;CPU权重值大于内存权重值;同时因为这是CPU密集型应用,GPU的权重值设为0。依照这样的分配原则设定这几项资源指标的权重值。
步骤304:计算物理节点的空闲资源得分;
获取四项资源的权重值,针对每个物理节点,将GPU权重值0与未使用GPU数目作乘积,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这四者(GPU,CPU,内存和磁盘)的乘积相加求和得到每个物理节点的权重值作为其空闲资源得分。
步骤305:按照每个物理节点的空闲资源得分对物理节点进行排序;
步骤306:为物理节点打上标签;
获取当前节点的Mac地址,然后进行10进制转换(例:48-89-E7-2A-60-11–72137231429617),得到转换后的数值Num1。
Spark分布式容器集群包含两个角色Role,分别为Master和Worker(取值分别为0,1),将空闲资源得分最少的物理节点标记为Master角色,然后将将剩下的物理节点全部标记为Worker角色。
另外自动获取物理节点分配时的时间戳T(例:20191211141125)。
然后按照物理节点的空闲资源得分进行排序,得到物理节点的索引Index。
利用Num1,Role,T以及分配到的物理节点索引作为物理节点的标签Num1_Role_T_Index,一具体示例中,物理节点的标签为72137231429617_1_20191211141125_0。
重复上述过程,得到所有物理节点的标签。
步骤307:为容器打上标签;
对Spark集群所有容器按集群角色进行随机编号PodNum,例:Worker角色第三个容器的PodNum为103,将PodNum与时间戳T组合作为当前容器key,然后用key对集群的各角色物理节点总数执行取模操作,获得此容器对应的物理节点Pod_index;
获取此Pod_index对应物理节点的Mac地址,角色Role,然后将Mac,Role,时间戳T和Pod_index组合在一起作为此容器的标签Pod_label。
重复上述过程,得到所有容器的标签。
步骤308:将容器标签与物理节点标签进行匹配,匹配成功后,将此容器调度到匹配上的物理节点并进行绑定,循环此项操作直到所有容器调度完成。
将用户所需容器调度完成后,启动分布式Spark集群执行WordCount应用,接着将执行后的结果返回给用户。由Kubernetes在各物理节点停止运行此应用相关的所有容器,接着,销毁所有物理节点上为WordCount应用分配的所有容器,释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用类型,需要创建的容器数目就能自动选择适当的物理节点快速的创建容器并搭建出集群,本实施例能根据物理节点的资源利用情况,动态的将容器按资源空闲状况按序部署到物理节点上,能够保证资源均衡利用的同时也大大降低了集群搭建的时间成本。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
实施例四
在本实施例中,排行榜(leaderboard)是用户需要处理的应用。这是一个内存密集型的应用,需要在Kubernetes平台上部署分布式Redis容器集群来处理此应用。Kubernetes平台部署在5台物理节点上,每台节点都配置了GPU,CPU,内存和磁盘。本实施例中,动态持续的监控每台物理节点的资源使用信息,并根据资源使用率将Redis容器合理调度到不同的节点来处理leaderboard应用,在更高效利用资源的同时也提高处理性能。
如图5所示,本实施例包括以下步骤:
步骤401:获取输入的leaderboard应用的参数;
用户在确定应用后,会输入应用类型,需要创建的Pod(容器)数目等。本实施例中,leaderboard应用资源密集类型为GPU密集型。
步骤402:获取所有物理节点当前的资源使用情况;
本实施例中,有5个物理节点,每个物理节点的资源包括GPU,CPU,内存,磁盘。
步骤403:对每个物理节点的资源设定权重比;
对每个物理节点,为GPU,CPU,内存,磁盘设定权重比,设定的原则为四者(GPU,CPU,内存,磁盘)权重值之和为1;CPU权重值大于磁盘权重值;内存权重值大于CPU权重值;同时因为这是内存密集型应用,GPU的权重值设为0。依照这样的分配原则设定这几项资源指标的权重值。
步骤404:计算物理节点的空闲资源得分;
获取四项资源的权重值,针对每个物理节点,将GPU权重值0与未使用GPU数目作乘积,将CPU权重值与未使用CPU所占比率作乘积,将内存权重值与未使用内存所占比率作乘积,将磁盘权重值与未使用磁盘所占比率作乘积。然后,将这四者(GPU,CPU,内存和磁盘)的乘积相加求和得到每个物理节点的权重值作为其空闲资源得分。
步骤405:按照每个物理节点的空闲资源得分对物理节点进行排序;
步骤406:为物理节点打上标签;
获取当前物理节点的Mac地址,然后进行10进制转换(例:48-89-E7-2A-60-11–72137231429617),得到转换后的数值Num1。
Redis分布式容器集群包含两个角色Role,分别为Master和Worker(取值分别为0,1),将空闲资源得分最少的物理节点标记为Master角色,然后将将剩下的物理节点全部标记为Worker角色。
另外自动获取节点分配时的时间戳T(例:20191211141125)。
然后按照物理节点的空闲资源得分进行排序,得到物理节点的索引Index。
利用Num1,Role,T以及分配到的物理节点索引作为物理节点的标签Num1_Role_T_Index,一具体示例中,物理节点的标签为72137231429617_1_20191211141125_0。
重复上述过程,得到所有物理节点的标签。
步骤407:为容器打上标签;
对Redis集群所有容器按角色进行随机编号PodNum,例:Worker角色第三个容器的PodNum为103,将PodNum与时间戳T组合作为当前容器key,然后用key对集群的各角色物理节点总数执行取模操作,获得此容器对应的物理节点Pod_index;
获取此Pod_index对应节点的Mac地址,角色Role,然后将Mac,Role,时间戳T和Pod_index组合在一起作为此容器的标签Pod_label。
重复上述过程,得到所有容器的标签。
步骤408:将Pod_label与物理节点标签进行匹配,匹配成功后,将此容器调度到匹配上的物理节点并进行绑定,循环此项操作直到所有容器调度完成。
将用户所需容器调度完成后,启动分布式Redis集群执行leaderboard应用,接着将执行后的结果返回给用户。由Kubernetes在各物理节点停止运行此应用相关的所有容器,接着,销毁所有物理节点上为leaderboard应用分配的所有容器,释放容器所占用的资源,提供给用户执行下一个应用。
在本实施例中,用户仅需确定应用类型,Pod数目等,就能自动选择适当的物理节点快速的创建容器并搭建出集群,本实施例能根据物理节点的资源利用情况,动态的将容器按资源空闲状况按序部署到物理节点上,能够保证资源均衡利用的同时也大大降低了集群搭建的时间成本。同时,在应用执行完毕后,自动的销毁容器释放出物理资源,保证了资源能够重复利用。
实施例五
本实施例提供了一种集群节点资源调度装置,用于调度集群中的物理节点创建容器集群以运行用户应用,如图6所示,本实施例包括:
第一获取模块61,用于获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
第二获取模块62,用于获取集群中每个物理节点的资源使用信息;
其中,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
处理模块63,用于根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
可选地,所述处理模块63包括:
确定子模块,用于根据所述应用类型确定每个资源的权重值;
计算子模块,用于根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
可选地,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
可选地,GPU的空闲数目Free gpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPUusage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
可选地,所述处理模块63具体用于根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
可选地,所述处理模块63包括:
第一标签子模块,用于根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
第二标签子模块,用于根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
匹配模块,用于将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
可选地,所述装置还包括:
判断模块,用于确定所述应用类型是否为GPU密集型应用;
计算模块,用于如果所述应用类型是GPU密集型应用,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
调整模块,用于将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
可选地,所述装置还包括:
运行模块,用于在所述容器集群上运行用户应用;
释放模块,用于在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
本实施例中,根据每个物理节点的资源使用信息和用户应用的参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本实施例根据物理节点的资源利用情况,将容器按物理节点的资源空闲状况按序部署到物理节点上,能够将容器合理调度到不同的物理节点上,在更高效利用资源的同时也提高处理性能。
实施例六
本发明实施例还提供了一种集群节点资源调度设备50,如图7所示,包括:
处理器52;和
存储器54,在所述存储器54中存储有计算机程序指令,
其中,在所述计算机程序指令被所述处理器运行时,使得所述处理器52执行以下步骤:
获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
获取集群中每个物理节点的资源使用信息;
根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
本实施例中,根据每个物理节点的资源使用信息和用户应用的参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本实施例根据物理节点的资源利用情况,将容器按物理节点的资源空闲状况按序部署到物理节点上,能够将容器合理调度到不同的物理节点上,在更高效利用资源的同时也提高处理性能。
进一步地,如图7所示,集群节点资源调度设备50还包括网络接口51、输入设备53、硬盘55、和显示设备56。
上述各个接口和设备之间可以通过总线架构互连。总线架构可以是可以包括任意数量的互联的总线和桥。具体由处理器52代表的一个或者多个中央处理器(CPU),以及由存储器54代表的一个或者多个存储器的各种电路连接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其它电路连接在一起。可以理解,总线架构用于实现这些组件之间的连接通信。总线架构除包括数据总线之外,还包括电源总线、控制总线和状态信号总线,这些都是本领域所公知的,因此本文不再对其进行详细描述。
所述网络接口51,可以连接至网络(如因特网、局域网等),从网络中获取相关数据,并可以保存在硬盘55中。
所述输入设备53,可以接收操作人员输入的各种指令,并发送给处理器52以供执行。所述输入设备53可以包括键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
所述显示设备56,可以将处理器52执行指令获得的结果进行显示。
所述存储器54,用于存储操作系统运行所必须的程序和数据,以及处理器52计算过程中的中间结果等数据。
可以理解,本发明实施例中的存储器54可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。本文描述的装置和方法的存储器54旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器54存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统541和应用程序542。
其中,操作系统541,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序542,包含各种应用程序,例如浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序542中。
上述处理器52,当调用并执行所述存储器54中所存储的应用程序和数据,具体的,获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;获取集群中每个物理节点的资源使用信息;根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
本发明上述实施例揭示的方法可以应用于处理器52中,或者由处理器52实现。处理器52可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器52中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器52可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器54,处理器52读取存储器54中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ASIC)、数字信号处理器DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
进一步地,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
进一步地,处理器52根据所述应用类型确定每个资源的权重值;根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
进一步地,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
可选地,GPU的空闲数目Free gpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPUusage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
进一步地,处理器52根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
进一步地,处理器52根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
进一步地,处理器52确定所述应用类型是否为GPU密集型应用;如果是,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
进一步地,处理器52在所述容器集群上运行用户应用;在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
实施例七
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器运行时,使得所述处理器执行以下步骤:
获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
获取集群中每个物理节点的资源使用信息;
根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
本实施例中,根据每个物理节点的资源使用信息和用户应用的参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。本实施例根据物理节点的资源利用情况,将容器按物理节点的资源空闲状况按序部署到物理节点上,能够将容器合理调度到不同的物理节点上,在更高效利用资源的同时也提高处理性能。
进一步地,所述计算机程序被处理器运行时,还使得所述处理器执行以下步骤:
根据所述应用类型确定每个资源的权重值;
根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
进一步地,所述计算机程序被处理器运行时,还使得所述处理器执行以下步骤:
根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
进一步地,所述计算机程序被处理器运行时,还使得所述处理器执行以下步骤:
根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
进一步地,所述计算机程序被处理器运行时,还使得所述处理器执行以下步骤:
确定所述应用类型是否为GPU密集型应用;
如果是,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
进一步地,所述计算机程序被处理器运行时,还使得所述处理器执行以下步骤:
在所述容器集群上运行用户应用;
在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (18)
1.一种集群节点资源调度方法,其特征在于,用于调度集群中的物理节点创建容器集群以运行用户应用,包括:
获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
获取集群中每个物理节点的资源使用信息;
根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
2.根据权利要求1所述的集群节点资源调度方法,其特征在于,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
3.根据权利要求2所述的集群节点资源调度方法,其特征在于,所述根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值包括:
根据所述应用类型确定每个资源的权重值;
根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
4.根据权利要求3所述的集群节点资源调度方法,其特征在于,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
5.根据权利要求3所述的集群节点资源调度方法,其特征在于,GPU的空闲数目Freegpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPU usage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
6.根据权利要求1所述的集群节点资源调度方法,其特征在于,所述根据每个物理节点的分值分配容器到各个物理节点包括:
根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
7.根据权利要求6所述的集群节点资源调度方法,其特征在于,所述根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点包括:
根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
8.根据权利要求1-7中任一项所述的集群节点资源调度方法,其特征在于,根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值之前,所述方法还包括:
确定所述应用类型是否为GPU密集型应用;
如果是,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
9.根据权利要求8所述的集群节点资源调度方法,其特征在于,创建容器集群之后,所述方法还包括:
在所述容器集群上运行用户应用;
在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
10.一种集群节点资源调度装置,其特征在于,用于调度集群中的物理节点创建容器集群以运行用户应用,包括:
第一获取模块,用于获取用户应用的参数,所述用户应用的参数包括以下至少一种:训练数据集、期望训练时长、应用类型、容器数目、集群中图形处理单元GPU型号和机器学习模型;
第二获取模块,用于获取集群中每个物理节点的资源使用信息;
处理模块,用于根据每个物理节点的资源使用信息和所述参数计算每个物理节点的分值,并根据每个物理节点的分值分配容器到各个物理节点,创建容器集群。
11.根据权利要求10所述的集群节点资源调度装置,其特征在于,物理节点的资源包括GPU、CPU、内存和磁盘;
物理节点的资源使用信息包括:GPU负载、CPU使用率、内存使用率和磁盘使用率。
12.根据权利要求11所述的集群节点资源调度装置,其特征在于,所述处理模块包括:
确定子模块,用于根据所述应用类型确定每个资源的权重值;
计算子模块,用于根据每个资源的权重值和每个资源的空闲数目计算得的每个物理节点的分值。
13.根据权利要求12所述的集群节点资源调度装置,其特征在于,所述应用类型包括GPU密集型应用、CPU密集型应用和内存密集型应用,
对于GPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于内存权重值,GPU权重值大于CPU权重值、内存权重值和磁盘权重值的和;
对于CPU密集型应用,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,内存权重值大于磁盘权重值,CPU权重值大于内存权重值,GPU权重值为0;
对于内存密集型,GPU权重值、CPU权重值、内存权重值和磁盘权重值的和等于1,CPU权重值大于磁盘权重值,内存权重值大于CPU权重值,GPU权重值为0。
14.根据权利要求12所述的集群节点资源调度装置,其特征在于,GPU的空闲数目Freegpu(i)采用以下公式计算:
Free gpu(i)=(free GPU num(i)+∑min(free GPU memory ratio,(1-GPU usage))
其中,free GPU num(i)为物理节点的空闲的GPU数目,free GPU memory ratio为物理节点的非空闲的GPU的内存空闲率,GPU usage为物理节点的非空闲的GPU的计算负载,其中,如果GPU内存使用率超过第一阈值或者GPU计算负载超过第二阈值,则认为此GPU无空闲资源。
15.根据权利要求10所述的集群节点资源调度装置,其特征在于,所述处理模块具体用于根据每个物理节点的分值排序以及容器的集群角色将容器调度到不同的物理节点。
16.根据权利要求15所述的集群节点资源调度装置,其特征在于,所述处理模块包括:
第一标签子模块,用于根据每个物理节点的物理地址、进行调度时的时间戳、容器的集群角色、物理节点的分值排序对物理节点打上标签;
第二标签子模块,用于根据每个容器的集群角色和进行调度时的时间戳确定容器对应的物理节点,根据容器对应的物理节点的物理地址、容器的集群角色、进行调度时的时间戳和对应的物理节点的分值排序为容器打上标签;
匹配模块,用于将容器标签与物理节点标签进行匹配,将容器调度到匹配上的物理节点并进行绑定。
17.根据权利要求10-16中任一项所述的集群节点资源调度装置,其特征在于,所述装置还包括:
判断模块,用于确定所述应用类型是否为GPU密集型应用;
计算模块,用于如果所述应用类型是GPU密集型应用,根据训练数据集、期望训练时长和GPU型号计算需要的GPU数量;
调整模块,用于将空闲的GPU数量与需要的GPU数量比较,如果空闲的GPU数量少于需要的GPU数量,则调整期望训练时长和训练数据集,直到空闲的GPU数量不少于需要的GPU数量。
18.根据权利要求17所述的集群节点资源调度装置,其特征在于,所述装置还包括:
运行模块,用于在所述容器集群上运行用户应用;
释放模块,用于在运行完成后获取用户应用的输出结果,并释放所述容器集群占用的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010075772.7A CN113157379A (zh) | 2020-01-22 | 2020-01-22 | 集群节点资源调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010075772.7A CN113157379A (zh) | 2020-01-22 | 2020-01-22 | 集群节点资源调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113157379A true CN113157379A (zh) | 2021-07-23 |
Family
ID=76882025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010075772.7A Pending CN113157379A (zh) | 2020-01-22 | 2020-01-22 | 集群节点资源调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157379A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641456A (zh) * | 2021-08-18 | 2021-11-12 | 中国联合网络通信集团有限公司 | 数据集群的部署方法、装置及系统 |
KR20220098636A (ko) * | 2021-01-04 | 2022-07-12 | 네이버 주식회사 | 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 |
CN114911618A (zh) * | 2022-05-12 | 2022-08-16 | 中国电信股份有限公司 | 异构资源分配方法、装置、电子设备及存储介质 |
TWI777695B (zh) * | 2021-07-28 | 2022-09-11 | 新加坡商鴻運科股份有限公司 | 自動化任務排程方法、電子設備及儲存介質 |
CN115827253A (zh) * | 2023-02-06 | 2023-03-21 | 青软创新科技集团股份有限公司 | 一种芯片资源算力分配方法、装置、设备及存储介质 |
-
2020
- 2020-01-22 CN CN202010075772.7A patent/CN113157379A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220098636A (ko) * | 2021-01-04 | 2022-07-12 | 네이버 주식회사 | 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 |
KR102456005B1 (ko) | 2021-01-04 | 2022-10-18 | 네이버 주식회사 | 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 |
TWI777695B (zh) * | 2021-07-28 | 2022-09-11 | 新加坡商鴻運科股份有限公司 | 自動化任務排程方法、電子設備及儲存介質 |
CN113641456A (zh) * | 2021-08-18 | 2021-11-12 | 中国联合网络通信集团有限公司 | 数据集群的部署方法、装置及系统 |
CN113641456B (zh) * | 2021-08-18 | 2023-06-13 | 中国联合网络通信集团有限公司 | 数据集群的部署方法、装置及系统 |
CN114911618A (zh) * | 2022-05-12 | 2022-08-16 | 中国电信股份有限公司 | 异构资源分配方法、装置、电子设备及存储介质 |
CN114911618B (zh) * | 2022-05-12 | 2024-04-26 | 中国电信股份有限公司 | 异构资源分配方法、装置、电子设备及存储介质 |
CN115827253A (zh) * | 2023-02-06 | 2023-03-21 | 青软创新科技集团股份有限公司 | 一种芯片资源算力分配方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113157379A (zh) | 集群节点资源调度方法及装置 | |
Dupont et al. | An energy aware framework for virtual machine placement in cloud federated data centres | |
Zhu et al. | Scheduling stochastic multi-stage jobs to elastic hybrid cloud resources | |
US11816509B2 (en) | Workload placement for virtual GPU enabled systems | |
US20130219385A1 (en) | Batch scheduler management of virtual machines | |
CN111625331B (zh) | 任务调度方法、装置、平台、服务器及存储介质 | |
Soualhia et al. | Predicting scheduling failures in the cloud: A case study with google clusters and hadoop on amazon EMR | |
CN114356587B (zh) | 算力任务跨区域调度方法、系统及设备 | |
CN112416585A (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN110389903B (zh) | 测试环境部署方法和装置、电子设备和可读存储介质 | |
CN111984385A (zh) | 基于装饰bim模型的任务调度方法和任务调度装置 | |
Kurowski et al. | Grid scheduling simulations with GSSIM | |
CN113515382B (zh) | 云资源的分配方法、装置、电子设备及存储介质 | |
CN114327829A (zh) | 一种多核实时任务调度分析与仿真系统及方法 | |
CN115134371A (zh) | 包含边缘网络算力资源的调度方法、系统、设备及介质 | |
Martyshkin et al. | Using queuing theory to describe adaptive mathematical models of computing systems with resource virtualization and its verification using a virtual server with a configuration similar to the configuration of a given model | |
CN111988160B (zh) | 一种虚拟化网络功能的部署方法和装置 | |
CN109634714B (zh) | 一种智能调度的方法及装置 | |
US20040093477A1 (en) | Scalable parallel processing on shared memory computers | |
CN115373826B (zh) | 一种基于云计算的任务调度方法及装置 | |
CN114625512A (zh) | 任务调度方法、装置、电子设备及存储介质 | |
CN114780232A (zh) | 云应用调度方法、装置、电子设备及存储介质 | |
CN113918296A (zh) | 模型训练任务调度执行方法、装置、电子设备及存储介质 | |
CN112988383A (zh) | 一种资源分配方法、装置、设备以及存储介质 | |
CN115242637A (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 |