CN108279979B - 一种为应用程序容器绑定cpu的方法及装置 - Google Patents

一种为应用程序容器绑定cpu的方法及装置 Download PDF

Info

Publication number
CN108279979B
CN108279979B CN201810054289.3A CN201810054289A CN108279979B CN 108279979 B CN108279979 B CN 108279979B CN 201810054289 A CN201810054289 A CN 201810054289A CN 108279979 B CN108279979 B CN 108279979B
Authority
CN
China
Prior art keywords
cpu
virtual core
physical
resource pool
shared resource
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
CN201810054289.3A
Other languages
English (en)
Other versions
CN108279979A (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.)
Qingdao Hisense Media Network Technology Co Ltd
Original Assignee
Qingdao Hisense Media Network Technology 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 Qingdao Hisense Media Network Technology Co Ltd filed Critical Qingdao Hisense Media Network Technology Co Ltd
Priority to CN201810054289.3A priority Critical patent/CN108279979B/zh
Publication of CN108279979A publication Critical patent/CN108279979A/zh
Application granted granted Critical
Publication of CN108279979B publication Critical patent/CN108279979B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种为应用程序容器绑定CPU的方法及装置,其中所述方法包括:当应用程序容器运行时,至少以其CPU配额生成调度指令;当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;将所述虚拟核心与所述应用程序容器绑定。本发明实施例利用物理CPU虚拟化技术虚拟得到虚拟核心,并存储在共享资源池,不同应用程序容器均从共享资源池中调度虚拟核心,并且该虚拟核心与CPU配额为非整数值的应用程序容器绑定,可以提升该应用程序容器绑定的灵活性,以提升物理CPU的利用率。

Description

