CN100511151C - 多路多核服务器及其cpu的虚拟化处理方法 - Google Patents

多路多核服务器及其cpu的虚拟化处理方法 Download PDF

Info

Publication number
CN100511151C
CN100511151C CNB2007101990051A CN200710199005A CN100511151C CN 100511151 C CN100511151 C CN 100511151C CN B2007101990051 A CNB2007101990051 A CN B2007101990051A CN 200710199005 A CN200710199005 A CN 200710199005A CN 100511151 C CN100511151 C CN 100511151C
Authority
CN
China
Prior art keywords
cpu
virtual
nuclear
virtual machine
operation queue
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
CNB2007101990051A
Other languages
English (en)
Other versions
CN101169731A (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.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2007101990051A priority Critical patent/CN100511151C/zh
Publication of CN101169731A publication Critical patent/CN101169731A/zh
Application granted granted Critical
Publication of CN100511151C publication Critical patent/CN100511151C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种多路多核服务器的CPU虚拟化处理方法,包括:将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU调度至物理CPU的CPU核上执行。此外,本发明还公开了一种多路多核服务器。本发明公开的技术方案,能够实现多路多核服务器的虚拟化,并且该虚拟化技术协同虚拟化硬件、物理硬件和操作系统三者之间关系,实现了优化的性能和效率。

Description

多路多核服务器及其CPU的虚拟化处理方法
技术领域
本发明涉及计算机技术,尤其涉及一种多路多核服务器及其中央处理器(CPU)的虚拟化处理方法。
背景技术
多核处理器(多核CPU)系统也即单片多处理器(Chip MultiProcessor,CMP)系统,是指由单个芯片上的多个处理器核所构成的多处理器系统。CMP允许线程在多个处理器核上并行执行,从而利用线程级并行提高系统性能。多路多核服务器是指包括多个多核处理器芯片的计算机服务系统。
系统级虚拟化技术通常是在计算机硬件和操作系统之间增加虚拟机监控器(Virtual Machine Monitor,VMM),通过虚拟机监控器向上层操作系统提供下层硬件上的虚拟化,以解除二者间的直接依赖。随着x86体系结构处理器等通用处理器性能的提高,由于虚拟化技术可以有效降低成本、易管理、提高系统可用性、动态负载平衡、加强安全策略等特点,使得微处理器计算系统虚拟化技术成为目前的技术新动向。
传统的系统级虚拟化技术基于全虚拟化原理(full-virtualization),将传统的直接执行和快速的动态二进制翻译技术结合起来,即由虚拟机监控器向上层操作系统提供整个下层硬件上的虚拟化,采用二进制翻译技术,但由于虚拟机监控器模拟整个硬件环境,因此存在较大的系统开销,导致虚拟化实现效率低。
为此,提出一种基于半虚拟化原理(para-virtualization)的虚拟化技术,即部分虚拟化下层硬件环境,同时修改上层操作系统的部分功能,以实现多个虚拟机同时运行在宿主机上,该方法协同虚拟化硬件、物理硬件和操作系统三者之间关系,以实现优化的性能和效率,但该方案只针对单核处理器提出了解决方案,针对多路多核服务器尚没有具体解决方案。
发明内容
有鉴于此,本发明实施例中一方面提供一种多路多核服务器的CPU虚拟化处理方法,另一方面提供一种多路多核服务器,以便实现多路多核服务器的虚拟化。
本发明实施例提供的多路多核服务器的CPU虚拟化处理方法,包括:
将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型为并发型和/或吞吐型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;
根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中,在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
本发明实施例提供的多路多核服务器,包括:
多个物理CPU,每个物理CPU包括多个CPU核;
虚拟机监控器,用于将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型为并发型和/或吞吐型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中,在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
从上述方案可以看出,本发明实施例中通过将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域(即虚拟化硬件),然后根据虚拟机的类型,将虚拟机资源域中的虚拟CPU调度至物理CPU的CPU核上执行,从而实现多路多核服务器的虚拟化,该虚拟化技术协同虚拟化硬件、物理硬件和操作系统三者之间关系,实现了优化的性能和效率。
附图说明
图1为本发明实施例中多路多核服务器的CPU虚拟化处理方法的示例性流程图;
图2为本发明实施例中多路多核服务器的示例性结构图;
图3为图2所示多路多核服务器中虚拟机监控器的结构示意图。
具体实施方式
本发明实施例中,基于半虚拟化原理,提出多路多核服务器的CPU虚拟化处理方案,针对多核处理器的特点、以及处理器核数不断增长的趋势,结合服务器应用运行情况,通过将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU调度至物理CPU的CPU核上执行。为了识别每个CPU核,可对CPU核进行标识,根据所述标识为各CPU核调度虚拟CPU并执行。
下面结合实施例和附图,进一步详细说明。
图1为本发明实施例中多路多核服务器的CPU虚拟化处理方法的示例性流程图。如图1所示,该流程包括如下步骤:
步骤101,对各物理CPU的各CPU核进行标识。
通常情况下,操作系统将一个有n核的物理CPU看作对等的n个CPU,多个CPU动态地从系统的就绪进程队列中调度任务并加以执行,一个进程在不同的时期可以在不同的CPU上运行,中断请求动态地在多个CPU间进行分配,并由指派的CPU提供中断服务。
为了标识物理CPU的各个核,通常情况下,采用线性方式标识系统中的CPU核,例如,对于m个物理CPU,每个物理CPU包括n个CPU核的情况,用线性方式表示时,可对所有CPU核进行统一编号,得到线性编号:0,1,2,...,m×n-1。
本实施例中,针对多路多核的特性,以矩阵的方式标识系统中的多核CPU。例如,cpu(0,0)、cpu(0,1)、cpu(1,0)、cpu(1,1)即表示系统中有两个物理CPU,在每个物理CPU中分别有两个核。同样,对于m个物理CPU,每个物理CPU包括n个CPU核的情况,CPU核的编号可以为:(0,0),(0,1),...,(0,n-1),...,(m-1,0),...,(m-1,n-1)。以矩阵的方式标识系统中的多核CPU,可以有效反映CPU核间的关系。
在具体实现上,可设置长度为2N位的无符号整型数,用该整型数的高N位表示物理CPU编号,低N位表示物理CPU内的核编号。
此外,为了与现有技术兼容,可承继现有的虚拟机监控器采用的线性表示方法标识CPU核,例如CPU核的线性标识由整型数“processor”表示,并设置函数“smp_process_id()”,用于获得当前进程所在的CPU核的线性编号。当需要获取该CPU核的详细信息时,可通过预设的映射函数实现从线性表示方式向矩阵表示方式的转换。例如,针对同构CPU的服务器系统,可预先设置映射函数“get_coreid_from_processor()”,该函数中设置算法包括:物理CPU的编号由processor/n得到,物理CPU内的核编号由processormod n得到。标识该CPU核时,可由一个无符号长整型记录,例如可设置64位的无符号长整型数“processorL”,其中,高32位用于表示CPU核所在的物理CPU编号,低32位用于表示CPU核在物理CPU内的核编号。
这样,在虚拟机监控器中,可通过get_coreid_from_processor(smp_process_id())即可得到服务器当前进程所在的CPU核的标识。
步骤102,将每个客户操作系统及其应用作为一个虚拟机,并设置虚拟机的类型,为虚拟机提供运行所需的包括虚拟CPU在内的资源域。
本实施例中,将每个运行于虚拟机监控器之上的客户操作系统及其应用,称为一个运行于虚拟机监控器上的虚拟机,为虚拟机提供运行所需的包括虚拟CPU在内的资源域,每个虚拟机分别运行在一个资源域中。资源域是下层硬件物理资源虚拟化后,提供给上层客户操作系统运行的平台,或者说是客户操作系统所见到的“硬件资源”。资源域中,包括虚拟CPU(vCPU)、虚拟内存和虚拟I/O等。其中,vCPU可以由一个数据结构描述其属性,数据结构中除了包含计时器、调度数据、寄存器信息、内存页表基址信息等,针对多核的特性,还包括对应的物理CPU核标识,用以在调度至物理CPU的CPU核上时标识该CPU核,即将CPU核标识属性赋值为所调度到的CPU核标识,以表示其被动态映射至某一CPU中的某核上。
此外,本实施例中,根据服务器应用的特点,将虚拟机的类型分为吞吐(high-throughput)型虚拟机和并发(concurrent)型虚拟机两类。其中,吞吐型虚拟机上的应用一般为多个线程或进程,进程或线程之间不存在同步操作。例如,Web服务器应用,每接收到一个访问请求,即刻动态生成一个线程用以响应用户的请求,线程与线程之间没有同步操作。并发型虚拟机上的应用一般是并行执行的进程或线程,在进程或线程之间的同步操作频繁。例如,科学计算中的消息通信接口(Message Passing Interface,MPI)并行进程程序或开放多线程(OpenMP)并行线程程序,在进程或线程之间需要进行频繁的同步操作(如进程之间需要交换数据)。相应地,在资源域的属性中包含有其上运行的虚拟机类型,虚拟机类型由用户在创建虚拟机时指定。其中,由系统启动的控制虚拟机(即控制虚拟机监控器的虚拟机)则由系统默认设定为吞吐型。
当虚拟机类型为并发型时,为了实现同步操作,资源域内的vCPU的个数小于等于所有物理CPU的CPU核的总个数,而当虚拟机类型为吞吐型时,资源域内的vCPU的个数不受限制。
具体实现时,资源域可由一个数据结构struct domain定义。根据服务器应用的特点,虚拟机监控器在资源域上构建两种类型的虚拟机,即吞吐型和并发型虚拟机,它们在vCPU调度策略上不同。除此之外,它们的其它属性相同。为了定义虚拟机的类型,在资源域对应的数据结构struct domain中相关属性如下:
struct domain                      /*域结构*/
{
  domtype domain_type;            /*类型*/
  domid_t domain_id;              /*ID号*/
   shared_info_t   *shared_info;/* 共享信息 */
   spinlock_t   big_lock;
   ...
}
其中,domtype是枚举类型,其定义如下:
 typedef enum
 {HIGH_THROUGH,    /* 吞吐虚拟机类型 */
 CONCURRENCE        /* 并发虚拟机类型 */
}domtype;
此外,vCPU的相关属性可如下所示:
struct vcpu
{
  unsigned long processorL;  /* CPU核标识属性 */
  int vcpu_id;
  vcpu_info_t  *vcpu_info;
  struct domain  *domain;
 ...
}
其中,变量processorL若为64位,则其高32位用于表示其对应物理CPU核的CPU编号,低32位用于表示其对应物理CPU核在处理器内的核编号。
步骤103,根据虚拟机的类型,将虚拟机资源域中的虚拟CPU调度至物理CPU的CPU核上执行。
本实施例中,对于吞吐型虚拟机,虚拟机监控器在调度时,以vCPU为单位进行调度,即动态的将就绪的vCPU调度至空闲的物理CPU核上,以最大化虚拟机处理作业的吞吐量。对于并发型虚拟机,虚拟机监控器在调度时,以资源域为单位实现调度,即虚拟机监控器协同调度同一个虚拟机中的多个vCPU,而不是独立调度多个虚拟机中的不同vCPU。
实际应用中,每个物理CPU核维护一个运行队列(runq),对于每个活动的vCPU,在其生成或需要迁移时需要将其加入至某一物理CPU的CPU核的runq队列中,本实施例中,可根据虚拟机的类型,将虚拟机资源域中的vCPU加入到物理CPU的CPU核的运行队列中,之后在触发虚拟CPU调度时,将运行队列中的vCPU映射至CPU核上执行。
其中,根据虚拟机的类型,将虚拟机资源域中的vCPU加入到物理CPU的CPU核的运行队列中时,可首先根据虚拟机的类型,确定虚拟机资源域中的vCPU可以加入的CPU核的集合,然后从所确定的CPU核集合中,选取负载最轻的CPU核,将vCPU加入至所选取的CPU核的运行队列中。
例如:对属于并发型虚拟机的vCPU,其可以加入的CPU核的集合中,每个CPU核的运行队列中没有来自同一虚拟机的vCPU,即其可以加入的CPU核的集合为运行队列中没有来自同一虚拟机的vCPU(即与当前vCPU属于同一虚拟机的vCPU)的CPU核的集合。此外,该集合中的每个CPU核的相邻核上应该已分配了与当前vCPU同属一个虚拟机的虚拟CPU;或者,当来自同一个虚拟机的vCPU已恰好分配满了一个或多个CPU核时或尚未分配时,该集合中的CPU核的相邻核上可以没有分配来自同一个虚拟机中的vCPU。对属于吞吐型虚拟机的vCPU,其可以加入的CPU核的集合为所有可用CPU核的集合。
确定vCPU可以加入的CPU核的集合后,从所确定的CPU核集合中,选取负载最轻的CPU核,将vCPU加入至所选取的CPU核的运行队列中。
通常情况下,vCPU向物理CPU核的调度,是以时间片轮转的方式实现的,即一个vCPU调度到物理CPU核上,将会运行一个固定的时间(通常称一个滴答),同时,为了确定当前需要调度的vCPU,可为每个vCPU设置势能参数,并且定期更新势能参数的取值,以便根据每个vCPU的势能值从运行队列中选取vCPU并映射至物理CPU核上。
具体实现时,预先为虚拟机的资源域设置权重及资源域内各vCPU的势能初值,权重即是每一资源域占用系统总体物理CPU使用率的百分比。其中,势能初值可取零值。
对于每个CPU核运行队列中的vCPU,若CPU核为引导系统的处理器(bootstrap processor,BSP),则该CPU核按照预设时间间隔Δt,根据所设置的权重及资源域内的vCPU数量,更新运行队列中的vCPU的势能,之后对运行队列中的vCPU进行降序排列,其它CPU核则只根据各vCPU的势能对vCPU进行降序排列。对于每个CPU核上运行的vCPU,在每个滴答后,该vCPU将消耗一定的势能。
其中,运行队列中的vCPU的势能更新过程可以包括:
A、根据CPU核的总个数、预设时间间隔内的滴答次数及每次滴答的势能消耗,计算得到总势能,即总势能=物理CPU核总数×每次滴答的势能消耗×Δt内的滴答次数。
B、根据总势能、权重及资源域内的vCPU数量,计算得到资源域内每个vCPU能量增量,即能量增量=总势能×权重÷该资源域中vCPU数。
C、根据运行队列中的vCPU的原势能及上述能量增量,计算得到vCPU的更新后的势能,即vCPU的势能=原势能值+能量增量。
CPU核上运行的vCPU的势能更新过程可以为:vCPU势能=原势能值-每次滴答的势能消耗。
之后,在触发vCPU调度时,即发生时间片轮转或vCPU阻塞或vCPU唤醒或中断等情况时,根据虚拟机的类型及运行队列头部的vCPU势能,将运行队列中的vCPU映射至CPU核上执行。
具体映射过程包括:
若当前CPU核的运行队列头部的vCPU势能小于零,且该vCPU所属的虚拟机类型为并发型,则寻找其它CPU核运行队列头部的势能大于零的vCPU,并从中选取势能值最大且与当前CPU核运行队列中的vCPU不属于同一虚拟机的vCPU,将选定的运行队列头部的vCPU映射至当前CPU核上运行。
若当前CPU核的运行队列头部的vCPU势能小于零,且该vCPU所属的虚拟机类型为吞吐型,则寻找其它CPU核运行队列头部的势能大于零的vCPU,并从中选取势能值最大的vCPU,将选定的运行队列头部的vCPU映射至当前CPU核上运行。
若当前CPU核的运行队列头部的vCPU势能大于零,且该vCPU所属的虚拟机类型为并发型,则向同属该虚拟机的vCPU所在的CPU核发送处理器间中断(InterProcessor Interrupt,IPI),并将所述vCPU映射至当前的CPU核上运行;接收到所述IPI后的CPU核将同属该虚拟机的vCPU从运行队列中取出并插入到运行队列的头部,然后发送调度软中断触发调度。
若当前CPU核的运行队列头部的vCPU势能大于零,且该vCPU所属的虚拟机类型为吞吐型,则直接将所述vCPU映射至CPU核上运行。
以上对本发明实施例中的多路多核服务器的CPU虚拟化处理方法进行了详细描述,下面再对本发明实施例中的多路多核服务器进行详细描述。
图2是出了本发明实施例中的多路多核服务器的示例性结构图。如图2所示,该多路多核服务器包括:多个物理CPU(图中示出了2个物理CPU,实际应用中物理CPU的个数还可以是其它值),每个物理CPU包括多个CPU核(图中示出了2个CPU核,实际应用中CPU核的个数还可以是其它值)。此外,该多路多核服务器还包括一个虚拟机监控器,用于将每个客户操作系统及其应用作为一个虚拟机,并设置虚拟机的类型,为虚拟机提供运行所需的包括vCPU在内的资源域;之后,根据虚拟机的类型,将虚拟机资源域中的vCPU调度至物理CPU的CPU核上执行。此外,为了识别每个CPU核,该多路多核服务器还可对CPU核进行标识,根据所述标识为各CPU核调度虚拟CPU并执行。
其中,图2所示的多路多核服务器的具体操作过程可与图1所示方法流程中的操作过程一致。
具体实现时,虚拟机监控器的内部结构可有多种具体实现形式,图3示出了其中一种结构示意图。如图3所示,该虚拟机监控器可包括:资源域设置模块和CPU调度模块。
其中,资源域设置模块用于将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型,为所述虚拟机提供运行所需的包括vCPU在内的资源域,其具体操作过程可与图1所示方法流程步骤102中的操作过程一致。
CPU调度模块用于根据所述虚拟机的类型,将虚拟机资源域中的vCPU调度至物理CPU的CPU核上执行,其具体操作过程可与图1所示方法流程步骤103中的操作过程一致。此时,如图3所示,CPU调度模块可具体包括:运行队列加入模块和调度模块。
其中,运行队列加入模块用于根据虚拟机的类型,将虚拟机资源域中的vCPU加入到物理CPU的CPU核的运行队列中。具体实现时,运行队列加入模块可包括集合确定模块和加入模块。其中,集合确定模块用于根据虚拟机的类型,确定虚拟机资源域中的vCPU可以加入的CPU核的集合;加入模块用于从所述确定的CPU核集合中,选取负载最轻的CPU核,将vCPU加入至所选取的CPU核的运行队列中。
调度模块用于在触发虚拟CPU调度时,将运行队列中的vCPU映射至CPU核上执行。
此外,与图1所示方法相对应,具体实现时,该多路多核服务器还可如图3中的虚线部分所示,进一步包括:虚拟CPU势能计算模块和虚拟CPU排序模块。
其中,虚拟CPU势能计算模块,用于在达到预设时间间隔时,根据预先设置的虚拟机的资源域占用所有物理CPU使用率的权重及资源域内的vCPU数量,计算运行队列中的vCPU的势能。
虚拟CPU排序模块用于按照运行队列中vCPU的势能,对vCPU进行降序排列。
此时,调度模块在触发虚拟CPU调度时,根据虚拟机的类型及运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行。
其中,具体调度过程可参见图1所示步骤103中描述的调度过程。
本发明实施中,虚拟机监控器内部的各模块可以是物理功能模块,也可以是软件功能模块,并且各模块还可进行细分或进行合并,具体实现时,本领域普通技术人员可根据实际情况进行处理,此处不再一一列举。
可见,本发明实施例中,根据多路多核服务器上的应用特点,可以创建不同类型的虚拟机,用以满足用户的要求,同时实现计算系统虚拟化效率的最大化。
本发明实施例的主要优点在于:基于半虚拟化原理,利用现有技术的优势,具备良好的提升服务器系统性能的基础;其次,考虑了多路多核服务器中多核处理器的特性,以矩阵表示法标识每个处理器核,可以有效反映CPU核间的关系;第三,针对服务器应用的特点,将应用分为吞吐型和并发型两大类应用,相应提出两种不同的CPU虚拟化策略,可以同时兼顾虚拟机个体的性能和计算系统整体的效能,达到全面优化系统性能的目的。
基于上述的实现技术,可以实现多路多核服务器的CPU虚拟化,考虑了多核处理器的特性和服务器应用的特点,可以获得良好的系统整体效能提升,同时有效提高虚拟机个体的性能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (21)

1、一种多路多核服务器的CPU虚拟化处理方法,其特征在于,该方法包括:
将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型为并发型和/或吞吐型,根据所述虚拟机的类型为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;
根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中,在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
2、如权利要求1所述的方法,其特征在于,所述虚拟机类型为并发型时,所述资源域内的虚拟CPU的个数小于等于所有物理CPU的CPU核的个数。
3、如权利要求1所述的方法,其特征在于,所述触发虚拟CPU调度为:发生时间片轮转或虚拟CPU阻塞或虚拟CPU唤醒或中断。
4、如权利要求1所述的方法,其特征在于,所述根据虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中包括:
根据虚拟机的类型,确定虚拟机资源域中的虚拟CPU可以加入的CPU核的集合;
从所述确定的CPU核集合中,选取负载最轻的CPU核,将所述虚拟CPU加入至所选取的CPU核的运行队列中。
5、如权利要求4所述的方法,其特征在于,当前虚拟CPU所属虚拟机的类型为并发型,所述虚拟CPU可以加入的CPU核的集合为:运行队列中没有与当前虚拟CPU属于同一虚拟机的虚拟CPU的CPU核的集合;
其中,所述CPU核的相邻核上已分配了与当前虚拟CPU同属一个虚拟机的虚拟CPU;或者,与当前虚拟CPU同属一个虚拟机的虚拟CPU已恰好分配满了一个或多个CPU核时或尚未分配时,所述CPU核的相邻核上没有分配与当前虚拟CPU同属一个虚拟机中的虚拟CPU。
6、如权利要求4所述的方法,其特征在于,当前虚拟CPU所属虚拟机的类型为吞吐型,所述虚拟CPU可以加入的CPU核的集合为:所有可用CPU核的集合。
7、如权利要求1所述的方法,其特征在于,该方法进一步包括:预先为虚拟机的资源域设置占用所有物理CPU使用率的权重及资源域内各虚拟CPU的势能初值;
将所述虚拟机资源域中的虚拟CPU加入到CPU核的运行队列中之后,进一步包括:达到预设时间间隔时,根据所述权重及资源域内的虚拟CPU数量,更新所述运行队列中的所述虚拟CPU的势能,按照所述虚拟CPU的势能,对所述虚拟CPU进行降序排列;
所述将运行队列中的虚拟CPU映射至CPU核上执行为:根据虚拟机的类型及所述运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行。
8、如权利要求7所述的方法,其特征在于,所述根据权重及资源域内的虚拟CPU数量,更新所述运行队列中的所述虚拟CPU的势能为:
根据CPU核的总个数、预设时间间隔内的滴答次数及每次滴答的势能消耗,计算得到总势能;
根据所述总势能、权重及资源域内的虚拟CPU数量,计算得到资源域内每个虚拟CPU能量增量;
根据运行队列中的虚拟CPU的原势能及所述能量增量,计算得到所述虚拟CPU的更新后的势能。
9、如权利要求7所述的方法,其特征在于,所述根据虚拟机的类型及所述运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行包括:
当前CPU核的运行队列头部的虚拟CPU势能小于零,且所述虚拟CPU所属的虚拟机类型为并发型,则寻找其它CPU核运行队列头部的势能大于零的虚拟CPU,并从中选取势能值最大且与当前CPU核运行队列中的虚拟CPU不属于同一虚拟机的虚拟CPU,将选定的运行队列头部的虚拟CPU映射至当前CPU核上运行。
10、如权利要求7所述的方法,其特征在于,所述根据虚拟机的类型及所述运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行包括:
当前CPU核的运行队列头部的虚拟CPU势能小于零,且所述虚拟CPU所属的虚拟机类型为吞吐型,则寻找其它CPU核运行队列头部的势能大于零的虚拟CPU,并从中选取势能值最大的虚拟CPU,将选定的运行队列头部的虚拟CPU映射至当前CPU核上运行。
11、如权利要求7所述的方法,其特征在于,所述根据虚拟机的类型及所述运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行包括:
当前CPU核的运行队列头部的虚拟CPU势能大于零,且所述虚拟CPU所属的虚拟机类型为并发型,则向同属该虚拟机的虚拟CPU所在的CPU核发送处理器间中断IPI,并将所述虚拟CPU映射至当前的CPU核上运行;接收到所述IPI后的CPU核将同属该虚拟机的虚拟CPU从运行队列中取出并插入到运行队列的头部,然后发送调度软中断触发调度。
12、如权利要求7所述的方法,其特征在于,所述根据虚拟机的类型及所述运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行包括:
当前CPU核的运行队列头部的虚拟CPU势能大于零,且所述虚拟CPU所属的虚拟机类型为吞吐型,则直接将所述虚拟CPU映射至CPU核上运行。
13、如权利要求1所述的方法,其特征在于,该方法进一步包括:对各物理CPU的各CPU核进行标识,根据所述标识识别所述虚拟CPU被调度到的物理CPU的CPU核。
14、如权利要求13所述的方法,其特征在于,所述资源域内的每个虚拟CPU为一个数据结构,所述数据结构包括:CPU核标识属性;
所述将虚拟机资源域中的虚拟CPU调度至物理CPU的CPU核上之后,进一步包括:将所述CPU核标识属性赋值为所述物理CPU的CPU核的标识。
15、如权利要求13所述的方法,其特征在于,所述对各物理CPU的各CPU核进行标识为:采用线性方式对各物理CPU的各CPU核进行标识;或者为:采用矩阵方式对各物理CPU的各CPU核进行标识。
16、如权利要求15所述的方法,其特征在于,所述采用矩阵方式对各物理CPU的各CPU核进行标识包括:
为各物理CPU的各CPU核设置线性编号标识;
对所述线性编号进行转换处理,得到所述CPU核对应的物理CPU编号和核编号;
利用预设的长度为2N位的无符号整型数的高N位表示所述物理CPU编号,低N位表示所述核编号。
17、一种多路多核服务器,其特征在于,该多路多核服务器包括:
多个物理CPU,每个物理CPU包括多个CPU核;
虚拟机监控器,用于将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型为并发型和/或吞吐型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中,在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
18、如权利要求17所述的多路多核服务器,其特征在于,所述虚拟机监控器包括:
资源域设置模块,用于将每个客户操作系统及其应用作为一个虚拟机,并设置所述虚拟机的类型为并发型和/或吞吐型,为所述虚拟机提供运行所需的包括虚拟CPU在内的资源域;
CPU调度模块,用于根据所述虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中,在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
19、如权利要求18所述的多路多核服务器,其特征在于,所述CPU调度模块包括:
运行队列加入模块,用于根据虚拟机的类型,将所述虚拟机资源域中的虚拟CPU加入到物理CPU的CPU核的运行队列中;
调度模块,用于在触发虚拟CPU调度时,将所述运行队列中的虚拟CPU映射至CPU核上执行。
20、如权利要求19所述的多路多核服务器,其特征在于,所述运行队列加入模块包括:
集合确定模块,用于根据虚拟机的类型,确定虚拟机资源域中的虚拟CPU可以加入的CPU核的集合;
加入模块,用于从所述确定的CPU核集合中,选取负载最轻的CPU核,将所述虚拟CPU加入至所选取的CPU核的运行队列中。
21、如权利要求19所述的多路多核服务器,其特征在于,该多路多核服务器进一步包括:
虚拟CPU势能计算模块,用于在达到预设时间间隔时,根据预先设置的虚拟机的资源域占用所有物理CPU使用率的权重及资源域内的虚拟CPU数量,计算运行队列中的虚拟CPU的势能;
虚拟CPU排序模块,用于按照运行队列中虚拟CPU的势能,对所述虚拟CPU进行降序排列;
所述调度模块在触发虚拟CPU调度时,根据虚拟机的类型及运行队列头部的虚拟CPU势能,将所述运行队列中的虚拟CPU映射至CPU核上执行。
CNB2007101990051A 2007-12-05 2007-12-05 多路多核服务器及其cpu的虚拟化处理方法 Active CN100511151C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101990051A CN100511151C (zh) 2007-12-05 2007-12-05 多路多核服务器及其cpu的虚拟化处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101990051A CN100511151C (zh) 2007-12-05 2007-12-05 多路多核服务器及其cpu的虚拟化处理方法

Publications (2)

Publication Number Publication Date
CN101169731A CN101169731A (zh) 2008-04-30
CN100511151C true CN100511151C (zh) 2009-07-08

Family

ID=39390369

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101990051A Active CN100511151C (zh) 2007-12-05 2007-12-05 多路多核服务器及其cpu的虚拟化处理方法

Country Status (1)

Country Link
CN (1) CN100511151C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255572A (zh) * 2016-12-29 2018-07-06 华为技术有限公司 一种vcpu切换方法和物理主机

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685407B (zh) * 2008-09-28 2013-01-16 联想(北京)有限公司 一种虚拟环境中的任务调度系统方法
CN101488098B (zh) * 2009-02-13 2011-11-30 华中科技大学 基于虚拟计算技术的多核计算资源管理系统
CN101706742B (zh) * 2009-11-20 2012-11-21 北京航空航天大学 一种基于多核动态划分的非对称虚拟机i/o调度方法
CN101788920A (zh) * 2010-02-05 2010-07-28 北京航空航天大学 一种基于处理器分区技术的cpu虚拟化方法
CN101872304A (zh) * 2010-06-10 2010-10-27 复旦大学 基于集群化操作系统技术提高众核应用程序可伸缩性的方法
CN101924669B (zh) * 2010-09-02 2012-05-30 上海交通大学 路由器cpu占用率的检测方法
CN101976201B (zh) * 2010-10-22 2013-07-24 北京航空航天大学 基于cpu亲和力的虚拟cpu动态绑定方法
CN102073565B (zh) * 2010-12-31 2014-02-19 华为技术有限公司 触发操作方法、多核分组调试方法、装置及系统
WO2012103728A1 (zh) * 2011-06-30 2012-08-09 华为技术有限公司 热点域虚拟机cpu调度方法及虚拟机系统
CN102915292B (zh) * 2011-08-02 2015-12-09 北京大学 基于多核处理器的通信方法及其检测方法和控制方法
CN102364455B (zh) * 2011-10-31 2013-10-23 杭州华三通信技术有限公司 一种级联多核cpu间vcpu均衡分担控制方法及其装置
CN104011680B (zh) * 2011-12-26 2017-03-01 英特尔公司 在物理处理单元中调度虚拟机的虚拟中央处理单元
CN102981956B (zh) * 2012-11-30 2016-01-27 华为技术有限公司 overlay符号表建立和查找的方法、装置及程序调制系统
CN104714846B (zh) * 2013-12-17 2018-06-05 华为技术有限公司 资源处理方法、操作系统及设备
CN103984602A (zh) * 2014-05-20 2014-08-13 华为技术有限公司 一种vm资源调度方法、装置及系统
CN105242954B (zh) 2014-06-12 2019-06-07 华为技术有限公司 一种虚拟cpu与物理cpu之间的映射方法及电子设备
US10831556B2 (en) * 2015-12-23 2020-11-10 Intel IP Corporation Virtual CPU consolidation to avoid physical CPU contention between virtual machines
CN106383747A (zh) * 2016-08-31 2017-02-08 华为技术有限公司 一种计算资源调度方法及装置
CN106775921A (zh) * 2016-11-14 2017-05-31 中国石油化工股份有限公司 基于应用负载感知的虚拟cpu调度方法
CN108459906B (zh) * 2017-02-20 2021-06-29 华为技术有限公司 一种vcpu线程的调度方法及装置
WO2018227549A1 (en) * 2017-06-16 2018-12-20 Alibaba Group Holding Limited Determining processor utilization of multiprocessing system with virtualization
CN109558206B (zh) * 2017-09-26 2023-10-13 中兴通讯股份有限公司 Cpu资源的隔离方法及其系统
CN108874534B (zh) * 2018-04-18 2022-09-16 华为技术有限公司 一种pcpu资源的调度方法和装置
CN109739612B (zh) * 2018-11-22 2021-10-26 海光信息技术股份有限公司 虚拟机进程的调度方法、装置、设备和存储介质
CN110287017B (zh) * 2019-07-01 2022-06-10 北京首都在线科技股份有限公司 一种任务调度方法及任务调度装置
CN113687909B (zh) * 2021-07-28 2024-01-30 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于微内核的分时vcpu多核调度方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255572A (zh) * 2016-12-29 2018-07-06 华为技术有限公司 一种vcpu切换方法和物理主机

Also Published As

Publication number Publication date
CN101169731A (zh) 2008-04-30

Similar Documents

Publication Publication Date Title
CN100511151C (zh) 多路多核服务器及其cpu的虚拟化处理方法
KR101629155B1 (ko) 전력-인식 스레드 스케줄링 및 프로세서들의 동적 사용
Vaishnav et al. Resource elastic virtualization for FPGAs using OpenCL
US10162658B2 (en) Virtual processor allocation techniques
US9268394B2 (en) Virtualized application power budgeting
Gupta et al. HPC-aware VM placement in infrastructure clouds
US9405585B2 (en) Management of heterogeneous workloads
Feller et al. Energy management in IaaS clouds: a holistic approach
US20200166986A1 (en) System and method for performing distributed power management without power cycling hosts
Kazempour et al. AASH: an asymmetry-aware scheduler for hypervisors
CN101788920A (zh) 一种基于处理器分区技术的cpu虚拟化方法
Xiao et al. An energy-aware heuristic scheduling for data-intensive workflows in virtualized datacenters
Han et al. Energy efficient VM scheduling for big data processing in cloud computing environments
Sudan et al. Tiered memory: An iso-power memory architecture to address the memory power wall
Phan et al. Energy-driven straggler mitigation in MapReduce
Xilong et al. An energy-efficient virtual machine scheduler based on CPU share-reclaiming policy
Quang-Hung et al. Heuristics for energy-aware VM allocation in HPC clouds
CN105930202B (zh) 一种三阈值的虚拟机迁移方法
Qu et al. Improving the energy efficiency and performance of data-intensive workflows in virtualized clouds
Monteiro et al. Quantum virtual machine: power and performance management in virtualized web servers clusters
Qouneh et al. Optimization of resource allocation and energy efficiency in heterogeneous cloud data centers
Singh et al. Optimizing energy consumption for cloud computing: A cluster and migration based approach (CMBA)
Shao et al. Virtual machine resource management for high performance computing applications
Li et al. Energy-efficient resource allocation strategy based on task classification in data center
Zhang CoolCloud: Improving energy efficiency in virtualized data centers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211220

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right