CN111459622B - 调度虚拟cpu的方法、装置、计算机设备和存储介质 - Google Patents
调度虚拟cpu的方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111459622B CN111459622B CN202010295699.4A CN202010295699A CN111459622B CN 111459622 B CN111459622 B CN 111459622B CN 202010295699 A CN202010295699 A CN 202010295699A CN 111459622 B CN111459622 B CN 111459622B
- Authority
- CN
- China
- Prior art keywords
- virtual
- cpus
- scheduling
- cpu
- virtual 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
Links
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/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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
本申请涉及云计算领域,提供了一种调度虚拟CPU的方法、装置、计算机设备和存储介质,以解决现有技术在调度VCPU时多个VCPU之间同步出现的时延、甚至死锁的问题。所述方法包括:接收调度虚拟CPU的请求;根据调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;若判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。本申请的技术方案使得多个虚拟CPU之间的同步不再延时,尤其在云计算和大数据等场景下,当虚拟机负载不可避免地增高、虚拟CPU频繁被调度时,本申请的技术方案极大地提高了并行计算的效率。
Description
技术领域
本申请涉及云计算领域,特别涉及一种调度虚拟CPU的方法、装置、计算机设备和存储介质。
背景技术
在虚拟化技术中,操作系统分配给虚拟机的CPU并不是真实或物理CPU(PhysicalCentral Processing Unit,简称PCPU),而是虚拟CPU(Virtual Central ProcessingUnit,简称VCPU)。在多核的虚拟场景下,往往分配多个VCPU,这就涉及到将VCPU调度至PCPU。
由于多核的虚拟场景下,虚拟机的多个VCPU可能一部分处于运行态,另一部分则处于睡眠和阻塞状态,因此,在现有调度VCPU的技术方案中,对VCPU之间的通信和同步造成了一些延时问题。
现有的调度VCPU的技术方案之所以出现上述VCPU之间的通信和同步延时问题,原因在于使用了锁机制。例如,当一个VCPU(为了与下文的另一VCPU区别,此处将其简记为VCPU1)上的代码运行锁去获取资源争用时,获取到锁的VCPU1进入临界区后被调度出去,而当另一VCPU(简记为VCPU2)上的代码尝试获取同一个锁时,不得不进行等待,直至VCPU1被重新调度成运行状态,完成临界区的执行并退出后,VCPU2才能获取到锁,如此,额外增加了VCPU1和VCPU2之间同步的时延、甚至出现死锁情况。
发明内容
本申请实施例提供了一种调度虚拟CPU的方法、装置、计算机设备和存储介质,以解决现有技术在调度VCPU时多个VCPU之间同步出现的时延、甚至死锁的问题。该技术方案如下:
一方面,提供了一种调度虚拟CPU的方法,该方法包括:
接收调度虚拟CPU的请求;
根据所述调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;
若判断所述当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
一方面,提供了一种调度虚拟CPU的装置,该装置包括:
接收模块,用于接收调度虚拟CPU的请求;
判断模块,用于根据所述调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;
并行调度模块,用于若判断模块判断所述当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
一方面,提供了一种计算机设备,该计算设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,该计算机程序代码由该一个或多个处理器加载并执行以实现该调度虚拟CPU的方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序由处理器加载并执行以实现该调度虚拟CPU的方法所执行的操作。
从上述本申请提供的技术方案可知,不同于现有调度VCPU的技术方案因为使用了锁机制而出现VCPU之间的通信和同步延时问题,本发明的技术方案在判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。由于不同虚拟机的虚拟CPU一般不存在同步时延问题,而同一虚拟机的多个虚拟CPU的调度容易出现同步延时问题,因此,当隶属于同一虚拟机的多个虚拟CPU同时被调度时,则多个虚拟CPU之间的同步不再延时,尤其在云计算和大数据等场景下,当虚拟机负载增高,虚拟CPU频繁被调度时,极大降低了虚拟CPU之间的等待时间,提高了并行计算的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的调度虚拟CPU的方法的流程图;
图2是本申请实施例提供的多核的虚拟场景下多处理机系统与多处理机虚拟化环境的示意图;
图3是本申请实施例提供的将隶属于同一虚拟机的全部虚拟CPU同时调度至对应的物理CPU执行的示意图;
图4是本申请实施例提供的将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行的示意图;
图5是本申请实施例提供的将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行的流程图;
图6是本申请实施例提供的VMCS的架构示意图;
图7是本申请实施例提供的将当前计算节点上隶属于同一调度族的多个虚拟CPU同时调度至对应的物理CPU执行的示意图;
图8是本申请实施例提供的一种调度虚拟CPU的装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
附图1是本申请实施例提供的一种调度虚拟CPU的方法的流程图。该方法可以应用于一些计算机设备,因此,本申请实施例基于计算机设备作为执行主体来进行介绍。此处的计算机设备可以是服务器,也可以是终端,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,而终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。上述终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
参见图1,该实施例具体主要包括以下步骤S101至S103,详细说明如下:
步骤S101:接收调度虚拟CPU的请求。
在多核的虚拟场景下,多处理机系统包括多个物理中央处理器(PCPU),多处理机虚拟化环境包括虚拟机检测器(Virtual Machine Monitor,VMM)以及一台或多台虚拟机,每台虚拟机上运行一个客户机操作系统(Guest OS),每台虚拟机又包含一个或多个虚拟CPU;VMM直接管理底层硬件资源,并创建与底层硬件无关的虚拟机供上层操作系统和应用程序使用;由于在多核的虚拟场景下,虚拟机并没有真正的物理资源,分配给虚拟机的CPU并不是真实物理CPU,而是由VMM分配的VCPU,同时,将VCPU调度到PCPU上,而VCPU能够在不同PCPU上运行且无需告知Guest OS。附图2是多核的虚拟场景下多处理机系统与多处理机虚拟化环境的示意图。在本申请实施例中,由VMM的调度器接收调度虚拟CPU的请求,以用于将多核的虚拟场景下哪个虚拟CPU调度到对应的物理CPU;调度虚拟CPU的请求至少包括被调度的虚拟CPU的标识以及各个虚拟CPU的依赖关系。
由于云计算(cloud computing)和大数据(big data)的一个共同特征是分布式结构,并且,云计算和大数据涉及资源的频繁调度,因此,上述多核的虚拟场景的典型应用包括云计算和大数据。云计算是将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务,提供资源的网络被称为“云”,“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费;作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用;云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
步骤102:根据调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延。
虚拟CPU之间的同步时延,意味着虚拟CPU之间将失去同步。如前所述,调度虚拟CPU的请求至少包括被调度的虚拟CPU的标识以及各个虚拟CPU的依赖关系,因此,在本申请实施例中,可以根据调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延。例如,假设两个VCPU(分别简记为VCPU-1和VCPU-2)的依赖关系表现为其上运行的代码对临界区(即访问一次仅允许一个线程使用的共享资源的代码段)的访问,则由于VCPU-1和VCPU-2对同一个锁的持有需求,从而可以判断VCPU-1和VCPU-2在调度实现后,两者之间的同步会出现时延。
步骤S103:若当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
由于对同一资源有依赖关系的多个虚拟CPU先后被调度,是导致多个虚拟CPU之间出现同步延时问题的原因,因此,当判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延时,隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU,例如,隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时被调度至对应的物理CPU执行,多个虚拟CPU之间的同步不再延时,从而解决了多个虚拟CPU调度的同步延时问题。
在本申请一个实施例中,将隶属于同一虚拟机的多个虚拟CPU同时调度至对应的物理CPU执行可以是:将隶属于同一虚拟机的全部虚拟CPU同时调度至对应的物理CPU执行。一般而言,由于隶属于不同虚拟机的虚拟CPU不存在依赖关系(例如,对同一锁的互斥关系,表现在同一时刻只能一个虚拟CPU持有同一锁),因此,在本申请实施例中,将隶属于同一虚拟机的全部虚拟CPU同时调度至对应的物理CPU执行。如附图3所示,尽管只有隶属于虚拟机1(图中标识为VM-1)的虚拟CPU-1(图中标识为VCPU-1)和虚拟CPU-2(图中标识为VCPU-2)对同一资源有依赖关系,而虚拟CPU-3(图中标识为VCPU-3)与VCPU-1、VCPU-2对相同资源并无依赖关系,但仍然将VM-1的全部虚拟CPU即VCPU-1、VCPU-2和VCPU-3同时调度至主机(Host)对应的物理CPU(图中是将VCPU-1和VCPU-2调度至标识为PCPU-1的物理CPU,将VCPU-3调度至标识为PCPU-2的物理CPU)执行。
在本申请另一实施例中,将隶属于同一虚拟机的多个虚拟CPU同时调度至对应的物理CPU执行可以是:将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。考虑到前一实施例中将隶属于同一虚拟机的全部虚拟CPU同时调度至对应的物理CPU执行时,将对同一资源并没有依赖关系的虚拟CPU与其他对同一资源存在依赖关系的虚拟CPU同时调度,或者,将无需调度的虚拟CPU与其他对同一资源存在依赖关系的虚拟CPU同时调度,对同一资源并没有依赖关系的虚拟CPU的调度或者对无需调度的虚拟CPU的调度会浪费物理CPU这一资源,因此,在本实施例中,可以只将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行,而对隶属于该虚拟机的其他不可使用调度族机制的多个虚拟CPU不予调度。如附图4所示,隶属于虚拟机2(图中标识为VM-2)的虚拟CPU-4(图中标识为VCPU-4)和虚拟CPU-5(图中标识为VCPU-5)为可使用调度族机制的虚拟CPU,而隶属于VM-2的虚拟CPU-6(图中标识为VCPU-6)为不可使用调度族机制的虚拟CPU或者无需调度的虚拟CPU,则只将VCPU-4和VCPU-5同时调度至主机(Host)对应的物理CPU-3(图中标识为PCPU-3)执行,而对VCPU-6不予调度,由此,节省了调度VCPU-6实现后对物理CPU的资源浪费。
作为本申请一个实施例,上述将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行可通过如图5示例的步骤S501至步骤S503实现:
步骤S501:读取当前计算节点的配置文件。
在本申请实施例中,当前计算节点是虚拟CPU的硬件载体,其配置文件中是关于一些关键字段的定义或声明,例如,关于调度族机制的关键字段的定义或声明,可以通过配置这些关键字段的值来实现某种功能。
步骤S502:通过当前计算节点的配置文件中关于调度族机制的关键字段的值,判断当前计算节点是否已启动调度族机制。
如前所述,可以通过配置当前计算节点的配置文件中关键字段的值来实现某种功能。以配置文件中关于调度族机制的关键字段schduler_group为例,该关键字段只有两个值可以配置即逻辑“1”和“0”,当schduler_group=1即关于调度族机制的关键字段的值配置为1时,判断当前计算节点已启动调度族机制,否则,当前计算节点未启动调度族机制。
步骤S503:若当前计算节点已启动调度族机制,则将当前计算节点上隶属于同一调度族的多个虚拟CPU同时调度至对应的物理CPU执行。
在本申请实施例中,调度族是一种逻辑集合,该逻辑集合声明了一个虚拟CPU族,该虚拟CPU族是一组对同一资源有依赖关系的虚拟CPU,换言之,调度族中声明的虚拟CPU都是对同一资源有依赖关系的虚拟CPU的集合。在说明步骤S503之前,先对本申请涉及的虚拟机控制结构(Virtual Machine Control Structure,VMCS)这一比较重要概念予以说明。VMCS是保存在内存中的数据结构,其包括虚拟CPU的相关寄存器的内容和相关的控制信息,在发生VM Entry或VMExit(客户机操作系统即Guest OS的内核运行环境从根模式切换至非根模式叫VMEntry,从非根模式切换至根环境叫VMExit)时,物理CPU都会查询和更新VMCS;VMM也可通过指令来配置VMCS,以达到对虚拟CPU的管理;每个虚拟CPU都对应于一个VMCS。VMCS的架构如附图6所示,主要包含主机状态域(Host State Area)、客户机状态域(GuestState Area)和执行控制域(Control Data Area),其中,主机状态域保存了VMM运行时的状态(主要是一些寄存器的值),在VMExit时由物理CPU装载,客户机状态域保存了虚拟机运行时的状态,在VMEntry时由物理CPU装载,在VMExit时由物理CPU保存,执行控制域主要包含虚拟机执行控制子域、VMExit控制子域、VMEntry控制子域和VMExit信息子域等四部分,用于对虚拟CPU的运行行为进行控制,是VMM对虚拟CPU进行配置较为复杂的一部分。
在本申请实施例中,主要是通过对VMCS的配置来实现调度族机制,具体而言,可以将调度族信息配置到每个虚拟CPU的VMCS中,每个VMCS中的调度族信息记录了该VMCS对应的虚拟CPU属于哪些调度族这一对应关系,这个记录是一个动态的过程,即VMM根据虚拟CPU与某个调度族的实际隶属或对应关系,向该虚拟CPU的VMCS添加调度族信息。在确定当前计算节点已启动调度族机制之后,VMM在接收到调度某个虚拟CPU的请求时,通过查询该虚拟CPU的VMCS,将当前计算节点上隶属于同一调度族的多个虚拟CPU同时调度至对应的物理CPU执行。以附图7为例,虚拟机1(图中以VM-1标识)包含虚拟CPU-1(图中以VCPU-1标识)、虚拟CPU-2(图中以VCPU-2标识)和虚拟CPU-3(图中以VCPU-3标识),虚拟机2(图中以VM-2标识)包含虚拟CPU-4(图中以VCPU-4标识)和虚拟CPU-5(图中以VCPU-5标识),虚拟机3(图中以VM-3标识)包含虚拟CPU-6(图中以VCPU-6标识)、虚拟CPU-7(图中以VCPU-7标识)和虚拟CPU-8(图中以VCPU-8标识)。当前计算节点上的VMM通过查询VCPU-1至VCPU-8各自的VMCS(分别以VMCS-1至VMCS-8表示),获知VCPU-1和VCPU-2隶属于调度族1(记为schduler_group-1),VCPU-4隶属于调度族2(记为schduler_group-2),而VCPU-6和VCPU-8隶属于调度族3(记为schduler_group-3),则VMM将隶属于schduler_group-1的VCPU-1和VCPU-2同时调度至主机对应的物理CPU(即PCPU-1)执行,将隶属于schduler_group-2的VCPU-4调度至对应的物理CPU(即PCPU-3)执行,将隶属于schduler_group-3的VCPU-6和VCPU-7同时调度至对应的物理CPU(即PCPU-4)执行。
以上是在判断到当前计算节点上的虚拟CPU在调度实现后会导致虚拟CPU之间的同步时延的处理策略,以下说明判断当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延的处理策略。
如前所述,每个虚拟CPU是通过获取系统分配的物理CPU时间片来实现类似于物理CPU的功能。考虑到调度开始时,某个虚拟CPU抢占分配的物理CPU时间片会导致对调度其他虚拟CPU的不公平,在本申请一个实施例中,若判断当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则设置调度时间窗口,该调度时间窗口的结束时刻晚于为每个虚拟CPU实际分配的物理CPU时间片的结束时刻。
为了保障调度优先级高的虚拟CPU得以先行调度,在本申请另一实施例中,若当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则生成各个虚拟CPU相应的调度优先级;根据各个虚拟CPU相应的调度优先级,优先将调度优先级高的虚拟CPU调度至对应的物理CPU执行。
作为本申请一个实施例,上述生成各个虚拟CPU相应的调度优先级可以是:分别获取各个虚拟CPU的状态信息,并为每个虚拟CPU分配指定的紧急度Urgency值,根据各个虚拟CPU的状态信息和为每个虚拟CPU分配的Urgency值生成各个虚拟CPU相应的调度优先级。具体地,根据各个虚拟CPU的状态信息和为每个虚拟CPU分配的Urgency值生成各个虚拟CPU相应的调度优先级可以是:根据各个虚拟CPU的状态信息的优先级对各个虚拟CPU进行排序,根据排序的结果生成各个虚拟CPU相应的调度优先级。
在本申请实施例中,虚拟CPU的状态信息包括boost、urgent、under、over和idle等状态。当某个虚拟CPU仍然具有剩余的信用值,且该虚拟CPU运行了实时任务时,则该虚拟CPU的状态会被指派为urgent状态。此外,对于虚拟CPU的其它状态信息,当某个虚拟CPU仍然具有剩余的信用值时,则该虚拟CPU的状态会被指派为under状态当某个虚拟CPU的信用值已用完时,则该虚拟CPU的状态会被指派为over状态;当某个虚拟CPU此时不需要PCPU时,则该虚拟CPU的状态会被指派为idle状态;当某个虚拟CPU处于idle状态,且该虚拟CPU接收到了I/O事件时,则该虚拟CPU的状态会被指派为boost状态;当某个虚拟CPU处于idle状态,且该VCPU接收到了I/O事件时,则该虚拟CPU的状态会被指派为boost状态。
为了保证物理CPU及时响应实时任务,为每个虚拟CPU分配指定的紧急度Urgency值。其中,Urgency值为小于等于10的自然数。在本申请实施例中,是通过Urgency值来衡量这些虚拟CPU的实时任务的紧急度,Urgency值越大,虚拟CPU实时任务的紧急度越高。应当理解的是,Urgency值的默认值是0,也就是说,如果某个虚拟CPU处于boost状态,或者under状态,或者over状态,或者idle状态时,为该虚拟CPU分配指定的Urgency值为0,这意味着该虚拟CPU上的任务并不是实时的,可以推迟处理,其中,虚拟CPU的Urgency值可以是用户设定的,或者是任务中被指定的。
可以根据各个虚拟CPU状态信息的优先级对各个虚拟CPU进行排序,并根据排序的结果按照虚拟CPU状态信息的优先级从高至低的顺序生成各个虚拟CPU相应的调度优先级。其中,虚拟CPU的状态信息的优先级为boost状态的优先级>urgent状态的优先级>under状态的优先级>over状态的优先级>idle状态的优先级。然后,物理CPU可根据各个虚拟CPU相应的调度优先级,选择调度优先级高的虚拟CPU执行任务。此外,如果其中某些虚拟CPU的具有相同的状态信息,则根据VCPU被分配指定的Urgency值对这些虚拟CPU进行排序,并根据排序结果按照虚拟CPU的Urgency值从高至低的顺序生成各个虚拟CPU相应的调度优先级。换言之,本申请实施例中的方法是通过参考虚拟CPU状态信息和虚拟CPU的Urgency值相结合的方式,对虚拟CPU的任务的执行顺序进行排序。
在本申请另一实施例中,若判断当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则统计虚拟CPU的使用信息,确定虚拟CPU的综合使用率,根据当前分配虚拟CPU的最大个数和虚拟CPU的综合使用率,调整当前分配的虚拟CPU的个数,其中,虚拟CPU的使用信息包括虚拟CPU的利用率和虚拟CPU的使用时间占用率,本实施例在系统负载比较轻时可以节省物理CPU的资源浪费,在系统负载比较重时,可通过增加虚拟CPU的数量,从而提升整体系统性能。
从上述附图1示例的调度虚拟CPU的方法可知,不同于现有调度VCPU的技术方案因为使用了锁机制而出现VCPU之间的通信和同步延时问题,本发明的技术方案在预测当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。由于不同虚拟机的虚拟CPU一般不存在同步时延问题,而同一虚拟机的多个虚拟CPU的调度容易出现同步延时问题,因此,当隶属于同一虚拟机的多个虚拟CPU同时被调度时,则多个虚拟CPU之间的同步不再延时,尤其在云计算和大数据等场景下,当虚拟机负载不可避免地增高、虚拟CPU频繁被调度时,本申请的技术方案极大地降低了虚拟CPU之间的等待时间,提高了并行计算的效率。
请参阅附图8,是本申请实施例提供的一种调度虚拟CPU的装置的结构示意图,该装置可以集成在终端等计算机设备中,该装置包括接收模块801、判断模块802和并行调度模块803,其中:
接收模块801,用于接收调度虚拟CPU的请求;
判断模块802,用于根据接收模块801所接收到的调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;
并行调度模块803,用于若判断模块802的判断结果为当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
在一种可能实现方式中,上述并行调度模块803具体用于读取当前计算节点的配置文件;通过配置文件中关于调度族机制的关键字段的值,判断当前计算节点是否已启动调度族机制;若当前计算节点已启动调度族机制,则将当前计算节点上隶属于同一调度族的多个虚拟CPU同时调度至对应的物理CPU执行。
在一种可能实现方式中,上述示例的装置还可以包括时间窗口设置模块,用于若判断模块802的判断结果为当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则设置调度时间窗口,其中,调度时间窗口的结束时刻晚于为每个虚拟CPU实际分配的物理CPU时间片的结束时刻。
在一种可能实现方式中,上述示例的装置还可以包括调度优先级生成模块和优先调度模块,其中:
调度优先级生成模块,用于若判断模块802的判断结果为当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则生成各个虚拟CPU相应的调度优先级;
优先调度模块,用于根据各个虚拟CPU相应的调度优先级,优先将调度优先级高的虚拟CPU调度至对应的物理CPU执行。
在一种可能实现方式中,上述生成各个虚拟CPU相应的调度优先级可以是:分别获取各个虚拟CPU的状态信息,并为每个虚拟CPU分配指定的紧急度Urgency值;根据各个虚拟CPU的状态信息和为每个虚拟CPU分的Urgency值生成各个虚拟CPU相应的调度优先级。
在一种可能实现方式中,上述根据各个虚拟CPU的状态信息和为每个虚拟CPU分的Urgency值生成各个虚拟CPU相应的调度优先级可以是:根据各个虚拟CPU的状态信息的优先级对各个虚拟CPU进行排序;根据排序的结果生成各个虚拟CPU相应的调度优先级。
在一种可能实现方式中,上述示例的装置还可以包括统计模块和调整模块,其中:
统计模块,用于若判断模块802的判断结果为当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则统计虚拟CPU的使用信息,确定虚拟CPU的综合使用率,其中,虚拟CPU的使用信息包括虚拟CPU的利用率和虚拟CPU的使用时间占用率;
调整模块,用于根据当前分配虚拟CPU的最大个数和虚拟CPU的综合使用率,调整当前分配的虚拟CPU的个数。
需要说明的是,上述实施例提供的调度虚拟CPU的装置在分析程序接口时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的调度虚拟CPU的装置与调度虚拟CPU的方法实施例属于同一构思,其具体实现过程以及技术效果详见方法实施例,此处不再赘述。
本申请实施例还提供一种计算机设备,该计算机设备可以为终端或者服务器等设备,如图9所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、电源903和输入单元904等部件。本领域技术人员可以理解,图9中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器901可包括一个或多个处理核心;优选的,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
计算机设备还包括给各个部件供电的电源903,可选地,电源903可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元904,该输入单元904可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能,如下:接收调度虚拟CPU的请求;根据调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;若判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
以上个操作的具体实施例可参见前面的实施例,在此不再赘述。
由以上可知,不同于现有调度VCPU的技术方案因为使用了锁机制而出现VCPU之间的通信和同步延时问题,本发明的技术方案在判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,将隶属于同一虚拟机的多个虚拟CPU同时调度至对应的物理CPU执行。由于不同虚拟机的虚拟CPU一般不存在同步时延问题,而同一虚拟机的多个虚拟CPU的调度容易出现同步延时问题,因此,当隶属于同一虚拟机的多个虚拟CPU同时被调度时,则多个虚拟CPU之间的同步不再延时,尤其在云计算和大数据等场景下,当虚拟机负载不可避免地增高、虚拟CPU频繁被调度时,本申请的技术方案极大地降低了虚拟CPU之间的等待时间,提高了并行计算的效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种调度虚拟CPU的方法中的步骤。例如,该指令可以执行如下步骤:接收调度虚拟CPU的请求;根据调度虚拟CPU的请求,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;若判断当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行。
以上各个操作的具体实施方式可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种调度虚拟CPU的方法中的步骤,因此,可以实现本申请实施例所提供的任一种调度虚拟CPU的方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种调度虚拟CPU的方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种调度虚拟CPU的方法,其特征在于,所述方法包括:
接收调度虚拟CPU的请求,所述调度虚拟CPU的请求至少包括各个虚拟CPU的依赖关系;
根据所述调度虚拟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执行。
3.如权利要求1或2所述调度虚拟CPU的方法,其特征在于,所述方法还包括:
若判断所述当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则设置调度时间窗口,所述调度时间窗口的结束时刻晚于为每个虚拟CPU实际分配的物理CPU时间片的结束时刻。
4.如权利要求1或2所述调度虚拟CPU的方法,其特征在于,所述方法还包括:
若判断所述当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则生成各个虚拟CPU相应的调度优先级;
根据所述各个虚拟CPU相应的调度优先级,优先将所述调度优先级高的虚拟CPU调度至对应的物理CPU执行。
5.如权利要求4所述调度虚拟CPU的方法,其特征在于,所述生成各个虚拟CPU相应的调度优先级,包括:
分别获取所述各个虚拟CPU的状态信息,并为每个所述虚拟CPU分配指定的紧急度Urgency值;
根据所述状态信息和所述Urgency值生成各个虚拟CPU相应的调度优先级。
6.如权利要求5所述调度虚拟CPU的方法,其特征在于,所述根据所述状态信息和所述Urgency值生成各个虚拟CPU相应的调度优先级,包括:
根据所述各个虚拟CPU的状态信息的优先级对所述各个虚拟CPU进行排序;
根据所述排序的结果生成所述各个虚拟CPU相应的调度优先级。
7.一种调度虚拟CPU的装置,其特征在于,所述装置包括:
接收模块,用于接收调度虚拟CPU的请求,所述调度虚拟CPU的请求至少包括各个虚拟CPU的依赖关系;
判断模块,用于根据所述调度虚拟CPU的请求中对同一资源存在依赖关系的多个虚拟CPU,判断当前计算节点上的虚拟CPU在调度实现后是否导致虚拟CPU之间的同步时延;
并行调度模块,用于若所述判断模块的判断结果为所述当前计算节点上的虚拟CPU在调度实现后导致虚拟CPU之间的同步时延,则将隶属于同一虚拟机且可使用调度族机制的多个虚拟CPU同时调度至对应的物理CPU执行;若判断所述当前计算节点上的虚拟CPU在调度实现后不会导致虚拟CPU之间的同步时延,则统计所述虚拟CPU的使用信息,确定所述虚拟CPU的综合使用率,所述虚拟CPU的使用信息包括所述虚拟CPU的利用率和所述虚拟CPU的使用时间占用率;根据当前分配所述虚拟CPU的最大个数和所述虚拟CPU的综合使用率,调整当前分配的所述虚拟CPU的个数。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295699.4A CN111459622B (zh) | 2020-04-15 | 2020-04-15 | 调度虚拟cpu的方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295699.4A CN111459622B (zh) | 2020-04-15 | 2020-04-15 | 调度虚拟cpu的方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459622A CN111459622A (zh) | 2020-07-28 |
CN111459622B true CN111459622B (zh) | 2023-10-13 |
Family
ID=71677204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010295699.4A Active CN111459622B (zh) | 2020-04-15 | 2020-04-15 | 调度虚拟cpu的方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459622B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032154B (zh) * | 2021-04-19 | 2023-11-07 | 深信服科技股份有限公司 | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 |
CN112988399B (zh) * | 2021-04-30 | 2021-07-20 | 成都网安科技发展有限公司 | 基于虚拟化技术的处理器调度方法和处理器调度装置 |
CN113760455A (zh) * | 2021-08-13 | 2021-12-07 | 北京和利时系统工程有限公司 | 一种实现虚拟化资源调度的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470635A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种多虚拟处理器同步调度的方法及计算机 |
WO2016078178A1 (zh) * | 2014-11-23 | 2016-05-26 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN106250217A (zh) * | 2016-07-22 | 2016-12-21 | 无锡华云数据技术服务有限公司 | 一种多虚拟处理器间的同步调度方法及其调度系统 |
-
2020
- 2020-04-15 CN CN202010295699.4A patent/CN111459622B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470635A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种多虚拟处理器同步调度的方法及计算机 |
WO2016078178A1 (zh) * | 2014-11-23 | 2016-05-26 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN106250217A (zh) * | 2016-07-22 | 2016-12-21 | 无锡华云数据技术服务有限公司 | 一种多虚拟处理器间的同步调度方法及其调度系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111459622A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
JP6646114B2 (ja) | 動的仮想マシンサイジング | |
US9442760B2 (en) | Job scheduling using expected server performance information | |
Cho et al. | Natjam: Design and evaluation of eviction policies for supporting priorities and deadlines in mapreduce clusters | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
CN111459622B (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
US8914805B2 (en) | Rescheduling workload in a hybrid computing environment | |
US10572282B2 (en) | Implicit co-scheduling of CPUs | |
US9454389B2 (en) | Abstracting a multithreaded processor core to a single threaded processor core | |
US9195506B2 (en) | Processor provisioning by a middleware processing system for a plurality of logical processor partitions | |
US7698540B2 (en) | Dynamic hardware multithreading and partitioned hardware multithreading | |
Hashem et al. | MapReduce scheduling algorithms: a review | |
US9875139B2 (en) | Graphics processing unit controller, host system, and methods | |
US20100131956A1 (en) | Methods and systems for managing program-level parallelism | |
CN108885559B (zh) | 在多个处理器之间快速转移工作负载 | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
De Alfonso et al. | An energy management system for cluster infrastructures | |
US11537429B2 (en) | Sub-idle thread priority class | |
US9384050B2 (en) | Scheduling method and scheduling system for multi-core processor system | |
Yu et al. | Colab: a collaborative multi-factor scheduler for asymmetric multicore processors | |
US20150212859A1 (en) | Graphics processing unit controller, host system, and methods | |
CN115408117A (zh) | 协程运行方法、装置、计算机设备和存储介质 | |
Monaco et al. | Shared resource orchestration extensions for kubernetes to support real-time cloud containers | |
US20220129327A1 (en) | Latency sensitive workload balancing | |
Fan | Session scheduling algorithm of grid computing |
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 |