一种为应用程序容器绑定CPU的方法及装置
技术领域
本发明涉及资源调度技术领域,特别是涉及一种为应用程序容器绑定CPU的方法和装置。
背景技术
虚拟化技术已经成为一种被广泛认可的容器技术服务器资源共享方式,容器技术可以在按需构建容器技术操作***实例的过程当中为***管理员提供极大的灵活性。
容器云平台就是以容器为底层资源粒度做集群管理、调度隔离的PAAS(Platformas a Service,平台即服务)平台,在该平台下面临着大量应用程序容器(为了便于描述,下称容器)的集群化管理,例如:容器的弹性伸缩、资源监控与调度等。
在容器云平台下,各个容器创建时会配置CPU配额,该配额为整数或非整数(根据容器实际CPU损耗情况,将CPU配额设置非整数,属于比较普遍的情况)。在容器运行时,需要将与CPU配额匹配的物理CPU与应用程序容器绑定,否则控制容器的进程会在不同物理CPU之间随机切换,损耗宿主机性能(据实测,性能损耗能够达到15%)。对于整数的CPU配额,通过cgroup技术直接绑定到核心数与整数相等的物理CPU上,可以避免在不同物理CPU上随机切换。但是,当CPU配额为非整数值时,也直接绑定到物理CPU上,缺乏绑定灵活性,容易导致该物理CPU在容器运行时未满核使用而有损于物理CPU的利用率。
发明内容
本发明提供一种为应用程序容器绑定CPU的方法以及一种为应用程序容器绑定CPU的装置,以解决现有的当CPU配额为非整数值时直接绑定到物理CPU上,缺乏绑定灵活性,容易导致该物理CPU在容器运行时未满核使用而有损于物理CPU的利用率的问题。
为了解决上述问题,本发明公开了一种为应用程序容器绑定CPU的方法,所述方法包括:
当应用程序容器运行时,至少以其CPU配额生成调度指令;
当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;
将所述虚拟核心与所述应用程序容器绑定。
优选地,所述共享资源池中存储信息描述表,所述信息描述表中至少存储所述物理CPU的物理编号、用于表征物理CPU虚拟得到的虚拟核心组在所述共享资源池中完整性的完整性标识,以及,用于唯一识别所述虚拟核心组中的虚拟核心的逻辑编号之间的映射关系。
优选地,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中不完整的第一标识;
所述当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心的步骤包括:
针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
优选地,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中完整的第二标识;
所述方法还包括:
当所述CPU配额大于1时,从与所述第二标识映射的所述物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;
识别所述目标物理编号对应的物理CPU
优选地,所述当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心的步骤,还包括:
若所述第一标识映射的逻辑编号组中的逻辑编号的数量小于所述小数值,则从所述信息描述表中确定与所述第二标识映射的逻辑编号组;
从与所述第二标识映射的逻辑编号组中,选取目标逻辑编号。
优选地,在所述将对物理CPU虚拟得到的所述虚拟核心与所述应用程序容器绑定的步骤之后,还包括:
当所述虚拟核心与所述应用程序容器绑定成功时,从信息描述表中剔除所述虚拟核心及其对应的映射关系。
本发明还公开了一种为应用程序容器绑定CPU的装置,所述装置包括:
调度指令生成模块,用于当应用程序容器运行时,至少以其CPU配额生成调度指令;
虚拟核心调度模块,用于当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;
绑定模块,用于将所述虚拟核心与所述应用程序容器绑定。
优选地,所述共享资源池中存储信息描述表,所述信息描述表中至少存储所述物理CPU的物理编号、用于表征物理CPU虚拟得到的虚拟核心组在所述共享资源池中完整性的完整性标识,以及,用于唯一识别所述虚拟核心组中的虚拟核心的逻辑编号之间的映射关系。
优选地,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中不完整的第一标识;
所述虚拟核心调度模块包括:
第一逻辑编号组确定子模块,用于针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
第一目标逻辑编号选取子模块,用于从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
逻辑编号识别子模块,用于从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
优选地,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中完整的第二标识;
所述装置还包括:
目标物理编号选取模块,用于当所述CPU配额大于1时,从与所述第二标识映射的所述物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;
目标物理编号识别模块,用于识别所述目标物理编号对应的物理CPU
优选地,所述虚拟核心调度模块还包括:
第二逻辑编号组确定子模块,用于若所述第一标识映射的逻辑编号组中的逻辑编号的数量小于所述小数值,则从所述信息描述表中确定与所述第二标识映射的逻辑编号组;
第二目标逻辑编号选取子模块,用于从与所述第二标识映射的逻辑编号组中,选取目标逻辑编号。
优选地,所述装置还包括:
剔除模块,用于当所述虚拟核心与所述应用程序容器绑定成功时,从信息描述表中剔除所述虚拟核心及其对应的映射关系。
与现有技术相比,本发明包括以下优点:
在本发明中,对物理CPU虚拟实现其虚拟分割,以此得到在共享资源池中维护虚拟核心,并且不同应用程序容器均可从共享资源池中调度虚拟核心,当应用程序容器运行时,至少以其CPU配额生成调度指令,根据调度指令对与CPU配额中小数值对应的虚拟核心进行绑定,可以在CPU配额为非整数值时,以此提升为应用程序容器绑定物理CPU的灵活性,进而提高物理CPU的利用率。
附图说明
图1是本发明实施例的共享资源池建立方法的步骤流程图;
图2是本发明实施例的一种为应用程序容器绑定CPU的方法实施例的步骤流程图;
图3是本发明实施例的一种为应用程序容器绑定CPU的装置的结构框图;
图4是本发明实施例的一种服务节点的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例可以应用于容器云平台中,容器云平台就是以容器为底层资源粒度做集群管理、调度隔离的PAAS平台,其中,该集群可以为服务集群,该服务集群可以包括多个服务节点。作为一种示例,该服务节点可以包括客户端节点和/或服务器节点,本发明实施例对此不作限定。
以下以服务节点为服务器节点为例进行说明:
在本发明实施例中,各个服务器节点上可以部署一个代理服务(nodeagent),在实际中,该代理服务可以类似于kubernetes(kubernetes是Google开源的容器集群管理***,其提供应用部署、维护、扩展机制等功能,利用kubernetes能方便地管理跨机器运行容器化的应用)框架中的kubelet服务。
本发明实施例可以通过代理服务建立各个服务器节点对应的共享资源池(freecpupool),其中,该共享资源池可以包括可供调度的虚拟核心(即vcpucore,下简称虚拟核心),进一步的,该vcpucore由服务器节点下的物理CPU(cpucore)虚拟得到。
在本发明实施例的一种优选实施例中,参考图1,示出了本发明实施例的共享资源池建立方法的步骤流程图,根据图1,该共享资源池可以采用如下步骤生成:
步骤101,分别将本地的各个物理CPU虚拟成虚拟核心组,并分别为所述虚拟核心组中的各个虚拟核心设置用于唯一识别所述虚拟核心的逻辑编号;
在具体实现中,代理服务在启动以后,可以通过***命令获取本服务器节点上的所有物理CPU(cpucore)的信息。
在一种实施方式中,该***命令可以包括lscpu命令。
作为本发明实施例的一种优选示例,物理CPU的信息可以包括但不限于用于唯一识别所述物理CPU的物理编号。
在实现时,物理CPU的物理编号可以采用cpucore编号表示,在实现时,该cpucore编号可以表示为c-N,其中,N为cpucore的序号,其取值为大于等于数值0小于cpucore个数的整数。
在本发明实施例中,代理服务可以按照实际需要将服务器节点中的各个cpucore虚拟成虚拟核心组,各个虚拟核心组可以包括多个虚拟核心,即vcpucore,随后,分别为各个vcpucore设置用于唯一识别该虚拟核心的逻辑编号。
在实现时,虚拟核心的逻辑编号可以采用vcpucore编号表示,例如,该vcpucore编号可以表示为c-N-vM,其中,M为vcpucore在本cpucore中的序号。例如,若将cpucore分为10个vcpucore,则M取值为0-9的整数)。
需要说明的是,本发明实施例可以根据实际需求确定各个虚拟核心组中的vcpucore的个数,上例中将其确定为10个,是考虑到小数部分的数字均为小于1的数值,但本发明实施例并不限于此。
在本发明实施例中,可以为各个虚拟核心组设置用于表征该虚拟核心组在共享资源池中完整性的完整性标识。作为一种示例,该完整性标识可以包括用于表征虚拟核心组在共享资源池中不完整的第一标识,以及,用于表征所述虚拟核心组在共享资源池中完整的第二标识。
具体的,第一标识可以用假值表示,第二标识可以用真值表示,其中,真值用于表示本虚拟核心组全部可用,假值用于表示本虚拟核心组只有部分可用。
作为一种示例,真值可以表示为True或者数值1,假值可以表示为False或者数值0。
步骤102,根据用于唯一识别所述物理CPU的物理编号,生成所述物理编号与所述逻辑编号之间的映射关系;
步骤103,将所述映射关系存储在信息描述表中。
其中,信息描述表存储在共享资源池中,共享资源池还包括对采用虚拟化技术对物理CPU虚拟得到的虚拟核心,任一虚拟核心可供不同应用程序容器共同从共享资源池中调度,以与应用程序容器绑定。
服务代理获取本服务器节点中所有的cpucore以及对应的vcpucore以后,可以生成所有cpucore的物理编号以及对应的vcpucore的逻辑编号的映射关系,并将该映射关系存储在一个可供调度的共享资源池freecpupool的信息描述表中。
在具体实现中,在映射关系中除了可以包含cpucore的物理编号以及对应的vcpucore的逻辑编号以外,还可以保存用于表征物理CPU虚拟得到的虚拟核心组在共享资源池中完整性的完整性标识。即,信息描述表中至少存储前述物理编号、完整性标识和逻辑编号之间的映射关系。
作为一种示例,freecpupool的信息描述表可以表示如表1所示,但应当理解的是,本发明实施例中的freecpupool的信息并不限于此:
Figure GDA0002690633030000071
Figure GDA0002690633030000081
表1
基于上述的共享资源池,参照图2,示出了本发明实施例的一种为应用程序容器绑定CPU的方法实施例的步骤流程图,本发明实施例可以包括如下步骤:
步骤201,当应用程序容器运行时,至少以其CPU配额生成调度指令;
在具体实现中,当应用程序容器运行时,至少可以以其CPU配额生成调度指令,并将该调度指令发送至代理服务nodeagent,其中,该应用程序容器对应一个包含运行时环境的应用实例。
作为一种示例,该运行指令可以包括应用程序容器运行时所需的CPU配额。
步骤202,当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心;
步骤203,将所述虚拟核心与所述应用程序容器绑定。
在实际中,根据应用程序的实际CPU损耗情况,该CPU配额可以配置为整数值或非整数值,并且,该非整数值可以为大于数值1的非整数值或者小于数值1的非整数值。
在本发明实施例的一种优选实施例中,针对CPU配额为整数值的情况,或者,针对CPU配额为大于数值1的非整数中的整数值,以下对上述两种情况统称为整数值,本发明实施例可以包括如下步骤:
从与所述第二标识映射的物理CPU的物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;识别所述目标物理编号对应的物理CPU。
在具体实现中,针对CPU配额为整数值或者非整数中的整数值,Nodeagent可以通过操作***的CGroup功能(CGroup是将任意进程进行分组化管理的Linux内核功能。CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的),从共享资源池的信息描述表确定该整数值对应的物理CPU。
具体的,可以首先从信息描述表中确定完整性标识为第二标识对应的映射关系,然后从该对应的映射关系中,获取映射的物理CPU的物理编号,并从中选取个数与整数值对应的目标物理编号,对该目标物理编号进行识别,可以确定对应的物理CPU,将该对应的CPU核心与应用程序容器绑定,以完成对整数值的CPU配合的分配。
例如,假设当前应用程序容器的CPU配额为3。Nodeagent从上述表1的freecpupool中首先查找3个第二标识(True标识)的cpucore编号,作为目标cpucore编号,假定目标cpucore编号为c-0、c-1、c-2,Nodeagent通过操作***的CGroup功能给此容器绑定上述取到的3个目标cpucore编号对应的物理CPU。
在实现上述绑定时,以Linux***为例,通过CGroup功能在操作***上执行命令如下:
echo 0-2>/sys/fs/cgroup/cpuset/cpuset.cpus。
在本发明实施例中,若CPU配额为非整数值,针对该非整数值的CPU配额的小数值,代理服务可以从共享资源池中选取小数值对应数量的虚拟核心,将该应用程序容器与该小数值对应数量的vcpucore绑定。
在本发明实施例的一种优选实施例中,步骤202进一步可以包括如下子步骤:
子步骤S11,针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
子步骤S12,从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
子步骤S13,从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
在本发明实施例中,为了充分的利用所有的cpucore,本发明实施例可以优先从不完整的cpucore上选取vcpucore分配给小数值对应的配额。具体的,可以首先从信息描述表中确定与完整性标识为第一标识对应的映射关系,然后从该对应的映射关系中,获取映射的逻辑编号组,并从该映射的逻辑编号组中选取个数与小数值对应的目标逻辑编号,在虚拟核心组中对该目标逻辑编号进行识别,可以确定对应的虚拟核心,将该对应的虚拟核心与应用程序容器绑定,以完成对小数值的CPU配额的分配。
例如,若当前应用程序容器的CPU配额为0.X,Nodeagent从freecpupool中查找完整性标识为第一标识的映射关系,假设某个查找得到的映射关系中包含的cpucore的物理编号为c-3,若c-3在freecpupool中的对应的虚拟核心组中可用的虚拟核心的的个数大于X,则可以从该可用的虚拟核心的逻辑编号中选取X个逻辑编号作为目标逻辑编号,并从虚拟核心组中识别该X个目标逻辑编号对应的虚拟核心。在具体实现中,在将虚拟核心与应用程序容器绑定时,同时可以将该虚拟核心对应的物理CPU与应用程序容器进行绑定,例如,在上例中,X个虚拟核心对应的物理CPU为c-3,则Nodeagent通过操作***的cgroup功能给应用程序容器绑定到c-3上,在实现时,以Linux***为例,在操作***上执行的绑定命令如下:
echo 3>/sys/fs/cgroup/cpuset/cpuset.cpus
在本发明实施例的一种优选实施例中,若第一标识映射的逻辑编号组中的逻辑编号的数量小于小数值,步骤202还可以包括如下子步骤:
子步骤S14,若所述第一标识映射的逻辑编号组中的逻辑编号的数量小于所述小数值,则从所述信息描述表中确定与所述第二标识映射的逻辑编号组;
子步骤S15,从与所述第二标识映射的逻辑编号组中,选取目标逻辑编号。
在具体实现中,上述若与第一标识映射的逻辑编号组中逻辑编号的数量小于小数值,可以包括如下两层意思:
一层是:如果信息描述表中存在多个第一标识,则分别针对各个第一标识对应的映射关系中,与第一标识映射逻辑编号组中逻辑编号的数量均小于小数值。
另一层是:如果信息描述表中存在多个第一标识,则确定所有第一标识对应的映射关系中,逻辑编号组中逻辑编号的数量总和小于小数值。
本领域技术人员采用上述两层意思的任一层均是可以的,本发明实施例对此不作限制。
如果第一标识映射的逻辑编号组中的逻辑编号的数量小于小数值,则可从信息描述表中确定一个与第二标识映射的逻辑编号组,从与该第二标识映射的逻辑编号组中,选取小数值对应的逻辑编号作为目标逻辑编号。
需要说明的是,当信息描述表中不存在第一标识时,也可以采用上述子步骤S14以及子步骤S15来实现。
在实际中,当第二标识对应的逻辑编号组中部分或者全部逻辑编号对应的vcpucore都被绑定至应用程序容器时,则可以将信息表述表中该第二标识更新为第一标识。在一种实施方式中,为了使得后续不会重复分配已与容器绑定的cpucore或者vcpucore,本发明实施例还可以包括如下步骤:
当所述虚拟核心与所述应用程序容器绑定成功时,从所述信息描述表中剔除所述虚拟核心及其对应的映射关系。
例如,针对整数值的CPU配额,假设整数值为3。Nodeagent从上述表1的freecpupool中选取cpucore编号为c-0、c-1、c-2与应用程序容器绑定,则可以从freecpupool中剔除c-0、c-1、c-2,得到更新的freecpupool信息描述表如表2所示:
Figure GDA0002690633030000111
表2
又如,针对小数值的CPU配额,假设当前容器的CPU配额为0.4。Nodeagent从上述表2的freecpupool中选取c-3-v0、c-3-v1、c-3-v2、c-3-v3这4个vcpucore编号与容器绑定,则可以从freecpupool中剔除c-3-v0、c-3-v1、c-3-v2、c-3-v3,并且,由于c-3的虚拟核心组不完整,则可以将c-3的完整性标识设置为假值,得到更新的freecpupool信息描述表如表3所示:
Figure GDA0002690633030000121
表3
又如,当有另外的CPU配额为0.3时,假设c-3对应的映射关系中剩余6个vcpucore逻辑编号,则可以再次从该映射关系中选取c-3-v4、c-3-v5、c-3-v6这3个vcpucore逻辑编号分配给当前容器,则可以从freecpupool中剔除c-3-v4、c-3-v5、c-3-v6,得到更新的freecpupool信息描述表如表4所示:
Figure GDA0002690633030000122
Figure GDA0002690633030000131
表4
需要说明的是,针对已经分配给容器的cpucore和/或vcpucore,除了上述从freecpupool中删除分配的cpucore和/或vcpucore的方式以外,本领域技术人员还可以采用其他方式标记该cpucore和/或vcpucore已经被使用,例如,在信息描述表中增加用于表征物理CPU或者虚拟核心已被绑定的标志位,其中,添加了标志位的物理CPU或者虚拟核心的使用状态为不可用,本发明实施例对此不作限制。在本发明实施例中,当获取针对应用程序容器的CPU配额的调度指令时,对于非整数值的CPU配额,可以根据该调度指令从共享资源池中调度与该CPU配额中小数值对应的虚拟核心,将该虚拟核心与应用程序容器绑定,其中,虚拟核心为对物理CPU虚拟得到,这样,对于小数值的CPU配额可以分配对应的虚拟核心,在满足对小数值的CPU配额的绑定的场景的同时,可以使得各个虚拟核心能够满核使用,提高了CPU核心的利用率。
例如,一个web服务器程序实际需要配额0.6CPU,如果不采用本发明实施例的方案,此容器被调度后运行在一个有32个CPU核心的服务器上,假设32个CPU核心的编号为0-31。此时,此容器在运行时按配额只能最大使用0.6个CPU核心,但使用的这0.6个CPU核心会随机的占用0-31个CPU核心的任意1个上,这样导致在32个CPU核心上随机调度和上下文切换,造成性能损耗,在32核服务器上部署运行时,性能在850QPS/s左右,如果采用本发明实施例的方案,则只需要为该容器分配6个虚拟核心,性能提升到1000QPS/s左右,性能提升约17%,如果通过把0.6CPU限制为1CPU来绑定处理,虽然可以得到同样的性能,但CPU资源浪费了60%以上。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参照图3,示出了本发明实施例的一种为应用程序容器绑定CPU的装置实施例的结构框图,所述装置包括如下模块:
调度指令生成模块301,用于当应用程序容器运行时,至少以其CPU配额生成调度指令;
虚拟核心调度模块302,用于当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;
绑定模块303,用于将所述虚拟核心与所述应用程序容器绑定。
在本发明实施例的一种优选实施例中,所述共享资源池中存储信息描述表,所述信息描述表中至少存储所述物理CPU的物理编号、用于表征物理CPU虚拟得到的虚拟核心组在所述共享资源池中完整性的完整性标识,以及,用于唯一识别所述虚拟核心组中的虚拟核心的逻辑编号之间的映射关系。
在本发明实施例的一种优选实施例中,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中不完整的第一标识;
所述虚拟核心调度模块302可以包括如下子模块:
第一逻辑编号组确定子模块,用于针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
第一目标逻辑编号选取子模块,用于从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
逻辑编号识别子模块,用于从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
在本发明实施例的一种优选实施例中,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中完整的第二标识;
所述装置还包括:
目标物理编号选取模块,用于当所述CPU配额大于1时,从与所述第二标识映射的所述物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;
目标物理编号识别模块,用于识别所述目标物理编号对应的物理CPU
在本发明实施例的一种优选实施例中,所述虚拟核心调度模块302还可以包括如下子模块:
第二逻辑编号组确定子模块,用于若所述第一标识映射的逻辑编号组中的逻辑编号的数量小于所述小数值,则从所述信息描述表中确定与所述第二标识映射的逻辑编号组;
第二目标逻辑编号选取子模块,用于从与所述第二标识映射的逻辑编号组中,选取目标逻辑编号。
在本发明实施例的一种优选实施例中,所述装置还可以包括如下模块:
剔除模块,用于当所述虚拟核心与所述应用程序容器绑定成功时,从信息描述表中剔除所述虚拟核心及其对应的映射关系;
或者,
标志位标识模块,用于在信息描述表中增加用于表征所述虚拟核心已被绑定的标志位。
参照图4,示出了本发明实施例的一种服务节点的结构示意图,所述服务节点40上部署一个代理服务401(nodeagent),代理服务401将服务节点40上的物理CPU402(即物理CPU核心)采用虚拟化技术虚拟得到由多个虚拟核心403组成的虚拟核心组。
该虚拟核心组可以存储在共享共享资源池404中,任一虚拟核心403可供不同应用程序容器共同从共享资源池404中调度,以与应用程序容器绑定。
在具体实现中,共享资源池404可以存储在存储器中,共享资源池404中还可以包括信息描述表405,该信息描述表405可以用于记录物理CPU402的物理编号、用于表征虚拟核心组在共享资源池404中完整性的完整性标识,以及,用于唯一识别虚拟核心组中的虚拟核心403的逻辑编号之间的映射关系。
尽管未示出,该服务节点还可以包括射频(Radio Frequency,RF)电路、输入单元、显示单元、传感器、音频电路、无线保真(wireless fidelity,WiFi)模块、电源等部件。在此不再赘述。
在本发明实施例中,当应用程序容器406运行时,至少以其CPU配额生成调度指令,根据调度指令对与CPU配额中小数值对应的虚拟核心403进行绑定,可以在CPU配额为非整数值时,以此提升为应用程序容器406绑定物理CPU的灵活性,进而提高物理CPU的利用率。
本说明书中的各个实施例均采用递进的方式描述,各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种为应用程序容器绑定CPU的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种为应用程序容器绑定CPU的方法,其特征在于,所述方法包括:
当应用程序容器运行时,至少以其CPU配额生成调度指令;
当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;
将所述虚拟核心与所述应用程序容器绑定;
其中,所述共享资源池中存储信息描述表,所述信息描述表中至少存储以下数据之间的映射关系:所述物理CPU的物理编号、用于表征物理CPU虚拟得到的虚拟核心组在所述共享资源池中完整性的完整性标识,以及,用于唯一识别所述虚拟核心组中的虚拟核心的逻辑编号。
2.根据权利要求1所述的方法,其特征在于,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中不完整的第一标识;
所述当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心的步骤包括:
针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
3.根据权利要求1或2所述的方法,其特征在于,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中完整的第二标识;
所述方法还包括:
当所述CPU配额大于1时,从与所述第二标识映射的所述物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;
识别所述目标物理编号对应的物理CPU。
4.根据权利要求3所述的方法,其特征在于,所述当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心的步骤,还包括:
若所述第一标识映射的逻辑编号组中的逻辑编号的数量小于所述小数值,则从所述信息描述表中确定与所述第二标识映射的逻辑编号组;
从与所述第二标识映射的逻辑编号组中,选取目标逻辑编号。
5.根据权利要求1或4所述的方法,其特征在于,在所述将对物理CPU虚拟得到的所述虚拟核心与所述应用程序容器绑定的步骤之后,还包括:
当所述虚拟核心与所述应用程序容器绑定成功时,从信息描述表中剔除所述虚拟核心及其对应的映射关系。
6.一种为应用程序容器绑定CPU的装置,其特征在于,所述装置包括:
调度指令生成模块,用于当应用程序容器运行时,至少以其CPU配额生成调度指令;
虚拟核心调度模块,用于当所述CPU配额为非整数值时,根据所述调度指令,从共享资源池中调度与所述CPU配额中小数值对应的虚拟核心,其中,所述虚拟核心为对物理CPU虚拟得到;
绑定模块,用于将所述虚拟核心与所述应用程序容器绑定;
其中,所述共享资源池中存储信息描述表,所述信息描述表中至少存储以下数据之间的映射关系:所述物理CPU的物理编号、用于表征物理CPU虚拟得到的虚拟核心组在所述共享资源池中完整性的完整性标识,以及,用于唯一识别所述虚拟核心组中的虚拟核心的逻辑编号。
7.根据权利要求6所述的装置,其特征在于,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中不完整的第一标识;
所述虚拟核心调度模块包括:
第一逻辑编号组确定子模块,用于针对所述小数值,从所述信息描述表中确定与所述第一标识映射的逻辑编号组;
第一目标逻辑编号选取子模块,用于从与所述第一标识映射的逻辑编号组中,选取个数与所述小数值对应的目标逻辑编号;
逻辑编号识别子模块,用于从所述虚拟核心组中识别所述目标逻辑编号对应的虚拟核心。
8.根据权利要求6或7所述的装置,其特征在于,所述完整性标识包括用于表征所述虚拟核心组在所述共享资源池中完整的第二标识;
所述装置还包括:
目标物理编号选取模块,用于当所述CPU配额大于1时,从与所述第二标识映射的所述物理编号中,选取个数与所述CPU配额中的整数值对应的目标物理编号;
目标物理编号识别模块,用于识别所述目标物理编号对应的物理CPU。
CN201810054289.3A 2018-01-19 2018-01-19 一种为应用程序容器绑定cpu的方法及装置 Active CN108279979B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810054289.3A CN108279979B (zh) 2018-01-19 2018-01-19 一种为应用程序容器绑定cpu的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810054289.3A CN108279979B (zh) 2018-01-19 2018-01-19 一种为应用程序容器绑定cpu的方法及装置

