CN114168271A - 一种任务调度方法、电子设备及存储介质 - Google Patents
一种任务调度方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114168271A CN114168271A CN202111640930.XA CN202111640930A CN114168271A CN 114168271 A CN114168271 A CN 114168271A CN 202111640930 A CN202111640930 A CN 202111640930A CN 114168271 A CN114168271 A CN 114168271A
- Authority
- CN
- China
- Prior art keywords
- core
- virtual
- task
- target
- virtual core
- 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.)
- Granted
Links
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/505—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 considering the load
-
- 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)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种任务调度方法、电子设备及存储介质,包括:根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,虚拟机配置在用户态环境中,各虚拟机包括至少一个虚拟核,每个虚拟核对应绑定一个物理核;通过硬件寄存器配置目标虚拟核的虚拟核任务配置数据;其中,虚拟核任务配置数据包括全局中断使能掩码状态;根据多任务多核实时调度策略确定各目标虚拟核调度的目标待处理任务;通过目标虚拟核根据虚拟核任务配置数据执行目标待处理任务。本发明实施例的技术方案能够实现在用户态环境中调度处理多任务,从而提高多核处理器的物理核资源使用率和任务调度处理的实时性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种任务调度方法、装置、电子设备及存储介质。
背景技术
多核技术就是一块处理器芯片上包含多个“执行内核”,该执行内核也可称为物理核,能够使处理器芯片彻底且完全地并发执行程序的多个任务。从操作***的角度来看,多核处理器就如同是多个处理器,它把多核处理器的每一个物理核看作是一个单一的拥有所有相关资源的典型处理器,可以单独调度处理任务。
当需要利用多核处理器调度处理多任务时,任务可以指定在任意一个物理核上运行,也可以绑定运行在一个指定的物理核上运行。由于任务可在任意一个物理核上运行,为了保证多任务在多核环境下对全局资源访问的互斥性,需要在禁止当前物理核全局中断的情况下获取物理核索引号来访问全局资源。由于物理核全局中断的开关只能在核心态访问,用户态是不能直接访问的,为了保证***的性能,所以当前多核处理器执行多任务多核实时调度算法都是在核心态环境下实现的。
发明人在实现本发明的过程中,发现现有技术存在如下缺陷:在核心态环境下由多核处理器调度执行多任务,在任务调度执行过程中,需要由用户态切换至核心态环境,该切换操作需要消耗物理核资源,且会产生一定的时延,因此会降低多核处理器的物理核资源使用率和任务调度处理的实时性。
发明内容
本发明实施例提供一种任务调度方法、装置、电子设备及存储介质,能够实现在用户态环境中调度处理多任务,从而提高多核处理器的物理核资源使用率和任务调度处理的实时性。
第一方面,本发明实施例提供了一种任务调度方法,包括:
根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;
通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;
根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;
通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
第二方面,本发明实施例还提供了一种任务调度装置,包括:
目标虚拟核确定模块,用于根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;
虚拟核任务配置数据配置模块,用于通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;
目标待处理任务确定模块,用于根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;
目标待处理任务执行模块,用于通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的任务调度方法。
第四方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的任务调度方法。
本发明实施例通过根据预设虚拟核调度策略从配置在用户态环境中的多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,通过硬件寄存器配置目标虚拟核的全局中断使能掩码状态等虚拟核任务配置数据,并根据多任务多核实时调度策略确定各目标虚拟核调度的目标待处理任务,以通过各目标虚拟核根据配置的虚拟核任务配置数据执行目标待处理任务,能够避免在核心态环境中由多核处理器调度执行多任务,解决现有在核心态环境下由多核处理器调度执行多任务产生的物理核资源使用率和任务调度处理的实时性较低等问题,实现在用户态环境中调度处理多任务,从而提高多核处理器的物理核资源使用率和任务调度处理的实时性。
附图说明
图1是本发明实施例一提供的一种任务调度方法的流程图;
图2是本发明实施例一提供的一种虚拟机与物理核的绑定关系效果示意图;
图3是本发明实施例二提供的一种任务调度方法的流程图;
图4是本发明实施例二提供的一种多核***基于多虚拟机多核实时调度算法调度执行任务的流程示意图;
图5是本发明实施例二提供的一种一个物理核可运行的时间调度表的结构示意图;
图6是本发明实施例二提供的一种多个物理核可运行的时间调度表的结构示意图;
图7是本发明实施例二提供的一种优先级管理位图的效果示意图;
图8是本发明实施例二提供的一种私有任务队列和全局任务队列的效果示意图;
图9是本发明实施例三提供的一种任务调度装置的示意图;
图10为本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本发明实施例的说明书和权利要求书及附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
实施例一
图1是本发明实施例一提供的一种任务调度方法的流程图,本实施例可适用于在用户态环境中由多核处理器调度执行多任务的情况,该方法可以由任务调度装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在电子设备中,该电子设备可以是终端设备,也可以是服务器设备,本发明实施例并不对电子设备的具体设备类型进行限定。相应的,如图1所示,该方法包括如下操作:
S110、根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核。
其中,虚拟机是对一个相对独立的空间、时间以及设备资源的抽象,形成一个尽可能与真实独立计算机资源相接近的实体,配置于用户态环境(处理器的一种执行模式)中。虚拟机和虚拟机之间通过微内核实现了空间、时间以及中断资源等的隔离。一个虚拟机可以同时运行在同一处理器的多个物理核上。虚拟核是指***级的虚拟化技术,***级虚拟化的核心是构建虚拟机,然后在其上创建虚拟核,将本来直接运行于实际硬件平台的操作***放在虚拟机里运行。虚拟核被抽象为一个运行单位,具有状态、优先级、调度策略以及运行上下文等属性。通过虚拟机可以在单个物理机上运行多个虚拟核,且运行在各个虚拟机的应用之间具有较好的隔离性和扩展性。预设虚拟核调度策略可以是从虚拟机内的虚拟核中确定被物理核调度的虚拟核的策略,可以是任意可用的虚拟机调度策略,如基于优先级的调度策略或基于时间表的调度策略等,只要能够完成对目标虚拟核的调度即可,本发明实施例并不对预设虚拟核调度策略的具体策略内容进行限定。目标虚拟核也即物理核需要调度的虚拟核。
首先,本实施例的技术方案主要适用于这样一种应用场景:虚拟机多核通过虚拟核技术支持虚拟机可以运行在多个物理核上。图2是本发明实施例一提供的一种虚拟机与物理核的绑定关系效果示意图。在一个具体的例子中,如图2所示,虚拟机(简称为VM,VM1即表示虚拟机1)绑定运行在n个物理核时,此虚拟机则包括n个虚拟核,一个虚拟核只能绑定运行在一个物理核上,例如,主虚拟核运行在CPU(Central Processing Unit/Processor,中央处理器)0,从虚拟核1运行在CPU2等。虚拟机的n个虚拟核包括一个主虚拟核和n-1个从虚拟核,从而支持虚拟机内的多核。所有虚拟机至少包括一个主虚拟核。主虚拟核绑定运行在虚拟机物理核运行集合的最小索引号物理核上,即虚拟机主物理核;从虚拟核依次绑定运行其它物理核上,即虚拟机从物理核。启动虚拟机时,总是先启动主虚拟核,由虚拟机内的应用程序来启动其从虚拟核。
虚拟机属性中配置虚拟机运行的物理核集合,即物理核亲和属性,包括如下两种情况:(1)虚拟机绑定运行在一个物理核上;(2)虚拟机绑定运行在多个物理核上。
当虚拟机配置为亲和运行在多个物理核上,操作***微内核在初始化时,需要为此虚拟机创建1个主虚拟核和(亲和运行的物理核个数减1)个从虚拟核。从虚拟核与主虚拟核会使用相同的虚拟机名称、虚拟机ID、地址空间、调度类型、调度优先级以及时间片。从虚拟核与主虚拟核一样参与虚拟机调度,从虚拟核与主虚拟核有各自独立的绑定运行的物理核索引号、虚拟核索引号、***栈以及虚拟核状态。物理核索引号为虚拟核绑定运行的物理核的索引号。虚拟核索引号是在虚拟核组内,虚拟核的索引号,主虚拟核的虚拟核索引号可以为0,从虚拟核的虚拟核索引号为1、2、3、......、虚拟机亲和运行的物理核个数减1。
对于虚拟机内的多核运行环境来说,每个虚拟核即是一个处理器核,此处理器核即是虚拟机的虚拟核,虚拟机内处理器核的索引号即是虚拟核索引号。同一虚拟机内的所有虚拟核的入口代码都一样,在入口代码处根据虚拟核索引号来区分当前虚拟核是主虚拟核还是从虚拟核。这样为虚拟机内的多核运行环境提供多核支持。第一个运行的虚拟核对于分区内的多核操作***来说是主核,从虚拟核则是从核。如果是主虚拟核,则完成虚拟机内多核运行环境相关功能的初始化并启动从虚拟核。
在本发明实施例中,核心态(内核态)的物理核可以采用多虚拟机多核实时调度的方式来调度任务并执行,由于虚拟机的虚拟核运行在用户态,因此可以实现在用户态环境中调度执行多任务,从而避免在核心态环境中由多核处理器调度执行多任务,减少用户态到核心态的切换流程。具体的,物理核采用多虚拟机多核实时调度方法调度任务时,可以首先根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定每个物理核可以调度的目标虚拟核,以通过目标虚拟核在用户态环境中来执行需要调度处理的任务。可以理解的是,一个虚拟核只能被一个物理核所调度。
S120、通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态。
其中,虚拟核任务配置数据可以是通过硬件寄存器为目标虚拟核配置的,用于支持目标虚拟核在用户态环境中调度处理任务的相关数据。全局中断使能掩码状态也即全局中断使能掩码的取值,可以是使能状态,也可以禁止状态。
为了解决物理核全局中断的开关只能在核心态访问,用户态不能直接访问的问题,本发明实施例引入了硬件寄存器配合用户态访问全局中断的开关。也即,可以通硬件寄存器配置目标虚拟核的虚拟核任务配置数据,具体可以是配置目标虚拟核的全局中断使能掩码状态,使得目标虚拟核处理任务时,可以在用户态环境中通过硬件寄存器配置的全局中断使能掩码状态访问全局中断的开关,也即在虚拟机用户态环境下直接使用硬件寄存器来禁止和使能全局中断,进而实现多核处理器在用户态环境下执行多任务多核实时调度策略。
在本发明实施例中,并不是所有硬件寄存器都能够被使用,可选的,选择的硬件寄存器需要满足如下要求:(1)、工具链将当前***下C语言转换的汇编代码没有使用此硬件寄存器。(2)、当前***下汇编语言中没有使用的硬件寄存器。
S130、根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务。
其中,多任务多核实时调度策略也即通过多个虚拟核调度处理多个任务的策略。目标待处理任务可以是目标虚拟核当前可以调度处理的任务。任务可以是处理器可以处理的各种类型的任务,本发明实施例并不对处理器调度处理的任务类型进行限定。
相应的,在确定每个物理核可以调度的目标虚拟核之后,可以进一步根据多任务多核实时调度策略确定每个目标虚拟核可以调度处理的目标待处理任务。可以理解的是,一个目标虚拟核当前可以处理一个目标待处理任务。
其中,多任务多核实时调度策略可以是任意可用的任务调度策略,任务调度策略可以使用不同的策略达成相应的调度目标,例如可以包括但不限于时间片、非抢占式优先级调度以及抢占式优先级调度算法等调度策略等。
S140、通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
相应的,在确定每个目标虚拟核可以调度处理的目标待处理任务,即可通过每个目标虚拟核根据硬件寄存器配置的全局中断使能掩码状态等虚拟核任务配置数据执行匹配的目标待处理任务,最终实现在用户态环境下多核多任务的处理流程。
本发明实施例通过根据预设虚拟核调度策略从配置在用户态环境中的多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,通过硬件寄存器配置目标虚拟核的全局中断使能掩码状态等虚拟核任务配置数据,并根据多任务多核实时调度策略确定各目标虚拟核调度的目标待处理任务,以通过各目标虚拟核根据配置的虚拟核任务配置数据执行目标待处理任务,能够避免在核心态环境中由多核处理器调度执行多任务,解决现有在核心态环境下由多核处理器调度执行多任务产生的物理核资源使用率和任务调度处理的实时性较低等问题,实现在用户态环境中调度处理多任务,从而提高多核处理器的物理核资源使用率和任务调度处理的实时性。
实施例二
图3是本发明实施例二提供的一种任务调度方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,给出了根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核以及根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务的多种具体可选的实现方式。相应的,如图3所示,本实施例的方法可以包括:
S210、根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核。
图4是本发明实施例二提供的一种多核***基于多虚拟机多核实时调度算法调度执行任务的流程示意图。在一个具体的例子中,如图4所示,每个虚拟机可以配置与物理核对应的绑定关系,从而根据虚拟机与物理核对应的绑定关系自动获取虚拟核与物理核的绑定关系。虚拟机的数量为至少一个,虚拟机内的虚拟内核的数量也可以为至少一个。其中,虚拟核1表示主虚拟核,虚拟核2至虚拟核n表示从虚拟核。多核***在创建任务时,需要对每个任务配置其运行的虚拟核,例如,任务1运行在虚拟核1上,任务2运行在虚拟核3上等。
可选的,所述预设虚拟核调度策略可以包括时间表调度策略,时间表调度策略可以适用于配置有多个虚拟机的情况。
其中,时间表调度策略也即根据虚拟核配置的时间调度表确定各物理核待调度的目标虚拟核的策略。时间表调度策略可以设定多个定时器,其中,第一定时器的时长为主帧时间,第二定时器按照主帧时间内的多个时间窗的前后顺序逐次启动,并且第二定时器的时长逐次与各时间窗的时长相同;以主帧时间为周期,启动第一定时器和第二定时器的同时,根据时间表的设定调度控制程序,一旦第二定时器的定时到达,调度下一个控制程序,且一旦第一定时器的定时到达,启动下一个周期,时间表包括多个时间窗的起止时间和各时间窗对应的控制程序。
相应的,根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,可以包括:确定各所述物理核预先配置的时间调度表;确定各所述时间调度表中各所述物理核在当前时间窗口匹配的预置虚拟核;将所述当前时间窗口匹配的预置虚拟核确定为各所述物理核待调度的目标虚拟核。
其中,时间调度表可以是每个物理核在各个时间窗口调度对应虚拟核的列表。预置虚拟核可以是时间调度表中每个时间窗口配置设定的虚拟核。
在本发明实施例中,如果需要利用时间表调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,则需要对每个物理核预先配置时间调度表。一个物理核可以配置多个时间调度表,如果物理核配置了多个要启动的时间调度表,那么***只启动最后配置的要启动的时间调度表,并且在任何时刻每个物理核上至多有一个时间调度表参与调度。时间调度表的配置属性可以包括但不限于时间调度表名称、时间调度表的允许最大的时间调度窗口数、主帧时间及是否自动启动等内容。时间调度表中需配置时间窗口,一个时间窗口对应一个虚拟核的运行时间,时间窗口的属性可以包括但不限于当前时间窗口运行的虚拟核、时间窗口开始时间以及时间窗口长度。
图5是本发明实施例二提供的一种一个物理核可运行的时间调度表的结构示意图。在一个具体的例子中,如图5所示,在一个时间调度表中可配置多个时间窗口,但总的时间窗口不能大于时间调度表中最大窗口数,并且所有时间窗口的时间长度不能大于主帧时间长度。虚拟核的时间调度表调度,应根据配置的时间调度表进行调度,时间调度表按照主帧时间进行配置,调度时反复执行相同的主帧,一个虚拟核可以在主帧里有多个时间窗口。一个时间调度表里只能配置同一虚拟机的一个虚拟核。时间调度表中统一时间窗口内配置的虚拟机相同,但调度的虚拟核不同。
图6是本发明实施例二提供的一种多个物理核可运行的时间调度表的结构示意图。在一个具体的例子中,如图6所示,假设共有两个物理核即物理核0(主物理核)和物理核1(从物理核),其中,物理核0的时间调度表如图6标号为(1)的子图所示,物理核1的时间调度表如图6标号为(2)的子图所示。两个物理核需要根据各自运行的时间调度表对当前窗口时间进行匹配,以确定各物理核在当前时间窗口匹配的预置虚拟核,并将当前时间窗口匹配的预置虚拟核确定为各所述物理核待调度的目标虚拟核。示例性的,如图6所示,假设当前时间窗口为时间调度表中的第一个时间窗口,则物理核0在当前时间窗口可以调度虚拟机1的虚拟核0作为目标虚拟核,物理核1在当前时间窗口可以调度虚拟机1的虚拟核1作为目标虚拟核。
可选的,所述预设虚拟核调度策略还可以包括优先级调度策略,优先级调度策略可以适用于配置有单个虚拟机的情况。
其中,时间表调度策略也即根据虚拟核配置的优先级确定各物理核待调度的目标虚拟核的策略。
相应的,根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,可以包括:获取优先级管理位图;根据所述优先级主索引号位图确定最高优先级的主索引号;根据所述优先级次索引号位图和所述最高优先级的主索引号确定最高优先级的次索引号;根据所述最高优先级的主索引号和所述最高优先级的次索引号确定各所述物理核待调度的目标虚拟核。
其中,所述优先级管理位图包括优先级主索引号位图和优先级次索引号位图。
其中,优先级主索引号位图和优先级次索引号位图可以是两种不同形式的索引号位图,优先级主索引号位图可以用于确定优先级次索引号位图待处理的位图行号,优先级次索引号位图则可以用于确定各物理核待调度的目标虚拟核。
在本发明实施例中,当使用优先级调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核时,可以为每个虚拟核配置对应的优先级。基于优先级调度策略确定各物理核待调度的目标虚拟核可以是对各物理核确定待调度的最高优先级的虚拟核。可选的,优先级范围可以为0-255,其中0级最高,255最低。虚拟核的优先级调度可以使用256条就绪链表来管理进行优先级调度的就绪虚拟核,每个优先级的虚拟核可以对应配置一个就绪链表,当该虚拟核配置待处理的任务时,可以对该虚拟核的就绪链表中加入待处理的任务,该虚拟核可以被称为就绪虚拟核。同时,可以采用8x32位图的方式记录每条就绪链表上是否存在就绪虚拟核,因此选择优先级调度的最高优先级就绪虚拟核时不会因为虚拟核个数的增加而增大,对于优先级队列中优先级相同的虚拟核,可以按照时间片方式进行轮转。
图7是本发明实施例二提供的一种优先级管理位图的效果示意图,如图7所示,优先级管理位图中的优先级主索引号位图可以是一维8位的索引图,优先级次索引号位图可以是256位的索引图,优先级主索引号位图和优先级次索引号位图可以统称为8x32的优先级管理位图。在8x32的优先级管理位图中,优先级可以采用8位二进制的方式表示,优先级右移5位后的值0-7作为优先级主索引号,优先级低有效5位的值0-31作为优先级次索引号,使用8位图作为优先级主索引号位图,使用8组32位图作为优先级8个主索引号对应的次索引号位图,优先级次索引号位图为第主索引号组对应的32位图,位图中对应位的索引号为优先级的主索引号或者次索引号。
相应的,当基于优先级调度的虚拟核变为就绪态时,可以在优先级主索引号位图中将优先级主索引号对应的位置位1,在优先级次索引号位图中将优先级次索引号对应的位置位1,并且将就绪虚拟核加到对应优先级的就绪链表上。当基于优先级调度的就绪虚拟核变为非就绪态时,将非就绪虚拟核从对应优先级的就绪链表上删除。如果非就绪虚拟核对应优先级的就绪链表上没有虚拟核,则在优先级次索引号位图中将优先级次索引号对应的位清除。如果优先级次索引号位图中的每位值都为0,则在优先级主索引号位图中将优先级主索引号对应的位清除。
具体的,在获取优先级调度虚拟核的最高优先级就绪虚拟核时,可以首先根据优先级主索引号位图确定最高优先级的主索引号。如果优先级主索引号位图中的每位值都为0,则所有优先级调度的虚拟核放弃调度。否则,在优先级主索引号位图中获取位值为1的最低位索引号作为最高优先级的主索引号,进一步根据最高优先级的主索引号确定最高优先级次索引号位图中当前存在就绪虚拟核的行位置,并根据最高优先级次索引号位图中当前存在就绪虚拟核的行位置,确定最高优先级次索引号位图中值为1的位置位。可选的,可以在最高优先级次索引号位图中获取位值为1的最低位索引号作为最高优先级的次索引号。在根据最高优先级的主索引号和最高优先级的次索引号确定各物理核待调度的目标虚拟核时,可以将最高优先级的主索引号左移5位后的值加上最高优先级的次索引号得到最高优先级,进一步获取最高优先级虚拟核的就绪链表上的第一个虚拟核是参与优先级调度的最高优先级就绪虚拟核,也即物理核待调度的目标虚拟核。
在一个具体的例子中,如图7所示,优先级主索引号位图中第1位值为1,表明最高优先级的主索引号为1,代表在优先级次索引号位图的第1行中存在值为1的位置位。进一步的,在优先级次索引号位图的第1行中获取位值为1的最低位索引号作为最高优先级次索引号,转换为十进制位即为第42优先级的就绪虚拟核,因此,可以将优先级为42的就绪虚拟核确定为目标虚拟核。
在本发明实施例中,采用8x32的优先级管理位图管理优先级调度的就绪虚拟核,能快速可靠的选择最高优先级就绪虚拟核。优先级管理位图只针对采用优先级调度策略的虚拟核,采用时间调度表调度的虚拟核就绪时不会引起对优先级管理位图的操作。采用优先级调度策略的虚拟核就绪时会对优先级位图中对应的优先级位置1,虚拟核变为等待、挂等、挂起或休眠时,如果对应优先级队列上没有其它就绪虚拟核则会对优先级管理位图中对应的优先级位置0。
在本发明实施例中,可选的,预设虚拟核调度策略还可以同时包括时间表调度策略和优先级调度策略,相应的,所述根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,可以包括:根据所述时间表调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第一备选虚拟核;根据所述优先级调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第二备选虚拟核;根据所述第一备选虚拟核的优先级和所述第二备选虚拟核的核优先级确定各所述物理核待调度的目标虚拟核。
其中,第一备选虚拟核可以是根据时间表调度策略从多虚拟机内的多虚拟核中确定的各物理核待调度的虚拟核。第二备选虚拟核可以是根据优先级调度策略从多虚拟机内的多虚拟核中确定的各物理核待调度的虚拟核。
在本发明实施例中,当预设虚拟核调度策略同时包括时间表调度策略和优先级调度策略时,可以首先根据时间表调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第一备选虚拟核,并根据优先级调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第二备选虚拟核。确定第一备选虚拟核和第二备选虚拟核后,可以分别确定第一备选虚拟核的优先级和第二备选虚拟核的优先级,并将优先级最高的备选虚拟核确定为目标虚拟核。示例性的,假设物理核0确定的第一备选虚拟核的优先级为12,物理核0确定的第二备选虚拟核的优先级为42,则将第一备选虚拟核确定为物理核0的目标虚拟核。可选的,如果第一备选虚拟核和第二备选虚拟核的优先级相等,则第一备选虚拟核可以优先确定为目标虚拟核。
S220、通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据。
其中,所述虚拟核任务配置数据还可以包括虚拟核索引号;所述通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;可以包括:在确定所述物理核由第一目标虚拟核切换至第二目标虚拟核的情况下,通过所述硬件寄存器在所述第一目标虚拟核的上下文配置信息中保存所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态;在确定所述物理核重新切换至所述第一目标虚拟核的情况下,通过所述硬件寄存器根据所述第一目标虚拟核的上下文配置信息获取所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态。
其中,第一目标虚拟核和第二目标虚拟核可以是物理核在不同时间窗口调度的目标虚拟核。当前全局中断使能掩码状态也即当前全局中断使能掩码的取值,可以是使能状态,也可以禁止状态。
在本发明实施例中,通过硬件寄存器配置目标虚拟核的虚拟核任务配置数据时,具体可以通过硬件寄存器获取虚拟机内目标虚拟核的当前虚拟核索引号。在核心态启动目标虚拟核时,初始化硬件寄存器来保存目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态,虚拟机内每个虚拟核的索引号都是唯一的。物理核在切换目标虚拟核时,切走的目标虚拟核的上下文配置信息中需要保存硬件寄存器中保存的当前虚拟核索引号和全局中断使能掩码状态,切入的目标虚拟核需要将切入的目标虚拟核的上下文配置信息中的当前虚拟核索引号和全局中断使能掩码状态恢复到硬件寄存器中,这样每个目标虚拟核的索引号和全局中断使能掩码状态是相互独立的。
具体的,如果物理核由第一目标虚拟核切换至第二目标虚拟核,则可以将硬件寄存器保存的第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态存储至第一目标虚拟核的上下文配置信息。如果物理核重新切换至所述第一目标虚拟核,则可以根据第一目标虚拟核的上下文配置信息获取第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态继续对第一目标虚拟核进行调度。
示例性的,假设虚拟机1绑定运行在物理核1、物理核2和物理核3上,也即虚拟机1包括虚拟核1(包括物理核1)、虚拟核2(包括物理核2)以及虚拟核3(包括物理核3)。虚拟机2绑定运行在物理核2、物理核3和物理核4上。也即虚拟机2包括虚拟核1(包括物理核2)、虚拟核2(包括物理核3)以及虚拟核3(包括物理核4)。物理核2运行时,可以调度虚拟机1的虚拟核2和虚拟机2的虚拟核1。当物理核2调度虚拟机1的虚拟核2(也即第一目标虚拟核)时,硬件寄存器保存的第一目标虚拟核的当前虚拟核索引号为2,当前全局中断使能掩码状态为禁止全局中断。当物理核2切换到虚拟机2的虚拟核1(也即第二目标虚拟核)时,硬件寄存器中保存的当前虚拟核索引号2以及禁止全局中断的状态需要存储到虚拟机1的虚拟核2的上下文配置信息中。此时,硬件寄存器中保存的当前虚拟核索引号更新为1,且更新为虚拟机2的虚拟核1的当前全局中断使能掩码状态。当物理核2重新切回到虚拟机1的虚拟核2时,硬件寄存器从虚拟机1的虚拟核2的上下文配置信息中获取当前虚拟核索引号是2,且确定虚拟机1的虚拟核2的当前全局中断使能掩码状态为禁止全局中断。
相应的,当前目标虚拟核有中断挂起并且从核心态返回到用户态时,如果当前目标虚拟核的硬件寄存器保存的全局中断使能掩码状态是禁止全局中断的,则不会将当前目标虚拟核上的中断投递给当前目标虚拟核,否则会将当前目标虚拟核上的中断投递给当前目标虚拟核。这样的机制使硬件寄存器中保存的全局中断使能掩码状态可以控制目标虚拟核是否对中断进行处理,从而保证了多核架构的用户态虚拟机的多任务多核实时调度算法中全局资源的互斥访问。
S230、确定所述目标虚拟核的私有任务队列以及各所述虚拟核的全局任务队列。
其中,私有任务队列可以用于采用消息队列的方式存储每个虚拟核等待处理的私有任务。全局任务队列可以用于采用消息队列的方式存储所有虚拟核等待处理的全局任务。
在本发明实施例中,多核***在创建任务时,可以配置任务指定在任意一个CPU上运行,也可以绑定运行在一个指定的CPU上运行。***默认情况下,所有CPU都是非预留的,预留的CPU只能运行绑定到此CPU上的任务,不能运行非绑定运行的任务。用户可以在代码中调用接口来动态改变需要预留的CPU,主CPU是不能被预留的。因此,每个物理核可以对应生成一个私有任务队列,该私有任务队列中所有待处理的任务均为指定该物理核运行的任务。同时,所有的物理核还可以对应生成一个全局任务队列,该全局任务队列中所有待处理的任务可以是能够在任意的物理核上运行的任务。由于每个虚拟核对应绑定一个物理核,因此,每个虚拟核同样对应存在匹配的一个私有任务队列,所有的虚拟核对应存在一个全局任务队列。
S240、根据所述私有任务队列和所述全局任务队列确定各所述目标虚拟核调度的所述目标待处理任务。
其中,目标待处理任务可以是目标虚拟核根据私有任务队列和全局任务队列确定的当前需要调度处理的任务。
具体的,确定每个目标虚拟核调度的目标待处理任务时,可以确定每个目标虚拟核的私有任务队列以及各虚拟核的全局任务队列,并以队列为依据,进一步根据每个目标虚拟核的私有任务队列和全局任务队列确定各目标虚拟核调度的目标待处理任务。
在本发明的一个可选实施例中,所述根据所述私有任务队列和所述全局任务队列确定各所述目标虚拟核调度的所述目标待处理任务,可以包括:根据待处理私有任务的优先级从所述私有任务队列中获取目标优先级待处理私有任务;根据待处理全局任务的优先级从所述全局任务队列中获取目标优先级待处理全局任务;比较所述目标优先级待处理私有任务的优先级和所述目标优先级待处理全局任务的优先级;根据所述私有任务优先级和所述目标优先级待处理全局任务的优先级比较结果,从所述目标优先级待处理私有任务和所述目标优先级待处理全局任务中筛选所述目标待处理任务。
其中,待处理私有任务可以是私有任务队列中待处理的各个私有任务。目标优先级待处理私有任务可以是根据私有任务队列确定的目标虚拟核当前可以处理的私有任务。目标优先级待处理全局任务可以是根据全局任务队列确定的目标虚拟核当前可以处理的全局任务。
可以理解的是,不同任务之间具有调度优先级。示例性的,任务1的优先级为1,任务2的优先级为3,则任务1的优先级要高于任务2,表明任务1需要被优先处理。因此,可以首先根据待处理私有任务的优先级从私有任务队列中获取优先级最高的待处理私有任务作为目标优先级待处理私有任务,并根据待处理全局任务的优先级从全局任务队列中获取优先级最高的待处理全局任务作为目标优先级待处理全局任务。从任务队列中筛选出目标优先级待处理私有任务和目标优先级待处理全局任务之后,可以进一步比较目标优先级待处理私有任务的优先级和目标优先级待处理全局任务的优先级,并筛选出优先级最高的任务确定为最终的目标待处理任务。
图8是本发明实施例二提供的一种私有任务队列和全局任务队列的效果示意图。在一个具体的例子中,如图8所示,以目标虚拟核为虚拟核0具体说明:确定虚拟核0的目标待处理任务时,可以从私有任务队列1中获取一个优先级最高的待处理私有任务作为目标优先级待处理私有任务,并从全局任务队列中获取一个优先级最高的待处理全局任务作为目标优先级待处理全局任务。如果目标优先级待处理私有任务的优先级高于目标优先级待处理全局任务的优先级,则可以将目标优先级待处理私有任务作为目标待处理任务。如果目标优先级待处理私有任务的优先级与目标优先级待处理全局任务的优先级相同,则可以基于时间片进行轮转调度。
S250、通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
在本发明的一个可选实施例中,通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务,可以包括:在通过所述目标虚拟核根据执行所述目标待处理任务的过程中,确定所述目标虚拟核的全局中断禁止触发事件;在确定各所述目标虚拟核触发所述全局中断禁止触发事件的情况下,对触发所述全局中断禁止触发事件的目标虚拟核禁止全局中断;其中,所述全局中断禁止事件包括首次启动虚拟核事件以及访问全局资源事件中的至少一项。
其中,全局中断禁止触发事件可以是能够禁止虚拟核全局中断的事件。
可以理解的是,虚拟核如果全局中断使能,也即全局中断处于开启的情况下,虚拟核每执行一条指令仅需要检查是否存在中断。存在中断则需要执行中断,中断的执行具有最高优先级。为了保证访问虚拟核资源的原子性,如果目标虚拟核调度执行任务的过程中触发了全局中断禁止触发事件,如首次启动虚拟核事件或访问全局资源事件等,需要对触发全局中断禁止触发事件的目标虚拟核禁止全局中断,以避免虚拟核资源访问出错。
具体的,在核心态首次启动调度目标虚拟核时,可以初始化硬件寄存器中保存的全局中断使能掩码为当前目标虚拟核是禁止全局中断的。其中,全局中断使能掩码用于确定全局中断的状态。示例性的,当全局中断使能掩码取值为0时,标识全局中断关闭;当全局中断使能掩码取值为1时,标识全局中断使能。相应的,当目标虚拟核首次启动完成后,进入任务调度时,可以设置硬件寄存器保存的全局中断使能掩码为当前目标虚拟核是使能全局中断的。在调度任务的过程中,如果目标虚拟核需要访问全局资源,可以再次设置硬件寄存器保存的全局中断使能掩码为当前目标虚拟核是禁止全局虚拟中断的,如果访问的全局资源是每个虚拟核私有的,禁止全局中断使能的同时还需要获取硬件寄存器中保存的当前虚拟核索引号,以保证目标虚拟核切换时可以保持切换前的状态,避免资源访问出错。在完成全局资源的访问后,需要及时恢复硬件寄存器保存的当前目标虚拟核的全局中断使能掩码使能全局中断。通过硬件寄存器直接禁止和使能当前目标虚拟核的全局中断和获取当前虚拟核索引号能够极大的提高用户态多任务对物理核资源的使用率和实时性。
上述技术方案,通过在用户态虚拟机环境下根据不同的预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,并根据各目标虚拟核的私有任务队列和全局任务队列确定各目标虚拟核调度的目标待处理任务,以通过各目标虚拟核执行各目标待处理任务,可以实现基于用户态的多任务多核实时调度,能够更好的协调多任务的物理核资源使用率和实时性。
需要说明的是,以上各实施例中各技术特征之间的任意排列组合也属于本发明的保护范围。
实施例三
图9是本发明实施例三提供的一种任务调度装置的示意图,如图9所示,所述装置包括:目标虚拟核确定模块310、虚拟核任务配置数据配置模块320、目标待处理任务确定模块330以及目标待处理任务执行模块340,其中:
目标虚拟核确定模块310,用于根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;
虚拟核任务配置数据配置模块320,用于通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;
目标待处理任务确定模块330,用于根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;
目标待处理任务执行模块340,用于通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
本发明实施例通过根据预设虚拟核调度策略从配置在用户态环境中的多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,通过硬件寄存器配置目标虚拟核的全局中断使能掩码状态等虚拟核任务配置数据,并根据多任务多核实时调度策略确定各目标虚拟核调度的目标待处理任务,以通过各目标虚拟核根据配置的虚拟核任务配置数据执行目标待处理任务,能够避免在核心态环境中由多核处理器调度执行多任务,解决现有在核心态环境下由多核处理器调度执行多任务产生的物理核资源使用率和任务调度处理的实时性较低等问题,实现在用户态环境中调度处理多任务,从而提高多核处理器的物理核资源使用率和任务调度处理的实时性。
可选的,所述虚拟核任务配置数据还包括虚拟核索引号;虚拟核任务配置数据配置模块320具体用于:在确定所述物理核由第一目标虚拟核切换至第二目标虚拟核的情况下,通过所述硬件寄存器在所述第一目标虚拟核的上下文配置信息中保存所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态;在确定所述物理核重新切换至所述第一目标虚拟核的情况下,通过所述硬件寄存器根据所述第一目标虚拟核的上下文配置信息获取所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态。
可选的,目标待处理任务执行模块340具体用于:在通过所述目标虚拟核根据执行所述目标待处理任务的过程中,确定所述目标虚拟核的全局中断禁止触发事件;在确定各所述目标虚拟核触发所述全局中断禁止触发事件的情况下,对触发所述全局中断禁止触发事件的目标虚拟核禁止全局中断;其中,所述全局中断禁止事件包括首次启动虚拟核事件以及访问全局资源事件中的至少一项。
可选的,所述预设虚拟核调度策略包括时间表调度策略;目标虚拟核确定模块310具体用于:确定各所述物理核预先配置的时间调度表;确定各所述时间调度表中各所述物理核在当前时间窗口匹配的预置虚拟核;将所述当前时间窗口匹配的预置虚拟核确定为各所述物理核待调度的目标虚拟核。
可选的,所述预设虚拟核调度策略包括优先级调度策略;目标虚拟核确定模块310具体用于:获取优先级管理位图;其中,所述优先级管理位图包括优先级主索引号位图和优先级次索引号位图;根据所述优先级主索引号位图确定最高优先级的主索引号;根据所述优先级次索引号位图和所述最高优先级的主索引号确定最高优先级的次索引号;根据所述最高优先级的主索引号和所述最高优先级的次索引号确定各所述物理核待调度的目标虚拟核。
可选的,所述预设虚拟核调度策略包括时间表调度策略和优先级调度策略;目标虚拟核确定模块310具体用于:根据所述时间表调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第一备选虚拟核;根据所述优先级调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第二备选虚拟核;根据所述第一备选虚拟核的优先级和所述第二备选虚拟核的核优先级确定各所述物理核待调度的目标虚拟核。
可选的,目标待处理任务确定模块320具体用于:确定所述目标虚拟核的私有任务队列以及各所述虚拟核的全局任务队列;根据所述私有任务队列和所述全局任务队列确定各所述目标虚拟核调度的所述目标待处理任务。
可选的,目标待处理任务确定模块320具体用于:根据待处理私有任务的优先级从所述私有任务队列中获取目标优先级待处理私有任务;根据待处理全局任务的优先级从所述全局任务队列中获取目标优先级待处理全局任务;比较所述目标优先级待处理私有任务的优先级和所述目标优先级待处理全局任务的优先级;根据所述私有任务优先级和所述目标优先级待处理全局任务的优先级比较结果,从所述目标优先级待处理私有任务和所述目标优先级待处理全局任务中筛选所述目标待处理任务。
上述任务调度装置可执行本发明任意实施例所提供的任务调度方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的任务调度方法。
由于上述所介绍的任务调度装置为可以执行本发明实施例中的任务调度方法的装置,故而基于本发明实施例中所介绍的任务调度方法,本领域所属技术人员能够了解本实施例的任务调度装置的具体实施方式以及其各种变化形式,所以在此对于该任务调度装置如何实现本发明实施例中的任务调度方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中任务调度方法所采用的装置,都属于本申请所欲保护的范围。
实施例四
图10为本发明实施例四提供的一种电子设备的结构示意图。图10示出了适于用来实现本发明实施方式的示例性电子设备12的框图。图10显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器16,存储器28,连接不同***组件(包括存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及***组件互连(Peripheral Component Interconnect,PCI)总线。
电子设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图10未显示,通常称为“硬盘驱动器”)。尽管图10中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图10中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(Redundant Arrays of Independent Disks,RAID)***、磁带驱动器以及数据备份存储***等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,实现本发明实施例所提供的任务调度方法:根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
实施例五
本发明实施例五还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的任务调度方法:根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ReadOnly Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM,或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种任务调度方法,其特征在于,包括:
根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核;其中,所述虚拟机配置在用户态环境中,各所述虚拟机包括至少一个虚拟核,每个所述虚拟核对应绑定一个所述物理核;
通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;其中,所述虚拟核任务配置数据包括全局中断使能掩码状态;
根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务;
通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务。
2.根据权利要求1所述的方法,其特征在于,所述虚拟核任务配置数据还包括虚拟核索引号;
所述通过硬件寄存器配置所述目标虚拟核的虚拟核任务配置数据;包括:
在确定所述物理核由第一目标虚拟核切换至第二目标虚拟核的情况下,通过所述硬件寄存器在所述第一目标虚拟核的上下文配置信息中保存所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态;
在确定所述物理核重新切换至所述第一目标虚拟核的情况下,通过所述硬件寄存器根据所述第一目标虚拟核的上下文配置信息获取所述第一目标虚拟核的当前虚拟核索引号和当前全局中断使能掩码状态。
3.根据权利要求1所述的方法,其特征在于,所述通过所述目标虚拟核根据所述虚拟核任务配置数据执行所述目标待处理任务,包括:
在通过所述目标虚拟核根据执行所述目标待处理任务的过程中,确定所述目标虚拟核的全局中断禁止触发事件;
在确定各所述目标虚拟核触发所述全局中断禁止触发事件的情况下,对触发所述全局中断禁止触发事件的目标虚拟核禁止全局中断;
其中,所述全局中断禁止事件包括首次启动虚拟核事件以及访问全局资源事件中的至少一项。
4.根据权利要求1所述的方法,其特征在于,所述预设虚拟核调度策略包括时间表调度策略;
所述根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,包括:
确定各所述物理核预先配置的时间调度表;
确定各所述时间调度表中各所述物理核在当前时间窗口匹配的预置虚拟核;
将所述当前时间窗口匹配的预置虚拟核确定为各所述物理核待调度的目标虚拟核。
5.根据权利要求1所述的方法,其特征在于,所述预设虚拟核调度策略包括优先级调度策略;
所述根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,包括:
获取优先级管理位图;其中,所述优先级管理位图包括优先级主索引号位图和优先级次索引号位图;
根据所述优先级主索引号位图确定最高优先级的主索引号;
根据所述优先级次索引号位图和所述最高优先级的主索引号确定最高优先级的次索引号;
根据所述最高优先级的主索引号和所述最高优先级的次索引号确定各所述物理核待调度的目标虚拟核。
6.根据权利要求1所述的方法,其特征在于,所述预设虚拟核调度策略包括时间表调度策略和优先级调度策略;
所述根据预设虚拟核调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的目标虚拟核,包括:
根据所述时间表调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第一备选虚拟核;
根据所述优先级调度策略从多虚拟机内的多虚拟核中确定各物理核待调度的第二备选虚拟核;
根据所述第一备选虚拟核的优先级和所述第二备选虚拟核的核优先级确定各所述物理核待调度的目标虚拟核。
7.根据权利要求1所述的方法,其特征在于,所述根据多任务多核实时调度策略确定各所述目标虚拟核调度的目标待处理任务,包括:
确定所述目标虚拟核的私有任务队列以及各所述虚拟核的全局任务队列;
根据所述私有任务队列和所述全局任务队列确定各所述目标虚拟核调度的所述目标待处理任务。
8.根据权利要求7所述的方法,其特征在于,所述根据所述私有任务队列和所述全局任务队列确定各所述目标虚拟核调度的所述目标待处理任务,包括:
根据待处理私有任务的优先级从所述私有任务队列中获取目标优先级待处理私有任务;
根据待处理全局任务的优先级从所述全局任务队列中获取目标优先级待处理全局任务;
比较所述目标优先级待处理私有任务的优先级和所述目标优先级待处理全局任务的优先级;
根据所述私有任务优先级和所述目标优先级待处理全局任务的优先级比较结果,从所述目标优先级待处理私有任务和所述目标优先级待处理全局任务中筛选所述目标待处理任务。
9.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行所述计算机程序时实现如权利要求1-8中任一所述的任务调度方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-8中任一所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111640930.XA CN114168271B (zh) | 2021-12-29 | 2021-12-29 | 一种任务调度方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111640930.XA CN114168271B (zh) | 2021-12-29 | 2021-12-29 | 一种任务调度方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114168271A true CN114168271A (zh) | 2022-03-11 |
CN114168271B CN114168271B (zh) | 2022-11-11 |
Family
ID=80488600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111640930.XA Active CN114168271B (zh) | 2021-12-29 | 2021-12-29 | 一种任务调度方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168271B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791854A (zh) * | 2022-05-11 | 2022-07-26 | 科东(广州)软件科技有限公司 | 用户态虚拟机任务的调度方法、装置、设备及存储介质 |
CN114880075A (zh) * | 2022-05-11 | 2022-08-09 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机虚拟核间任务的调度方法及装置 |
CN115145687A (zh) * | 2022-06-29 | 2022-10-04 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机任务的调度方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9052935B1 (en) * | 2012-11-27 | 2015-06-09 | Symantec Corporation | Systems and methods for managing affinity rules in virtual-machine environments |
CN105051678A (zh) * | 2012-12-28 | 2015-11-11 | 英特尔公司 | 异构处理器装置和方法 |
CN105446795A (zh) * | 2014-09-22 | 2016-03-30 | 波音公司 | 虚拟机操作中的并行化 |
CN110620712A (zh) * | 2019-09-03 | 2019-12-27 | 武汉久同智能科技有限公司 | Window平台的实时EtherCAT主站实现方法 |
CN111176847A (zh) * | 2019-12-31 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 物理核超多线程服务器上大数据集群性能优化方法及装置 |
CN112579294A (zh) * | 2020-12-25 | 2021-03-30 | 科东(广州)软件科技有限公司 | 一种虚拟机的多核调度的实现方法及装置 |
-
2021
- 2021-12-29 CN CN202111640930.XA patent/CN114168271B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9052935B1 (en) * | 2012-11-27 | 2015-06-09 | Symantec Corporation | Systems and methods for managing affinity rules in virtual-machine environments |
CN105051678A (zh) * | 2012-12-28 | 2015-11-11 | 英特尔公司 | 异构处理器装置和方法 |
CN105446795A (zh) * | 2014-09-22 | 2016-03-30 | 波音公司 | 虚拟机操作中的并行化 |
CN110620712A (zh) * | 2019-09-03 | 2019-12-27 | 武汉久同智能科技有限公司 | Window平台的实时EtherCAT主站实现方法 |
CN111176847A (zh) * | 2019-12-31 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 物理核超多线程服务器上大数据集群性能优化方法及装置 |
CN112579294A (zh) * | 2020-12-25 | 2021-03-30 | 科东(广州)软件科技有限公司 | 一种虚拟机的多核调度的实现方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791854A (zh) * | 2022-05-11 | 2022-07-26 | 科东(广州)软件科技有限公司 | 用户态虚拟机任务的调度方法、装置、设备及存储介质 |
CN114880075A (zh) * | 2022-05-11 | 2022-08-09 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机虚拟核间任务的调度方法及装置 |
CN114880075B (zh) * | 2022-05-11 | 2023-01-06 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机虚拟核间任务的调度方法及装置 |
CN115145687A (zh) * | 2022-06-29 | 2022-10-04 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机任务的调度方法及装置 |
CN115145687B (zh) * | 2022-06-29 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机任务的调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114168271B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
CN107015845B (zh) | Gpu虚拟化 | |
US20190034230A1 (en) | Task scheduling method and apparatus | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
US9164853B2 (en) | Multi-core re-initialization failure control system | |
WO2017070900A1 (zh) | 多核数字信号处理***中处理任务的方法和装置 | |
US10275558B2 (en) | Technologies for providing FPGA infrastructure-as-a-service computing capabilities | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
EP2375324A2 (en) | Virtualization apparatus for providing a transactional input/output interface | |
US10579416B2 (en) | Thread interrupt offload re-prioritization | |
CN114138422B (zh) | 可扩展性的NVMe存储虚拟化方法和*** | |
CN112306669A (zh) | 一种基于多核***的任务处理方法及装置 | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
US20070283138A1 (en) | Method and apparatus for EFI BIOS time-slicing at OS runtime | |
CN112948136A (zh) | 一种嵌入式操作***异步日志记录的实现方法 | |
US9766948B2 (en) | Selecting processor micro-threading mode | |
US9437299B2 (en) | Systems and methods for order scope transitions using cam | |
CN114281529B (zh) | 分布式虚拟化的客户操作***调度优化方法、***及终端 | |
CN115098230A (zh) | 管理线程的方法及装置 | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
US8424013B1 (en) | Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt | |
CN114911538A (zh) | 一种运行***的启动方法及计算设备 | |
CN111433738A (zh) | 控制器事件队列 | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
US8533696B1 (en) | Methods and systems for allocating hardware resources to instances of software images |
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 |