CN114721824A - 一种资源分配方法、介质以及电子设备 - Google Patents

一种资源分配方法、介质以及电子设备 Download PDF

Info

Publication number
CN114721824A
CN114721824A CN202210358585.9A CN202210358585A CN114721824A CN 114721824 A CN114721824 A CN 114721824A CN 202210358585 A CN202210358585 A CN 202210358585A CN 114721824 A CN114721824 A CN 114721824A
Authority
CN
China
Prior art keywords
application
resource
node
statement
access characteristic
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
Application number
CN202210358585.9A
Other languages
English (en)
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202210358585.9A priority Critical patent/CN114721824A/zh
Publication of CN114721824A publication Critical patent/CN114721824A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • 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/45583Memory management, e.g. access or allocation

Abstract

本发明提供了一种资源分配方法、介质以及电子设备,方法包括:获取应用需要容器化的请求,请求至少包括应用的访存特征声明以及所需的硬件资源声明;响应于请求,根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略,访存特征声明至少用于指示应用所需的硬件资源由工作节点中的单个NUMA节点还是多个NUMA节点提供,可用资源分布信息包括工作节点上各个NUMA节点自身的资源剩余量的指示;根据资源调度策略将应用的访存特征声明以及所需的硬件资源声明发送给相应的工作节点,以调度应用所需的硬件资源。本发明在考虑应用访存特征的情况下确定资源调度策略,提高资源利用率和/或容器的工作效率。

Description