Publications (2)

Publication Number Publication Date
CN108279979A CN108279979A (zh) 2018-07-13
CN108279979B true CN108279979B (zh) 2021-02-19

Family

ID=62804106

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810054289.3A Active CN108279979B (zh) 2018-01-19 2018-01-19 一种为应用程序容器绑定cpu的方法及装置

Country Status (1)

Country Link
CN (1) CN108279979B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597639B (zh) * 2019-09-23 2021-07-30 腾讯科技(深圳)有限公司 Cpu分配控制方法、装置、服务器及存储介质
CN112748850B (zh) 2019-10-29 2024-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN111124687B (zh) * 2019-12-30 2022-04-22 浪潮电子信息产业股份有限公司 一种cpu资源预留方法、装置及其相关设备
CN111694658A (zh) * 2020-04-30 2020-09-22 北京城市网邻信息技术有限公司 Cpu资源分配方法、装置、电子设备和存储介质
CN112052068A (zh) * 2020-08-17 2020-12-08 烽火通信科技股份有限公司 一种Kubernetes容器平台CPU绑核的方法与装置
CN112039963B (zh) * 2020-08-21 2023-04-07 广州虎牙科技有限公司 一种处理器的绑定方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870314A (zh) * 2014-03-06 2014-06-18 中国科学院信息工程研究所 一种单节点同时运行不同类型虚拟机的方法及***
CN102158884B (zh) * 2010-02-11 2016-05-11 中兴通讯股份有限公司 一种进行物理资源块绑定配置的方法及***
CN105700961A (zh) * 2016-02-29 2016-06-22 华为技术有限公司 业务容器创建方法及装置
CN105893138A (zh) * 2014-12-19 2016-08-24 伊姆西公司 基于配额的资源管理方法和装置
CN105912403A (zh) * 2016-04-14 2016-08-31 青岛海信传媒网络技术有限公司 Docker容器的资源管理方法及装置
US9703589B2 (en) * 2013-08-26 2017-07-11 Vmware, Inc. Networking stack of virtualization software configured to support latency sensitive virtual machines

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102158884B (zh) * 2010-02-11 2016-05-11 中兴通讯股份有限公司 一种进行物理资源块绑定配置的方法及***
US9703589B2 (en) * 2013-08-26 2017-07-11 Vmware, Inc. Networking stack of virtualization software configured to support latency sensitive virtual machines
CN103870314A (zh) * 2014-03-06 2014-06-18 中国科学院信息工程研究所 一种单节点同时运行不同类型虚拟机的方法及***
CN105893138A (zh) * 2014-12-19 2016-08-24 伊姆西公司 基于配额的资源管理方法和装置
CN105700961A (zh) * 2016-02-29 2016-06-22 华为技术有限公司 业务容器创建方法及装置
CN105912403A (zh) * 2016-04-14 2016-08-31 青岛海信传媒网络技术有限公司 Docker容器的资源管理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于容器虚拟化技术研究;汪恺,等;;《计算机技术与发展》;20150831;第25卷(第8期);138-141 *
虚拟机处理器核数与物理cpu的关系;nmingwei,;《https://blog.csdn.net/nmingwei/article/details/45690871》;20150513;1 *

