CN113032154B - 一种虚拟cpu的调度方法、装置、电子设备及存储介质 - Google Patents

一种虚拟cpu的调度方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113032154B
CN113032154B CN202110419338.0A CN202110419338A CN113032154B CN 113032154 B CN113032154 B CN 113032154B CN 202110419338 A CN202110419338 A CN 202110419338A CN 113032154 B CN113032154 B CN 113032154B
Authority
CN
China
Prior art keywords
cpu
physical machine
virtual
scheduling
cpus
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
CN202110419338.0A
Other languages
English (en)
Other versions
CN113032154A (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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202110419338.0A priority Critical patent/CN113032154B/zh
Publication of CN113032154A publication Critical patent/CN113032154A/zh
Application granted granted Critical
Publication of CN113032154B publication Critical patent/CN113032154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请公开了一种虚拟CPU的调度方法,所述虚拟CPU的调度方法包括:根据接收的虚拟CPU调度指令确定目标虚拟CPU;确定所述目标虚拟CPU对应的物理机CPU集合;判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。本申请能够实现物理机CPU之间的负载均衡,降低虚拟CPU之间的同步延迟。本申请还公开了一种虚拟CPU的调度装置、一种电子设备及一种存储介质,具有以上有益效果。

Description

一种虚拟CPU的调度方法、装置、电子设备及存储介质
技术领域
本申请涉及虚拟机技术领域,特别涉及一种虚拟CPU的调度方法、装置、一种电子设备及一种存储介质。
背景技术
随着云计算的发展,越来越多的业务迁移到云上。在虚拟化场景中,多线程应用程序运行在虚拟机中,故多线程应用的同步延迟受虚拟机中多个虚拟CPU的协同调度程度影响。
相关技术中,通常将同一个虚拟机的多个虚拟CPU调度到不同的物理机CPU上来增加虚拟CPU协同调度的概率。但是,上述直接将同一个虚拟机的多个虚拟CPU调度至不同的物理机CPU的方案,会导致物理机CPU之间负载差异较大,影响整体的计算性能。
因此,如何实现物理机CPU之间的负载均衡,降低虚拟CPU之间的同步延迟是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种虚拟CPU的调度方法、装置、一种电子设备及一种存储介质,能够实现物理机CPU之间的负载均衡,降低虚拟CPU之间的同步延迟。
为解决上述技术问题,本申请提供一种虚拟CPU的调度方法,该虚拟CPU的调度方法包括:
根据接收的虚拟CPU调度指令确定目标虚拟CPU;
确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;
判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;
若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
可选的,确定所述目标虚拟CPU对应的物理机CPU集合,包括:
查询所述目标虚拟CPU所在的目标虚拟机,并确定所述目标虚拟机的虚拟CPU调度信息;其中,所述虚拟CPU调度信息包括所有调度所述目标虚拟机中所有虚拟CPU的物理机CPU;
根据所述虚拟CPU调度信息确定所述目标虚拟CPU对应的物理机CPU集合。
可选的,将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU,包括:
利用操作系统内核将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
相应的,将所述目标虚拟CPU调度至全局负载最小的物理机CPU,包括:
利用所述操作系统内核将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
可选的,将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU,包括:
将所述目标虚拟CPU添加至所述物理机CPU集合中当前负载最小的备选物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU;
相应的,将所述目标虚拟CPU调度至全局负载最小的物理机CPU包括:
将所述目标虚拟CPU添加至所述全局负载最小的物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU。
可选的,还包括:
若检测到核间中断转译后备缓冲区断开事件TLB shootdown IPI,则提高所述调度队列中作为接收端的虚拟CPU的优先级。
可选的,还包括:
若检测到核间中断重新调度事件reschedule IPI,则降低所述调度队列中作为发送端的虚拟CPU的优先级。
可选的,在确定所述目标虚拟CPU对应的物理机CPU集合之后,还包括:
判断所述物理机CPU集合是否为空;
若是,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU;
若否,则执行判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU的操作。
本申请还提供了一种虚拟CPU的调度装置,该装置包括:
目标虚拟CPU确定模块,用于根据接收的虚拟CPU调度指令确定目标虚拟CPU;
物理机CPU集合确定模块,用于确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;
调度模块,用于判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述虚拟CPU的调度方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述虚拟CPU的调度方法执行的步骤。
本申请提供了一种虚拟CPU的调度方法,包括:根据接收的虚拟CPU调度指令确定目标虚拟CPU;确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;若否,则将所述目标虚拟CPU调度至全局负载最小的物理机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为本申请实施例所提供的一种物理机CPU的选择方法的流程图;
图3为本申请实施例所提供的另一种虚拟CPU的调度方法的流程图;
图4为本申请实施例所提供的一种虚拟CPU的调度装置的结构示意图;
图5为本申请实施例所提供的一种电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前业内主要通过Co-scheduling或Balance scheduling算法实现虚拟CPU协调调度,Co-scheduling调度算法会同时调度虚拟机的所有虚拟CPU,即虚拟机的所有虚拟CPU要么同时获取到物理机CPU(Central Processing Unit,中央处理器),要么同时释放掉物理机CPU,一旦一个虚拟CPU获取不到物理机CPU,其他已经获取到物理机CPU的虚拟CPU也会等待。上述方案的缺点是会导致CPU碎片较多,CPU利用率降低。Balance scheduling调度算法将同一个虚拟机的多个虚拟CPU分散到不同的物理机CPU上,避免虚拟CPU堆叠,从而增大了虚拟CPU协同调度的概率。但是该方案的缺点是会导致物理机CPU之间负载不均衡,比如物理机有两个物理机CPU,上面运行两个虚拟机,虚拟机A有1个虚拟CPU,虚拟机B有两个虚拟CPU,按照balance scheduling的调度,假设虚拟机A的1个虚拟CPU运行在物理机CPU0,虚拟机B的两个虚拟CPU分别放到物理机CPU0和物理机CPU1上,假设虚拟机A负载很高导致物理机CPU0负载很高,而虚拟机B负载较低,那么就会导致物理机CPU0和物理机CPU1负载不均衡。为了解决上述相关技术存在的技术问题,本申请通过以下几个实施例提供新的虚拟CPU的调度方案。
下面请参见图1,图1为本申请实施例所提供的一种虚拟CPU的调度方法的流程图。
具体步骤可以包括:
S101:根据接收的虚拟CPU调度指令确定目标虚拟CPU;
其中,本实施例可以应用于运行有虚拟机(VM,Virtual Machine)的主机设备。虚拟机对下层物理机表现为特殊的进程,对上层用户表现为一个虚拟的服务器环境。在主机上看到每个虚拟机对应1个进程,虚拟CPU为其中的部分子线程。一个虚拟机可以对应任意数量个虚拟CPU(vCPU,virtual Central Processing Unit),同一虚拟机的虚拟CPU可以被调度至任意物理机CPU(pCPU,physical Central Processing Unit,又称物理服务器逻辑核)。
在接收到虚拟CPU调度指令后,可以解析虚拟CPU调度指令得到虚拟CPU标识,并根据虚拟CPU标识确定需要被调度的目标虚拟CPU。目标虚拟CPU可以为当前正在被其他物理机CPU调度的虚拟CPU,也可以为尚未被调度的虚拟CPU。
S102:确定所述目标虚拟CPU对应的物理机CPU集合;
其中,在得到目标虚拟CPU的基础上,本实施例可以根据目标虚拟CPU确定可以调度该目标虚拟CPU的物理机CPU,进而利用所有可以调度该目标虚拟CPU的物理机CPU得到对应的物理机CPU集合。进一步的,同一虚拟机的多个虚拟CPU被相同的物理机CPU调度时将会消耗过多的资源,因此上述所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU。
作为一种可行的实施方式,本实施例可以通过以下方式确定物理机CPU集合:查询所述目标虚拟CPU所在的目标虚拟机,并确定所述目标虚拟机的虚拟CPU调度信息;其中,所述虚拟CPU调度信息包括所有调度所述目标虚拟机中所有虚拟CPU的物理机CPU;根据所述虚拟CPU调度信息确定所述目标虚拟CPU对应的物理机CPU集合。
S103:判断物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则进入S104;若否,则进入S105;
S104:将目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
S105:将目标虚拟CPU调度至全局负载最小的物理机CPU。
其中,在调度虚拟CPU时,若各个物理机CPU的负载不均衡,将会导致虚拟CPU之间的同步延迟较高。因此本实施例提供了一种基于物理机CPU负载的虚拟CPU调度方案:先获取全局平均负载,若物理机CPU集合中存在当前负载小于全局平均负载的备选物理机CPU时,则将目标虚拟CPU调度至物理机CPU集合中当前负载最小的备选物理机CPU;若物理机CPU集合中存在当前负载均大于或等于全局平均负载时,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。上述全局平均负载指系统内所有物理机CPU负载的平均值,全局负载最小的物理机CPU指:系统内所有物理机CPU中负载最小的物理机CPU。具体的,本实施例可以利用操作系统内核将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;还可以利用所述操作系统内核将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
在上述过程中,若物理机CPU集合中存在当前负载小于全局平均负载的备选物理机CPU,则说明将目标虚拟CPU调度至物理机CPU集合中的备选物理机CPU后不会加剧物理机CPU之间的负载差异。在物理机CPU集合中存在当前负载均大于或等于全局平均负载,若将目标虚拟CPU调度至物理机CPU集合中的备选物理机CPU,将会导致物理机CPU之间的负载差异增大,因此本实施例将目标虚拟CPU调度至全局负载最小的物理机CPU以减小物理机CPU之间的负载差异。
本实施例在接收到虚拟CPU调度指令之后,确定需要被调度的目标虚拟CPU,并确定未运行与目标虚拟CPU属于同一虚拟机的其他虚拟CPU的物理机CPU集合。本实施例利用全局平均负载判断是否从物理机CPU集合中选取调度目标虚拟CPU的物理机CPU;若物理机CPU集合中存在当前负载小于全局平均负载的备选物理机CPU,则从物理机CPU集合中选取当前负载最小的备选物理机CPU进行调度,以便在增大虚拟CPU协同调度概率的同时减小物理机CPU之间负载差异;若物理机CPU集合中不存在当前负载小于全局平均负载的备选物理机CPU,则将目标虚拟CPU调度至全局负载最小的物理机CPU,以便避免物理机CPU之间负载差异继续增大。由此可见,本实施例能够实现物理机CPU之间的负载均衡,降低虚拟CPU之间的同步延迟。
请参见图2,图2为本申请实施例所提供的一种物理机CPU的选择方法的流程图,本实施例是对图1对应实施例中如何选取调度目标虚拟CPU的物理机CPU的进一步介绍,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S201:确定所述目标虚拟CPU对应的物理机CPU集合;
S202:判断所述物理机CPU集合是否为空;若是,则进入S203;若否,则进入S204;
S203:将所述目标虚拟CPU调度至全局负载最小的物理机CPU;
S204:判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则进入S205;若否,则进入S206;
S205:将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
S206:将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
举例说明上述调度过程:若虚拟CPU0被调度时,首先获取物理机CPU集合A,集合A上没有和虚拟CPU0属于同一虚拟机的虚拟CPU。如果集合A里面存在物理机CPU的负载不高于所有物理机CPU的平均负载,则虚拟CPU0在集合A内调度。否则,虚拟CPU0在全局物理机CPU范围内调度。在确定了物理机CPU集合之后,虚拟CPU具体调度到某个物理机CPU可以由内核的调度器决定。在上述过程中,先判断物理机CPU集合是否为空,若为空则说明全局物理机CPU均运行有与目标虚拟CPU属于同一虚拟机的其他虚拟CPU,这种情况下可以从全局物理机CPU中选取负载最小的物理机CPU来调度目标虚拟CPU。上述方案同一个虚拟机的虚拟CPU尽量分散和物理机CPU之间的负载均衡两个维度实现虚拟CPU协调调度,能够减小物理机CPU之间的负载差异,降低虚拟CPU之间的同步延迟。本实施例通过利用负载感知的均衡调度实现协同调度,避免了co-scheduling带来的CPU碎片问题和均衡调度的负载不均衡问题,减少了不必要的CPU消耗,提升了整体的计算性能。
请参见图3,图3为本申请实施例所提供的另一种虚拟CPU的调度方法的流程图,本实施例是对图1对应的实施例中利用物理机CPU调度虚拟CPU的进一步介绍,可以将本实施例与图1对应的实施例相结合得到进一步的实施方式,本实施例可以包括以下步骤:
S301:将目标虚拟CPU添加至所述物理机CPU集合中目标物理机CPU;
其中,上述目标物理机CPU可以为物理机CPU集合中当前负载最小的备选物理机CPU,也可以为全局负载最小的物理机CPU。
具体的,本实施例可以将所述目标虚拟CPU添加至所述物理机CPU集合中当前负载最小的备选物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU。本实施例还可以将所述目标虚拟CPU添加至所述全局负载最小的物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU。
S302:若检测到核间中断转译后备缓冲区断开事件TLB shootdown IPI,则提高所述调度队列中作为接收端的虚拟CPU的优先级。
S303:若检测到核间中断重新调度事件reschedule IPI,则降低所述调度队列中作为发送端的虚拟CPU的优先级。
在本实施例中物理机CPU通过调度队列确定调度虚拟CPU的顺序,本实施例提供了出现TLB shootdown IPI或reschedule IPI后的调度队列调整方案,能够降低虚拟CPU的同步延迟。
在多CPU系统中,当某个CPU更改虚拟地址到物理地址的映射时,为了保证TLB的同步,将相关的记录从该CPU的TLB(Translation Lookaside Buffer,转译后备缓冲区)中清除的同时还需要通过IPI(Inter-Processor Interrupts,核间中断)通知其他CPU清除相应的TLB记录,此过程称之为TLB shootdown。发起TLB shootdown的CPU会忙等待直到其他CPU处理了相应IPI通知。在本地操作系统中,由于处理IPI优先级很高,所以很快会完成。而在虚拟化场景中,虚拟机的虚拟CPU如果没有得到及时的调度,那么发起TLB shootdown的虚拟CPU忙等待就会消耗过多的计算资源,并且影响虚拟机的性能。而多线程应用会触发较多的TLB shootdown。本实施例可以通过虚拟机监视器hypervisor监测虚拟CPU之间的IPI来推测虚拟CPU的协同调度需求。当TLB shootdown IPI产生时,接收端的虚拟CPU调度优先级提高。当reschedule IPI产生时,发送端的虚拟CPU延迟被其他虚拟CPU抢占,避免发生LHP(lock-holder preemption)。
本实施例基于IPI驱动实现虚拟CPU的协同调度,通过检测IPI实时的调整虚拟CPU调度优先级,能够有效降低虚拟CPU之间的同步延迟,减少了不必要的CPU消耗,提升了整体的计算性能。
请参见图4,图4为本申请实施例所提供的一种虚拟CPU的调度装置的结构示意图,该装置可以包括:
目标虚拟CPU确定模块401,用于根据接收的虚拟CPU调度指令确定目标虚拟CPU;
物理机CPU集合确定模块402,用于确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;
调度模块403,用于判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
本实施例在接收到虚拟CPU调度指令之后,确定需要被调度的目标虚拟CPU,并确定未运行与目标虚拟CPU属于同一虚拟机的其他虚拟CPU的物理机CPU集合。本实施例利用全局平均负载判断是否从物理机CPU集合中选取调度目标虚拟CPU的物理机CPU;若物理机CPU集合中存在当前负载小于全局平均负载的备选物理机CPU,则从物理机CPU集合中选取当前负载最小的备选物理机CPU进行调度,以便在增大虚拟CPU协同调度概率的同时减小物理机CPU之间负载差异;若物理机CPU集合中不存在当前负载小于全局平均负载的备选物理机CPU,则将目标虚拟CPU调度至全局负载最小的物理机CPU,以便避免物理机CPU之间负载差异继续增大。由此可见,本实施例能够实现物理机CPU之间的负载均衡,降低虚拟CPU之间的同步延迟。
进一步的,物理机CPU集合确定模块402用于查询所述目标虚拟CPU所在的目标虚拟机,并确定所述目标虚拟机的虚拟CPU调度信息;其中,所述虚拟CPU调度信息包括所有调度所述目标虚拟机中所有虚拟CPU的物理机CPU;还用于根据所述虚拟CPU调度信息确定所述目标虚拟CPU对应的物理机CPU集合。
进一步的,调度模块403包括:
本地调度单元,用于利用操作系统内核将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
全局调度单元,用于利用所述操作系统内核将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
进一步的,调度模块403,用于将所述目标虚拟CPU添加至所述物理机CPU集合中当前负载最小的备选物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU;还用于将所述目标虚拟CPU添加至所述全局负载最小的物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU。
进一步的,还包括:
第一调整单元,用于若检测到核间中断转译后备缓冲区断开事件TLB shootdownIPI,则提高所述调度队列中作为接收端的虚拟CPU的优先级;
第二调整单元,用于若检测到核间中断重新调度事件reschedule IPI,则降低所述调度队列中作为发送端的虚拟CPU的优先级。
进一步的,还包括:
集合判断模块,用于在确定所述目标虚拟CPU对应的物理机CPU集合之后,判断所述物理机CPU集合是否为空;若是,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU;若否,则执行判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU的操作。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,参见图5,图5为本申请实施例提供的一种电子设备的结构图,电子设备可以包括处理器510和存储器520。
其中,处理器510可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器510可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器510也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器510可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器510还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器520可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器520还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器520至少用于存储以下计算机程序521,其中,该计算机程序被处理器510加载并执行之后,能够实现前述任一实施例公开的虚拟CPU的调度方法中的相关步骤。另外,存储器520所存储的资源还可以包括操作系统522和数据523等,存储方式可以是短暂存储或者永久存储。其中,操作系统522可以包括Windows、Linux、Android等。
在一些实施例中,电子设备还可包括有显示屏530、输入输出接口540、通信接口550、传感器560、电源570以及通信总线580。
当然,图5所示的电子设备的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图5所示的更多或更少的部件,或者组合某些部件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种虚拟CPU的调度方法,其特征在于,包括:
根据接收的虚拟CPU调度指令确定目标虚拟CPU;
确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;物理机CPU为物理服务器的逻辑核;
判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;
若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
2.根据权利要求1所述虚拟CPU的调度方法,其特征在于,确定所述目标虚拟CPU对应的物理机CPU集合,包括:
查询所述目标虚拟CPU所在的目标虚拟机,并确定所述目标虚拟机的虚拟CPU调度信息;其中,所述虚拟CPU调度信息包括所有调度所述目标虚拟机中所有虚拟CPU的物理机CPU;
根据所述虚拟CPU调度信息确定所述目标虚拟CPU对应的物理机CPU集合。
3.根据权利要求1所述虚拟CPU的调度方法,其特征在于,将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU,包括:
利用操作系统内核将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;
相应的,将所述目标虚拟CPU调度至全局负载最小的物理机CPU,包括:
利用所述操作系统内核将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
4.根据权利要求1所述虚拟CPU的调度方法,其特征在于,将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU,包括:
将所述目标虚拟CPU添加至所述物理机CPU集合中当前负载最小的备选物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU;
相应的,将所述目标虚拟CPU调度至全局负载最小的物理机CPU包括:
将所述目标虚拟CPU添加至所述全局负载最小的物理机CPU的调度队列,以便所述当前负载最小的备选物理机CPU按照优先级从高到低的顺序依次调度所述调度队列中的虚拟CPU。
5.根据权利要求4所述虚拟CPU的调度方法,其特征在于,还包括:
若检测到核间中断转译后备缓冲区断开事件TLB shootdown IPI,则提高所述调度队列中作为接收端的虚拟CPU的优先级。
6.根据权利要求4所述虚拟CPU的调度方法,其特征在于,还包括:
若检测到核间中断重新调度事件reschedule IPI,则降低所述调度队列中作为发送端的虚拟CPU的优先级。
7.根据权利要求1至6任一项所述虚拟CPU的调度方法,其特征在于,在确定所述目标虚拟CPU对应的物理机CPU集合之后,还包括:
判断所述物理机CPU集合是否为空;
若是,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU;
若否,则执行判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU的操作。
8.一种虚拟CPU的调度装置,其特征在于,包括:
目标虚拟CPU确定模块,用于根据接收的虚拟CPU调度指令确定目标虚拟CPU;
物理机CPU集合确定模块,用于确定所述目标虚拟CPU对应的物理机CPU集合;其中,所述物理机CPU集合包括多个备选物理机CPU,所述备选物理机CPU中未运行与所述目标虚拟CPU属于同一虚拟机的其他虚拟CPU;物理机CPU为物理服务器的逻辑核;
调度模块,用于判断所述物理机CPU集合中是否存在当前负载小于全局平均负载的备选物理机CPU;若是,则将所述目标虚拟CPU调度至所述物理机CPU集合中当前负载最小的备选物理机CPU;若否,则将所述目标虚拟CPU调度至全局负载最小的物理机CPU。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至7任一项所述虚拟CPU的调度方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至7任一项所述虚拟CPU的调度方法的步骤。
CN202110419338.0A 2021-04-19 2021-04-19 一种虚拟cpu的调度方法、装置、电子设备及存储介质 Active CN113032154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110419338.0A CN113032154B (zh) 2021-04-19 2021-04-19 一种虚拟cpu的调度方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110419338.0A CN113032154B (zh) 2021-04-19 2021-04-19 一种虚拟cpu的调度方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113032154A CN113032154A (zh) 2021-06-25
CN113032154B true CN113032154B (zh) 2023-11-07

Family

ID=76456848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110419338.0A Active CN113032154B (zh) 2021-04-19 2021-04-19 一种虚拟cpu的调度方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113032154B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281529B (zh) * 2021-12-10 2024-06-04 上海交通大学 分布式虚拟化的客户操作系统调度优化方法、系统及终端

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719081A (zh) * 2009-12-01 2010-06-02 北京大学 一种虚拟机调度方法
CN103106112A (zh) * 2013-02-05 2013-05-15 浪潮(北京)电子信息产业有限公司 一种基于最高负载的进行负载均衡调度的方法及设备
CN103955398A (zh) * 2014-04-28 2014-07-30 浙江大学 一种基于处理器性能监控的虚拟机共生调度方法
CN104503838A (zh) * 2014-11-23 2015-04-08 华中科技大学 一种虚拟cpu调度方法
CN107967164A (zh) * 2016-10-19 2018-04-27 阿里巴巴集团控股有限公司 一种虚拟机热迁移的方法及系统
CN111459622A (zh) * 2020-04-15 2020-07-28 腾讯科技(深圳)有限公司 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN112527532A (zh) * 2020-12-22 2021-03-19 杭州优万科技有限公司 一种基于消息的路径调度方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648826B (zh) * 2016-09-09 2018-06-19 北京百度网讯科技有限公司 用于热迁移虚拟机的方法和装置
US10310887B2 (en) * 2017-02-22 2019-06-04 Red Hat, Inc. CPU overcommit with guest idle polling

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719081A (zh) * 2009-12-01 2010-06-02 北京大学 一种虚拟机调度方法
CN103106112A (zh) * 2013-02-05 2013-05-15 浪潮(北京)电子信息产业有限公司 一种基于最高负载的进行负载均衡调度的方法及设备
CN103955398A (zh) * 2014-04-28 2014-07-30 浙江大学 一种基于处理器性能监控的虚拟机共生调度方法
CN104503838A (zh) * 2014-11-23 2015-04-08 华中科技大学 一种虚拟cpu调度方法
WO2016078178A1 (zh) * 2014-11-23 2016-05-26 华中科技大学 一种虚拟cpu调度方法
CN107967164A (zh) * 2016-10-19 2018-04-27 阿里巴巴集团控股有限公司 一种虚拟机热迁移的方法及系统
CN111459622A (zh) * 2020-04-15 2020-07-28 腾讯科技(深圳)有限公司 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN112527532A (zh) * 2020-12-22 2021-03-19 杭州优万科技有限公司 一种基于消息的路径调度方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FlexCore: Dynamic virtual machine scheduling using VCPU ballooning;Tianxiang Miao等;《Tsinghua Science and Technology》;第7-16页 *
基于低能耗的动态虚拟机调度;王悦;《科学技术创新》;第72-74页 *

Also Published As

Publication number Publication date
CN113032154A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
JP6437579B2 (ja) 仮想化環境におけるインテリジェントgpuスケジューリング
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US20230185607A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US8239610B2 (en) Asynchronous page faults for virtual machines
US11157302B2 (en) Idle processor management in virtualized systems via paravirtualization
US10365936B2 (en) Idle processor management by guest in virtualized systems
US10970129B2 (en) Intelligent GPU scheduling in a virtualization environment
US20170177415A1 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
US9201823B2 (en) Pessimistic interrupt affinity for devices
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US9367345B1 (en) Power efficient cross-VCPU notification by VM function
CN113032154B (zh) 一种虚拟cpu的调度方法、装置、电子设备及存储介质
US11281487B2 (en) Managing processor overcommit for virtual machines
CN116360941A (zh) 一种面向多核dsp的并行计算资源自组织调度方法及系统
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
US10671425B2 (en) Lazy timer programming for virtual machines
US9792152B2 (en) Hypervisor managed scheduling of virtual machines
WO2023225991A1 (en) Dynamic establishment of polling periods for virtual machine switching operations
US8656375B2 (en) Cross-logical entity accelerators

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