一种资源分配方法、介质以及电子设备
技术领域
本发明涉及容器云平台技术领域,具体来说涉及一种硬件资源分配方法,更具体地说,涉及一种资源分配方法、介质以及电子设备。
背景技术
随着云计算技术的发展,以Docker为代表的容器技术在应用的开发、发布和部署上具有便捷性和实用性,从出现之初便受到了业界的广泛关注。由于Docker本身只注重于提供容器和镜像,因此需要一个集成的容器云管理平台高效地完成容器的编排部署、资源调度、服务发现、健康监控等任务。Kubernetes平台凭借其强大的容器编排能力和轻量开源的特点成为了众多容器集群调度系统的领跑者,为数据中心的基础架构带来了新的选择。Kubernetes平台项目的本质,是为用户提供一个具有普遍意义的容器编排工具。然而,Kubernetes平台的资源调度策略和以容器运行的程序对计算资源的使用粒度都比较粗。资源的精细化使用和管理对于数据中心的利用率提高有着至关重要的作用。
从数据中心服务器的角度来看,其多核心的处理器多是采用非一致存储访问(Non-Uniform Memory Access,以下简称NUMA)架构。利用基于NUMA架构的技术,可以把几十个CPU(甚至上百个CPU)组合在一个服务器内。NUMA服务器的基本特征是具有多个CPU模块,每个CPU模块由多个CPU(如:4个)组成,并且具有独立的本地内存、I/O槽口等。Kubernetes平台包括控制平面和至少一个工作节点,每个工作节点内包括一个或者多个NUMA节点,其NUMA节点之间可以通过互联模块(如:交叉开关,即:Crossbar Switch)进行连接和信息交互。以图1为例,一个工作节点中包括NUMA节点0和NUMA节点1,两者之间通过互联模块(也称Socket连接线,连接Socket0和Socket1)连接;NUMA节点0包括4个CPU(分别是CPU0、CPU1、CPU2、CPU3)、局部内存以及通过PCIe连接CPU0和NIC0;类似的,NUMA节点1包括4个CPU(分别是CPU4、CPU5、CPU6、CPU7)、局部内存以及通过PCIe连接的CPU1和NIC1。在工作节点中,每个CPU可以访问整个工作节点上的内存。但是,访问本地内存的速度将远远高于访问远程内存(系统内其它节点的内存)的速度,这也是非一致存储访问NUMA的由来。由于此设计特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同CPU模块之间的信息交互。同时,CPU访问内存的带宽也是一种资源,对于访存密集型应用也应该在多个NUMA节点间保持平衡,以避免带宽资源出现争用而导致访存的性能下降。
在NUMA架构的服务器中,除了CPU外,其他外接硬件如GPU、FPGA、特定领域加速卡等也会受到NUMA架构的影响而与CPU有类似的特征。目前容器云平台对容器化应用在NUMA架构硬件上的支持极不完善,在Kubernetes平台中,控制平面主要根据工作节点整体是否满足容器对CPU、内存等资源的需求,并从满足需求的工作节点中择优选择相应的工作节点来部署容器,这会导致应用部署后出现访存带宽争用的情况,影响资源利用率和/或容器的工作效率。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种资源分配方法、介质以及电子设备。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种资源分配方法,应用于Kubernetes平台中的主节点,包括:获取应用需要容器化的请求,所述请求至少包括应用的访存特征声明以及所需的硬件资源声明;响应于所述请求,根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略,其中,访存特征声明至少用于指示应用所需的硬件资源由工作节点中的单个NUMA节点还是多个NUMA节点提供,可用资源分布信息包括工作节点上各个NUMA节点自身的资源剩余量的指示;根据资源调度策略将应用的访存特征声明以及所需的硬件资源声明发送给相应的工作节点,以调度应用所需的硬件资源。
在本发明的一些实施例中,访存特征声明指示应用的访存特征至少为第一访存特征和第二访存特征中的一个,其中,第一访存特征表示应用是访存密集型的容器化应用,需要由工作节点中的单个NUMA节点提供其所需的硬件资源;第二访存特征表示应用是需要NUMA架构特性的容器化应用,需要由工作节点中的多个NUMA节点提供其所需的硬件资源。
在本发明的一些实施例中,所述根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略的步骤包括:根据访存特征声明确定应用所需的硬件资源声明与可用资源分布信息进行资源匹配的匹配粒度,其中,在应用为第一访存特征时用每个工作节点中单个NUMA节点的资源剩余量进行匹配,或者在应用为第二访存特征时用每个工作节点整体的资源剩余量进行匹配;按照确定的匹配粒度,根据所有工作节点的可用资源分布信息选择符合应用所需的硬件资源声明的工作节点作为候选工作节点;按照预定的评分规则对所有的候选工作节点进行评分,根据评分确定资源调度策略,该资源调度策略指示应用所需的资源由相应的工作节点提供。
在本发明的一些实施例中,所述方法还包括:从工作节点的注解中获取工作节点当前的可用资源分布信息,用于更新主节点上记录的该工作节点对应的可用资源分布信息。
在本发明的一些实施例中,所述方法还包括:在没有解析到应用的访存特征声明时,按照默认的资源分配方式得到资源调度策略。
根据本发明第二方面,提供一种资源分配方法,应用于Kubernetes平台中的工作节点,包括:获取主节点按照第一方面的方法确定资源调度策略后发送的应用的访存特征声明以及所需的硬件资源声明;根据应用的访存特征声明以及所需的硬件资源声明从当前工作节点为应用分配与其访存特征声明相匹配的硬件资源。
在本发明的一些实施例中,所述根据应用的访存特征声明以及所需的硬件资源声明从当前工作节点为应用分配与其访存特征声明相匹配的硬件资源的步骤包括:在访存特征声明指示应用的访存特征为第一访存特征时,从工作节点上的单个NUMA节点为应用分配其所需的硬件资源;或者,在访存特征声明指示应用的访存特征为第二访存特征时,从工作节点上的多个NUMA节点为应用分配其所需的硬件资源。
在本发明的一些实施例中,所述方法还包括:在工作节点为应用分配所需的硬件资源和/或在资源释放后,更新工作节点当前的可用资源分布信息。
在本发明的一些实施例中,工作节点当前的可用资源分布信息是由工作节点上的守护程序监听并标注在对工作节点的注解中,以由主节点从注解中读取。
在本发明的一些实施例中,所述方法还包括:在收到具有第一访存特征的多个应用对应的容器化应用的请求时,优先以负载均衡的方式将多个应用分别部署在不同的NUMA节点上。
根据本发明的第三方面,提供一种基于Kubernetes平台的数据中心服务器,包括:主节点,被配置为按照第一方面所述的方法为需要容器化的应用调度资源;多个工作节点,每个工作节点被配置为根据第二方面所述的方法为调度到本工作节点上的应用分配其容器化所需的硬件资源。
根据本发明的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现第一方面或者第二方面所述方法的步骤。
与现有技术相比,本发明的优点在于:
本发明通过在应用需要容器化的请求中加入访存特征声明,并在可用资源分布信息中加入工作节点上各个NUMA节点自身的资源剩余量的指示,从而可在资源分配时在考虑应用访存特征的情况下确定资源调度策略,从而提高资源利用率和/或容器的工作效率。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为Kubernetes平台的整体结构的原理示意图;
图2为根据本发明实施例的一种资源分配方法在主节点上实施的流程示意图;
图3为根据本发明实施例的一种资源分配方法在工作节点上实施的流程示意图;
图4为根据本发明实施例的随机分配的原理示意图;
图5为根据本发明实施例的顺序分配的原理示意图;
图6为根据本发明实施例的分配到剩余资源最多的NUMA节点的原理示意图;
图7为根据本发明实施例的负载均衡分配的原理示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,在Kubernetes平台中,控制平面主要根据工作节点整体是否满足容器对CPU、内存等资源的需求,并从满足需求的工作节点中择优选择相应的工作节点来部署容器,这会导致应用部署后出现访存带宽争用的情况,影响资源利用率和/或容器的运行效率。本发明通过在应用需要容器化的请求中加入访存特征声明,并在可用资源分布信息中加入工作节点上各个NUMA节点自身的资源剩余量的指示,从而可在资源分配时在考虑应用访存特征的情况下确定资源调度策略,从而提高资源利用率和/或容器的工作效率。
为了实现本发明,申请人对Kubernetes容器云平台的主节点和工作节点分别进行相应改进,下面分别从(一)主节点的改进、(二)工作节点的改进和(三)整体架构这三个方面进行说明。
(一)主节点的改进
根据本发明的一个实施例,本发明提供一种资源分配方法,应用于Kubernetes平台中的主节点(即:Master,通常也称控制平面),包括:步骤A1、A2、A3。该方法可以应用在主节点的调度器(即:Scheduler,或者称Kube-Scheduler)中。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
步骤A1:获取应用需要容器化的请求,所述请求至少包括应用的访存特征声明以及所需的硬件资源声明。
在现有技术中,应用需要容器化的请求中包括应用所需的硬件资源声明,比如:需要的CPU资源量、内存资源量等。但是,并未提供访存特征声明,以致于主节点只能根据应用所需的硬件资源与工作节点整体的资源剩余量(即:工作节点上所有NUMA节点整体的资源剩余量,比如:整体剩余多少CPU资源、内存资源等)进行择优匹配,导致一些访存密集型应用可能被分配到跨NUMA节点的资源,导致应用运行过程中需要频繁地远程访问内存,影响资源利用率和/或容器的工作效率。根据本发明的一个实施例,访存特征声明指示应用的访存特征至少为第一访存特征和第二访存特征中的一个,其中,第一访存特征表示应用是访存密集型的容器化应用,需要由工作节点中的单个NUMA节点提供其所需的硬件资源;第二访存特征表示应用是需要NUMA架构特性的容器化应用,需要由工作节点中的多个NUMA节点提供其所需的硬件资源。比如,定义应用需要容器化的请求中相应的比特记录访存特征声明,用0表示第一访存特征,用1表示第二访存特征。但应当理解,这是较为基础的,实施者在此之外添加更多类别的访存特征。比如,添加第三访存特征,得到三种类别的访存特征,可用两个比特来记录访存特征声明,用01表示第一访存特征,用10表示第二访存特征,用00表示第三访存特征,第三访存特征表示应用的访存特性可以为默认值,可按照Kubernetes平台原有的资源分配方式为应用分配资源。
根据本发明的一个实施例,应用所需的硬件资源声明载明应用运行时所需要的各种硬件资源的资源量。例如,应用所需的硬件资源声明包括对CPU、内存、GPU、磁盘、FPGA、网络带宽资源或者其组合的需求。
步骤A2:响应于所述请求,根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略,其中,访存特征声明至少用于指示应用所需的硬件资源由工作节点中的单个NUMA节点还是多个NUMA节点提供,可用资源分布信息包括工作节点上各个NUMA节点自身的资源剩余量的指示。
可用资源分布信息原来记录的是各个工作节点作为整体所具有的各种硬件资源的剩余量,并用于判断是否满足应用所需的硬件资源,若满足则加入候选工作节点集合,判断完成后再从候选工作集合中进一步通过打分筛选出最合适的工作节点用于应用的部署,但这样没法精细地根据应用的访存特性来选择具有符合应用所需的硬件资源的NUMA节点。优选的,本发明中,NUMA节点是指由多个本地的硬件资源构成的节点,其中,硬件资源包括CPU、内存、GPU、磁盘、FPGA、网络带宽资源或者其组合。尤其优选的本发明中,NUMA节点是指由多个本地的CPU资源、内存资源构成的节点,该NUMA节点进一步可以包括其他硬件资源,其中,其他硬件资源包括GPU、磁盘、FPGA、网络资源或者其组合。
根据本发明的一个实施例,所述步骤A2包括:根据访存特征声明确定应用所需的硬件资源声明与可用资源分布信息进行资源匹配的匹配粒度,其中,在应用为第一访存特征时用每个工作节点中单个NUMA节点的资源剩余量进行匹配,或者在应用为第二访存特征时用每个工作节点整体的资源剩余量进行匹配;按照确定的匹配粒度,根据所有工作节点的可用资源分布信息选择符合应用所需的硬件资源声明的工作节点作为候选工作节点;按照预定的评分规则对所有的候选工作节点进行评分,根据评分确定资源调度策略,该资源调度策略指示应用所需的资源由相应的工作节点提供。该实施例的技术方案至少能够实现以下有益技术效果:本发明确定的资源调度策略是与应用的访存特征声明相适配的资源调度策略,合理地考虑了应用的访存特征,可以提高容器云平台的资源利用率和/或容器的工作效率。
根据本发明的一个实施例,对于匹配粒度,比如:假设有两种类别的访存特征,在应用的访存特征声明中的值为0时,将应用所需的硬件资源声明与每个工作节点中单个NUMA节点的资源剩余量进行匹配;在应用的访存特征声明中的值为1时,将应用所需的硬件资源声明与每个工作节点整体的资源剩余量进行匹配。与工作节点中单个NUMA节点的资源剩余量进行匹配可以设置为只要匹配到工作节点中存在一个NUMA节点的资源剩余量满足应用所需的硬件资源声明则将其作为候选工作节点。又比如,假设有三种类别的访存特征,可用两个比特来记录访存特征声明,在应用的访存特征声明中的值为01时,将应用所需的硬件资源声明与每个工作节点中单个NUMA节点的资源剩余量进行匹配;在应用的访存特征声明中的值为10或者00时,将应用所需的硬件资源声明与每个工作节点整体的资源剩余量进行匹配。
根据本发明的一个实施例,对于预定的评分规则,可按Kubernetes平台原有的打分规则进行设置。又或者,加入一项评分的选项,对工作节点整体的资源剩余量或者单个NUMA节点的资源剩余量与应用所需的硬件资源的匹配度。
步骤A3:根据资源调度策略将应用的访存特征声明以及所需的硬件资源声明发送给相应的工作节点,以调度应用所需的硬件资源。
根据本发明的一个实施例,例如,假设有10个工作节点,主节点通过步骤A1和A2后将应用调度到第5个工作节点,比如生成一个调度任务,将调度任务发送给第5个工作节点,调度任务中包括应用的访存特征声明以及所需的硬件资源声明。第5个工作节点监听到主节点的调度任务后则会为应用分配相应的硬件资源。
根据本发明的一个实施例,主节点会不断地收集各个工作节点的可用资源分布信息,以作为后续资源分配的参考。优选的,所述方法还包括:从工作节点的注解(即:Annotation,也称标注)中获取工作节点当前的可用资源分布信息,用于更新主节点上记录的该工作节点对应的可用资源分布信息。
(二)工作节点的改进
根据本发明的一个实施例,本发明提供一种资源分配方法,应用于Kubernetes平台中的工作节点,包括步骤B1、B2、B3。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
步骤B1:获取主节点按照前述实施例的方法确定资源调度策略后发送的应用的访存特征声明以及所需的硬件资源声明。
根据本发明的一个实施例,例如,工作节点获取调度任务,从调度任务解析出应用的访存特征声明以及所需的硬件资源声明,进行后续步骤。对应用的访存特征声明以及所需的硬件资源声明的实施方式可以参照前述实施例的叙述,此处不再赘述。
步骤B2:根据应用的访存特征声明以及所需的硬件资源声明从当前工作节点为应用分配与其访存特征声明相匹配的硬件资源。
根据本发明的一个实施例,工作节点包括Kubelet模块,Kubelet模块包括拓扑管理器。在工作节点上的组件(例如:Kubelet模块)监听到控制平面把某个容器化的任务(即调度任务,部署容器组POD)调度到本工作节点,在工作节点上通过拓扑管理器根据工作节点目前的资源拓扑状态(即:可用资源分布信息)以及容器化应用的访存特征声明以及所需的硬件资源声明来按照相应分配策略分配NUMA相关的硬件资源,分配硬件资源时使用Linux Cgroup机制对应用分配到的硬件资源进行限制。即:使用Linux Cgroup机制在创建容器组的过程中对容器化应用分配到的硬件资源进行限制,经过文件监听节点上当前容器化应用(即容器组)对硬件资源的使用计算得出工作节点上可用硬件资源的拓扑结构信息(即:工作节点的可用资源分布信息),通过工作节点“注解“(annotation)字段把工作节点的可用资源分布信息透传到控制平面,用于调度。
根据本发明的一个实施例,一种资源分配方法还包括:在工作节点收到多个应用对应的访存特征声明以及所需的硬件资源声明时,在符合其访存特征声明相匹配的硬件资源中,按照随机分配、顺序分配、分配到剩余资源最多的NUMA节点或者负载均衡分配的分配策略进行分配。作为示例,图4、图5、图6、图7均以CPU资源的分配为例(应当理解,其中的资源实际可以为需要分配的任意资源类型)来简要说明各种分配规则,假设有两个NUMA节点,分别为NUMA节点0和1,NUMA节点0上有CPU0、1、4、5、8、9、12、13,NUMA节点1上有CPU2、3、6、7、10、11、14、15。其中,随机分配的示意参见图4,假设应用1和应用2都是属于具有第二访存特征或者第三访存特征的应用,按照随机分配的方式,先为容器化应用1随机分配CPU0、1、2,然后为容器化应用2分配CPU9、10、13、14(应当理解,不一定是分配整个CPU资源,实际情况下,可以是更细粒度的分配,比如,CPU0的15%资源等)。顺序分配是在匹配应用所需的硬件资源和访存特征声明的情况下,按照NUMA节点的编号顺序依次分配。顺序分配的示意参见附图5,假设应用1和应用2都是属于具有第一访存特征的应用,先在NUMA节点0为应用分配CPU0、1、4、5后,应用2也需要4个CPU,NUMA节点0的剩余资源满足应用2的需求,则为应用2分配CPU8、9、12、13。分配到剩余资源最多的NUMA节点是在匹配应用所需的硬件资源和访存特征声明的情况下,从剩余资源最多的NUMA节点为应用分配其所需资源。分配到剩余资源最多的NUMA节点的示意参见附图6,假设应用1和应用2都是属于具有第一访存特征的应用,先在NUMA节点0为应用分配CPU0、1、4、5后,应用2也需要4个CPU,但此时NUMA节点1剩余的资源最多,则在NUMA节点1上为应用2分配CPU2、3、6、7。负载均衡分配是在匹配应用所需的硬件资源和访存特征声明的情况下,在不同的NUMA节点间均衡地分配资源。由此,以避免某个或者某些NUMA节点的资源被完全占用而其他NUMA节点却闲置的情况。负载均衡分配的示意参见附图7,假设应用1和应用2都是属于具有第二访存特征的应用,先为应用1分配CPU0、1、2、3,然后为应用2分配CPU4、5、6、7,以实现负载均衡分配。该实施例的技术方案至少能够实现以下有益技术效果:提供多种分配方式,以满足不同的需求。
根据本发明的一个实施例,在访存特征声明指示应用的访存特征为第一访存特征时,从工作节点上的单个NUMA节点为应用分配其所需的硬件资源;或者,在访存特征声明指示应用的访存特征为第二访存特征时,从工作节点上的多个NUMA节点为应用分配其所需的硬件资源。又或者,在访存特征声明指示应用的访存特征为第三访存特征时,按照Kubernetes平台中默认的分配方式为应用从单个NUMA节点或者多个NUMA节点分配硬件资源。根据本发明的一个实施例,比如:假设有两种类别的访存特征,在应用的访存特征声明中的值为0时,从工作节点上的单个NUMA节点为应用分配其所需的硬件资源;在应用的访存特征声明中的值为1时,从工作节点上的多个NUMA节点为应用分配其所需的硬件资源。又比如:假设有三种类别的访存特征,在应用的访存特征声明中的值为01时,从工作节点上的单个NUMA节点为应用分配其所需的硬件资源;在应用的访存特征声明中的值为10时,从工作节点上的多个NUMA节点为应用分配其所需的硬件资源;在应用的访存特征声明中的值为00时,按照Kubernetes平台中默认的分配方式为应用分配硬件资源,比如随机分配、均衡分配等。该实施例的技术方案至少能够实现以下有益技术效果:本发明对于第一访存特征(访存密集型)的容器化应用,针对其需要大量访问内存的特点,其容器组所需的CPU以及其他硬件资源应该分配在一个NUMA节点内,而不应该跨不同的NUMA节点来分配的访存特性,为其在单个NUMA节点上分配资源;而具有第二访存特征(非访存密集型或者应用需要NUMA架构特性,比如:提供给用户使用的NUMA架构的虚拟机应用)的应用,从多个NUMA节点上为其分配资源,可以均衡负载;且对于提供给用户使用的NUMA架构的虚拟机应用,对其容器组使用的硬件资源在多个NUMA节点上分配,这样能使容器中虚拟机的底层硬件信息更真实;本发明细化了容器云平台对工作节点资源的使用,提升了容器云平台的节点资源利用率,减少了容器云平台的应用间的相互影响,提升了应用的访存能力,使得资源的分配与应用的特征更加匹配。
对于多个访存密集型的容器化应用,由于每个应用访存都会占用内存访问的带宽,为了避免多个应用之间互相抢占对方的访存带宽,多个容器化应用持有的NUMA相关的硬件资源应该在多个NUMA节点间均衡,以提高整体的工作效率。根据本发明的一个实施例,一种资源分配方法还包括:在收到具有第一访存特征的多个应用对应的访存特征声明以及所需的硬件资源声明时,优先以负载均衡的方式将多个应用分别部署在不同的NUMA节点上。例如:在先后或者同时收到具有第一访存特征的多个应用对应的访存特征声明以及所需的硬件资源声明时,优先将多个应用分别部署在不同的NUMA节点上;这时,还应考虑不同NUMA节点的负载是否均衡,以负载均衡的方式进行分配,以提高整体的资源利用效率和容器的工作效率。
步骤B3:在工作节点为应用分配所需的硬件资源和/或在资源释放后,更新工作节点当前的可用资源分布信息。
根据本发明的一个实施例,工作节点当前的可用资源分布信息是由工作节点上的守护程序监听并标注在对工作节点的注解(即:Annotation,在Kubernetes平台中用于注释对工作节点的描述信息)中,以由主节点从注解中读取。工作节点上与NUMA架构中相关NUMA节点的硬件资源的可用情况(即:可用资源分布信息,其中记载各NUMA节点的拓扑结构以及该拓扑结构中各NUMA节点的资源剩余量),通过容器云平台的工作节点的注解传递到容器云平台的控制平面,这些可硬件资源的可用情况将会成为控制平面(即:主节点)中调度器工作的重要且必要的参考信息。工作节点的注解是容器云平台中对工作节点的一种补充描述,其可以体现出工作节点的更多信息,此处在工作节点的注解中添加节点的各个NUMA节点间的可用资源的信息(即:可用资源分布信息,或者称可用资源拓扑信息、),此信息可被控制平面读取到。在注解中添加对相关NUMA节点的硬件资源的可用情况以及更新注解中相关NUMA节点的硬件资源的可用情况的过程是随着硬件资源的分配、释放而由工作节点上的守护程序自动实现的,具体的,所有的硬件资源在操作系统(即:Kubernetes平台)中均是以文件接口的方法提供的,通过对特定的文件进行监控,就可以得到硬件资源释放以及占用的信号,从而完成相关NUMA节点的硬件资源的可用情况的收集以及添加对工作节点的可用资源分布信息的注解的工作,进而透传工作节点的可用资源分布信息到主节点(其包括:控制平面与调度器)。该实施例的技术方案至少能够实现以下有益技术效果:本发明通过在工作节点的注解上标注带有工作节点上各个NUMA节点自身的资源剩余量的指示的可用资源分布信息,可以让控制平面感知工作节点的可用资源分布信息,以使控制平面能据此更细粒度地调度资源,且不用对原有的资源剩余量交互规则进行改变,实现简单高效。
(三)整体架构
根据本发明的一个实施例,本发明提供一种基于Kubernetes平台的数据中心服务器,包括:主节点,被配置为按照(一)主节点的改进中对应实施例所述的方法为需要容器化的应用调度资源;多个工作节点,每个工作节点被配置为根据(二)工作节点的改进中对应实施例所述的方法为调度到本工作节点上的应用分配其容器化所需的硬件资源。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (13)