Also Published As

Publication number Publication date
CN108279979A (zh) 2018-07-13

Similar Documents

Publication Publication Date Title
CN108279979B (zh) 一种为应用程序容器绑定cpu的方法及装置
US10409628B2 (en) Managing virtual machine instances utilizing an offload device
US10701139B2 (en) Life cycle management method and apparatus
CN108293041B (zh) 分布式***、资源容器的分配方法、资源管理器及应用控制器
US10768972B2 (en) Managing virtual machine instances utilizing a virtual offload device
CN109684065B (zh) 一种资源调度方法、装置及***
US11392400B2 (en) Enhanced migration of clusters based on data accessibility
US9329889B2 (en) Rapid creation and reconfiguration of virtual machines on hosts
US10025615B2 (en) Dynamic guest virtual machine identifier allocation
US8484654B2 (en) Determining suitable network interface for partition deployment/re-deployment in a cloud environment
US9158567B2 (en) System and method for reconfigurable network services using modified network configuration with modified bandwith capacity in dynamic virtualization environments
CN109313564B (zh) 用于支持多个不同租户的高度可用虚拟桌面的服务器计算机管理***
US9003002B2 (en) Efficient port management for a distributed network address translation
KR102361929B1 (ko) 동적 호스트 디바이스 인스턴스 모델 재구성을 이용한 제공자 네트워크에서의 수용량 관리
CN110741352B (zh) 虚拟网络功能管理***和管理方法及计算机可读存储设备
WO2012039053A1 (ja) 計算機システムの運用管理方法、計算機システム及びプログラムを記憶する計算機読み取り可能な媒体
US11343141B2 (en) Methods and apparatus to migrate physical server hosts between virtual standard switches and virtual distributed switches in a network
US8352702B2 (en) Data processing system memory allocation
US9858096B2 (en) Communication device migration method of extension function and communication system
US11301299B2 (en) Data based scheduling for horizontally scalable clusters
US10496444B2 (en) Computer and control method for computer
CN108667750B (zh) 虚拟资源管理方法及装置
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US9923865B1 (en) Network address management
CN112948201B (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