1.一种资源分配方法,应用于Kubernetes平台中的主节点,其特征在于,包括:
获取应用需要容器化的请求,所述请求至少包括应用的访存特征声明以及所需的硬件资源声明;
响应于所述请求,根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略,其中,访存特征声明至少用于指示应用所需的硬件资源由工作节点中的单个NUMA节点还是多个NUMA节点提供,可用资源分布信息包括工作节点上各个NUMA节点自身的资源剩余量的指示;
根据资源调度策略将应用的访存特征声明以及所需的硬件资源声明发送给相应的工作节点,以调度应用所需的硬件资源。
2.根据权利要求1所述的方法,其特征在于,访存特征声明指示应用的访存特征至少为第一访存特征和第二访存特征中的一个,其中,
第一访存特征表示应用是访存密集型的容器化应用,需要由工作节点中的单个NUMA节点提供其所需的硬件资源;
第二访存特征表示应用是需要NUMA架构特性的容器化应用,需要由工作节点中的多个NUMA节点提供其所需的硬件资源。
3.根据权利要求2所述的方法,其特征在于,所述根据应用所需的硬件资源声明、访存特征声明以及所有工作节点的可用资源分布信息,确定资源调度策略的步骤包括:
根据访存特征声明确定应用所需的硬件资源声明与可用资源分布信息进行资源匹配的匹配粒度,其中,在应用为第一访存特征时用每个工作节点中单个NUMA节点的资源剩余量进行匹配,或者在应用为第二访存特征时用每个工作节点整体的资源剩余量进行匹配;
按照确定的匹配粒度,根据所有工作节点的可用资源分布信息选择符合应用所需的硬件资源声明的工作节点作为候选工作节点;
按照预定的评分规则对所有的候选工作节点进行评分,根据评分确定资源调度策略,该资源调度策略指示应用所需的资源由相应的工作节点提供。
4.根据权利要求1-3之一所述的方法,其特征在于,所述方法还包括:
从工作节点的注解中获取工作节点当前的可用资源分布信息,用于更新主节点上记录的该工作节点对应的可用资源分布信息。
5.根据权利要求1-3之一所述的方法,其特征在于,所述方法还包括:在没有解析到应用的访存特征声明时,按照默认的资源分配方式得到资源调度策略。
6.一种资源分配方法,应用于Kubernetes平台中的工作节点,其特征在于,包括:
获取主节点按照权利要求1-5之一的方法确定资源调度策略后发送的应用的访存特征声明以及所需的硬件资源声明;
根据应用的访存特征声明以及所需的硬件资源声明从当前工作节点为应用分配与其访存特征声明相匹配的硬件资源。
7.根据权利要求6所述的方法,其特征在于,所述根据应用的访存特征声明以及所需的硬件资源声明从当前工作节点为应用分配与其访存特征声明相匹配的硬件资源的步骤包括:
在访存特征声明指示应用的访存特征为第一访存特征时,从工作节点上的单个NUMA节点为应用分配其所需的硬件资源;或者,
在访存特征声明指示应用的访存特征为第二访存特征时,从工作节点上的多个NUMA节点为应用分配其所需的硬件资源。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:在工作节点为应用分配所需的硬件资源和/或在资源释放后,更新工作节点当前的可用资源分布信息。
9.根据权利要求7所述的方法,其特征在于,工作节点当前的可用资源分布信息是由工作节点上的守护程序监听并标注在对工作节点的注解中,以由主节点从注解中读取。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在收到具有第一访存特征的多个应用对应的容器化应用的请求时,优先以负载均衡的方式将多个应用分别部署在不同的NUMA节点上。
11.一种基于Kubernetes平台的数据中心服务器,其特征在于,包括:
主节点,被配置为按照权利要求1-5之一所述的方法为需要容器化的应用调度资源;
多个工作节点,每个工作节点被配置为根据权利要求6-10之一所述的方法为调度到本工作节点上的应用分配其容器化所需的硬件资源。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至10中任一项所述方法的步骤。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储可执行指令;
所述一个或多个处理器被配置为经由执行所述可执行指令以实现权利要求1至10中任一项所述方法的步骤。
CN202210358585.9A 2022-04-06 2022-04-06 一种资源分配方法、介质以及电子设备 Pending CN114721824A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210358585.9A CN114721824A (zh) 2022-04-06 2022-04-06 一种资源分配方法、介质以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210358585.9A CN114721824A (zh) 2022-04-06 2022-04-06 一种资源分配方法、介质以及电子设备

Publications (1)

Publication Number Publication Date
CN114721824A true CN114721824A (zh) 2022-07-08

Family

ID=82241059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210358585.9A Pending CN114721824A (zh) 2022-04-06 2022-04-06 一种资源分配方法、介质以及电子设备

Country Status (1)

Country Link
CN (1) CN114721824A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820687A (zh) * 2023-08-29 2023-09-29 银河麒麟软件(长沙)有限公司 基于kubelet的NUMA架构资源分配方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820687A (zh) * 2023-08-29 2023-09-29 银河麒麟软件(长沙)有限公司 基于kubelet的NUMA架构资源分配方法及系统
CN116820687B (zh) * 2023-08-29 2023-12-05 银河麒麟软件(长沙)有限公司 基于kubelet的NUMA架构资源分配方法及系统

Similar Documents

Publication Publication Date Title
CN106919445B (zh) 一种在集群中并行调度容器的方法和装置
US8631410B2 (en) Scheduling jobs in a cluster having multiple computing nodes by constructing multiple sub-cluster based on entry and exit rules
US9319281B2 (en) Resource management method, resource management device, and program product
US20070169167A1 (en) Control device and control method information system
US20050132379A1 (en) Method, system and software for allocating information handling system resources in response to high availability cluster fail-over events
US11467874B2 (en) System and method for resource management
CN112114950A (zh) 任务调度方法和装置、以及集群管理系统
CN109726008B (zh) 资源分配方法及设备
CN110389903B (zh) 测试环境部署方法和装置、电子设备和可读存储介质
CN107430526B (zh) 用于调度数据处理的方法和节点
CN112463375A (zh) 一种数据处理的方法和装置
CN115292014A (zh) 图像渲染方法、装置和服务器
US11269691B2 (en) Load distribution for integration scenarios
CN115543615A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN112862098A (zh) 一种集群训练任务处理的方法及系统
CN111078516A (zh) 分布式性能测试方法、装置、电子设备
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
US7395403B2 (en) Simulating partition resource allocation
CN114721824A (zh) 一种资源分配方法、介质以及电子设备
CN113626173B (zh) 调度方法、装置及存储介质
US7657590B2 (en) Load balancing system and method
CN115964176B (zh) 云计算集群调度方法、电子设备和存储介质
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
US20230155958A1 (en) Method for optimal resource selection based on available gpu resource analysis in large-scale container platform
CN112000657A (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