CN114168278A - 任务处理方法及系统 - Google Patents
任务处理方法及系统 Download PDFInfo
- Publication number
- CN114168278A CN114168278A CN202111307054.9A CN202111307054A CN114168278A CN 114168278 A CN114168278 A CN 114168278A CN 202111307054 A CN202111307054 A CN 202111307054A CN 114168278 A CN114168278 A CN 114168278A
- Authority
- CN
- China
- Prior art keywords
- priority
- host
- vcpu
- task
- thread
- 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.)
- Pending
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/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/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/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/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书实施例提供任务处理方法及系统,其中所述任务处理方法应用于任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,所述方法包括:所述宿主机根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种任务处理方法。
背景技术
随着计算机技术的不断发展,许多机构为了节省成本,提高集群的CPU利用率,通常会在一个OS系统内采用高优先级任务与低优先级任务混部的部署模式,该混部的部署模式为了降低低优先级任务对高优先级任务的干扰,通常会将对资源或操作系统内核有更多需求的离线任务(如大数据处理任务、批处理任务等)运行在安全运行单元内。
但是,离线任务内部也存在高低优先级之分,而安全运行单元(虚拟机或安全容器)通常来说只有一种全局运行优先级,例如低优先级、高优先级或某种特定优先级。如果将两种优先级的任务部署在同一个安全运行单元中,会导致在任务运行过程中出现混乱,无法按照优先级的高低对任务进行处理,因此,无法将两种优先级的任务部署在同一个安全运行单元内。
发明内容
有鉴于此,本说明书实施例提供了一种任务处理方法。本说明书一个或者多个实施例同时涉及一种任务处理系统,一种计算设备,一种计算机可读存储介质,一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种任务处理方法,应用于任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,所述方法包括:
所述宿主机根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;
所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及
基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
根据本说明书实施例的第二方面,提供了一种任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,
所述宿主机,被配置为根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;
所述安全运行单元,被配置为基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及
基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述任务处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现所述任务处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行所述任务处理方法的步骤。
本说明书一个实施例提供的任务处理方法,应用于任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,所述方法包括:所述宿主机根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
具体地,所述方法基于任务处理系统的宿主机,预先确定宿主机线程的优先级,该宿主机线程即为安全运行单元中的vCPU,基于任务处理系统中能够对多全局优先级进行管理的安全运行单元,通过宿主机线程的优先级确定的vCPU的优先级,并基于vCPU的优先级确定出,对具有不同优先级的待处理任务进行运行的vCPU;从而避免了任务运行过程中对任务的处理出现混乱,实现了按照待处理任务的优先级的高低,对待处理任务进行处理,进一步达到了将两种优先级的任务部署在同一个安全运行单元内的目的。
附图说明
图1是本说明书一个实施例提供的一种任务处理方法的流程图;
图2是本说明书一个实施例提供的一种任务处理方法中任务管理的一种流程示意图;
图3是本说明书一个实施例提供的一种任务处理方法中任务处理的另一种流程示意图;
图4是本说明书一个实施例提供的一种任务处理方法中进行优先级调整的流程示意图;
图5示出了本说明书一个实施例提供的一种任务处理方法的第一种处理过程流程图;
图6示出了本说明书一个实施例提供的一种任务处理方法的第二种处理过程流程图;
图7是本说明书一个实施例提供的一种任务处理系统的结构示意图;
图8是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
普通运行单元:指runc容器。
安全运行单元:指具有安全隔离功能的虚拟机或安全容器实例,通常来说有独立的Guest OS。任务能够运行在隔离的Guest OS中。
在线业务:高优先级的业务,如电商、搜索等,需要保证实时性。
离线业务:低优先级、实时性不高的业务,如大数据等。但是有些离线业务同时存在高低两类优先级的任务。
混部环境:多种优先级的运行单元混部调度运行的环境。
Host:运行单元(例如安全运行单元或普通运行单元)所在的宿主机。
Guest:即安全运行单元的独立OS环境
vCPU:相对于物理CPU而言,安全运行单元内的虚拟的CPU。
运行优先级:简称优先级,是指任务调度的运行优先级;为了便于解释,本说明书中均以优先级,对任务调度的运行优先级进行说明。
全局运行优先级:指包含多个云运行单元的一个Host全局视角范围内的运行优先级,即一个运行单元里面(通常是Guest)的一个任务在整个宿主机上所有运行单元内的拉通对比的调度优先级。一个跑在低优先级运行单元内的任务在宿主机上可能被其它高优先级运行单元所抢占或压制,而如果跑在高优先级运行单元内的任务,在宿主机上可抢占其它低优先级运行单元的任务。
安全容器:也称为沙箱容器,一种运行时技术,可以为容器应用提供一个完整的操作系统执行环境(常常是Linux ABI),但将应用的执行与宿主机操作系统隔离开,避免应用直接访问主机资源,从而可以在容器主机之间或容器之间提供额外的保护。
Syscall:一种系统调用函数。
随着计算机技术的不断发展,许多企业或机构为了节省成本,提高集群的CPU利用率,通常会在一个OS系统内采用高优先级任务与低优先级任务混部的部署模式。该混部的部署模式(混部模型)通过调度策略等系统配置保证高优先级任务的运行时间片(并且可以随时抢占低优先级任务),低优先级任务利用高优先级任务休息的时间去尝试获取CPU(中央处理器)时间片来运行。为了降低低优先级任务对高优先级任务的内核或syscall层面的干扰,通常会将低优先级任务运行在安全运行单元内。这种混部模式的一个应用案例是针对在线业务和离线业务的混部应用。在线业务运行在高优先级的普通运行单元内(即runc),离线应用运行在安全运行单元(安全容器或虚拟机)内。而安全运行单元(虚拟机或安全容器)通常来说只有一种全局运行优先级,低优先级或高优先级或某种特定优先级。无法将两种优先级的任务部署在同一个安全运行单元内。但是,有时候某些离线业务也存在不同优先级的任务,且有时候某些业务(比如大数据业务)的不同优先级的任务之间存在某种强关联联系,因此需要将多于1种全局优先级的任务部署在一种安全运行单元内,也即是需要将两种优先级的任务部署在同一个安全运行单元内。
基于此,在本说明书中,提供了一种任务处理方法,本说明书同时涉及一种任务处理系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种任务处理方法的流程图,所述任务处理方法应用于任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,所述方法具体包括以下步骤。
步骤102:所述宿主机根据预设优先级策略确定宿主机线程的优先级。
其中,所述宿主机线程为所述安全运行单元的vCPU。该任务处理系统可以理解为一种能够支持在同一个安全运行单元内,运行多种全局优先级任务的系统;实际应用中,该安全运行单元可以理解为为运行在所述宿主机上的虚拟机,或运行在所述宿主机上的安全容器。该宿主机可以理解为一台物理机,对于运行在这台物理机上的一个或多个安全运行单元来说,这个物理机就是这些安全运行单元的宿主机。该安全运行单元可以理解为一个物理机上虚拟出来的一个或多个机器(虚拟机或安全容器),一般使用硬件虚拟化或者软件二进制翻译等形式来实现。该vCPU可以理解为安全运行单元的虚拟中央处理器,也即是虚拟机或安全容器中的的vCPU,一个vCPU的通常实现方式是宿主机操作系统中的一个线程。实际应用中,本说明书提供的任务处理方法中,针对任务处理系统中安全运行单元的步骤,也可以理解为是针对虚拟机或安全容器的步骤,也即是,本说明书提供的任务处理方法既可以通过虚拟机实现、也可以通过安全容器实现。该预设优先级策略可以为任意一种能够确定出宿主机线程的优先级的策略,可以根据实际应用场景进行设置,本说明书对此不做具体限定,例如,该预设优先级策略包括但不限于cgroup分组内的shares时间片、任务调度策略、rdt的内存访问策略等。宿主机线程可以理解为宿主机中用于实现vCPU的线程,实际应用中,安全运行单元中的一个vCPU可以理解为宿主机的一个线程。
具体的,任务处理系统的宿主机根据预先设置的优先级策略,确定出该宿主机中每个宿主机线程的优先级的过程中,具体实现方式如下。
所述宿主机根据预设优先级策略确定宿主机线程的优先级,包括:
所述宿主机的优先级管理程序创建至少两个线程组,通过预设优先级策略确定每个线程组的优先级;以及
将宿主机线程添加至所述每个线程组,并基于所述每个线程组的优先级确定所述宿主机线程的优先级。
其中,在本说明书提供的任务处理方法中的安全运行单元可以为虚拟机,或安全容器的情况下,该优先级管理程序可以理解为对宿主机线程的优先级进行管理的程序,该宿主机线程即为虚拟机或安全容器中的vCPU;线程组可以理解为包含多个宿主机线程的集合,实际应用中,每个线程组可以具有不同的优先级,也可以具有相同的优先级。
具体地,该宿主机中的优先级管理程序在进行任务处理的过程中,为宿主机中的宿主机线程创建至少两个线程组,并通过预设优先级策略对每个线程组的参数进行调整和设置,从而确定出每个线程组的优先级,其中,每个线程组的优先级至少包括两种类型,例如高优先级、低优先级;因此,该优先级管理程序创建的线程组也至少包括两种类型,例如,高优先级组、低优先级组。在确定出每个线程组的优先级之后,将宿主机中支持vCPU实现的宿主机线程添加到线程组中,并将每个线程组的优先级,确定为该线程组所包含的宿主机线程的优先级,从而实现为宿主机线程确定对应的优先级。
举例说明,以本说明书提供的任务处理方法应用于在安全运行单元内运行多种全局优先级任务的场景下为例,对基于宿主机的优先级管理程序确定宿主机线程的优先级做进一步说明。其中,该宿主机线程可以为宿主机中支持vCPU实现的vCPU Host线程,实际应用中,虚拟机或者安全容器内的一个vCPU相当于宿主机中的一个vCPU Host线程。
宿主机中的优先级管理程序在需要确定宿主机中的多个宿主机线程(比如4个宿主机线程)的优先级时,首先可以为该4个宿主机线程创建2个线程组,该线程组可以为cgroup分组、rdt group分组或cgroup分组和rdt group分组。
在完成线程组的创建之后,在该线程组存在cgroup分组的情况下,将需要配置为高优先级的cgroup分组,配置高优先级的shares时间片、高优先级的抢占策略(配置可抢占低优先级的策略);将需要配置为低优先级的cgroup分组,配置低优先级的shares时间片、低优先级的抢占策略(配置可被高优先级抢占的低优先级的策略);从而在宿主机内核中,建立高低优先级的cgroup分组。
同时,在该线程组存在rdt group分组的情况下,将需要配置为高优先级的rdtgroup分组,配置11路(通常为所有路)的LLC 3级cache资源(即高优先级的缓存资源);将需要配置为低优先级的rdt group分组,配置4路(通常为部分路数)的LLC3级cache资源(即低优先级的缓存资源)。
之后,管理程序将需要配置为高优先级的vCPU Host线程,放到高优先级cgroup、或高优先级rdt group中,从而将该vCPU Host线程的优先级确定为高优先级。将需要配置为低优先级的vCPU Host线程,放到低优先级cgroup、或低优先级rdt group中。从而将该vCPU Host线程的优先级确定为高优先级。
本说明书实施例中,宿主机的优先级管理程序通过预设优先级策略,为创建的每个线程组确定对应的优先级,并通过将宿主机线程添加至每个线程组的方式,将每个线程组的优先级作为宿主机线程的优先级,从而为宿主机线程确定对应的优先级,便于后续基于宿主机线程的优先级确定该vCPU的优先级,进一步通过具有优先级的vCPU运行不同优先级的待处理任务。
步骤104:所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
其中,待处理任务可以理解为需要运行在安全运行单元内的任务,该待处理任务具有不同的优先级;例如,离线业务中包含的高优先级任务和低优先级任务。
具体地,在任务处理系统的宿主机确定出宿主机线程的优先级之后,该任务处理系统的安全运行单元能够从宿主机中确定宿主机线程的优先级,进而基于该宿主机线程的优先级,确定出安全运行单元中vCPU的优先级;该安全运行单元在确定出vCPU的优先级之后,能够基于vCPU的优先级,以及待处理任务的优先级,确定出运行不同优先级的待处理任务的vCPU。
在具体实施中,基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU,可以理解为安全运行单元基于vCPU的优先级,为不同优先级的待处理任务确定对应的、能够运行该待处理任务的vCPU。例如,确定高优先级的vCPU运行高优先级的待处理任务,低优先级的vCPU运行低优先级的待处理任务;或者,确定高优先级的vCPU能够运行高优先级的待处理任务和低优先级的待处理任务,低优先级的vCPU运行低优先级的待处理任务。
在实际应用中,本说明书提供的任务处理方法,既能够通过vCPU的优先级和待处理任务的优先级的对应关系,让高优先级的待处理任务运行高优先级的vCPU上,让低优先级的待处理任务运行低优先级的vCPU上。
同时,为了避免高优先级的vCPU在不运行高优先级的待处理任务时,导致的计算资源的浪费,从而让高优先级的待处理任务运行在高优先级的vCPU上,并让低优先级的待处理任务,同时运行在高优先级的vCPU和低优先级的vCPU上。也即是说,高优先级的vCPU上能够同时运行高优先级的待处理任务和低优先级的待处理任务。
并且,在高优先级和低优先级的待处理任务,同时运行在高优先级的vCPU的过程中,为了避免低优先级的待处理任务抢占高优先级的待处理任务的计算资源,导致高优先级的待处理任务无法快速的运行,本说明书提供的任务处理方法,为高低优先级的待处理任务配置shares时间片配额、或配置调度抢占策略、或配置硬件qos参数、或者上述方法的任意组合等。从而在高优先级的待处理任务需要在高优先级的vCPU上运行时,能够随时对低优先级的待处理任务进行抢占,使得高优先级的任务能够快速且无影响的运行。
进一步的,该安全运行单元从宿主机中确定宿主机线程的优先级的步骤,可以通过安全运行单元中的业务管理程序实现,具体方式如下。
所述基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级,还包括:
所述安全运行单元的业务管理程序基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级。
其中,该业务管理程序可以理解为运行在安全运行单元中,用于对待处理任务的处理过程进行管理的程序;在安全运行单元为虚拟机或者安全容器的情况下,业务管理程序可以理解为运行在虚拟机或安全容器中,用于对待处理任务的处理过程进行管理的程序。
具体实施中,运行在安全运行单元中的业务管理程序,能够从宿主机中确定出宿主机线程的优先级,而确定宿主机的优先级的方式,包括但不限于:运行在宿主机中的优先级管理程序初始化时或需要更新时,通过接口将宿主机线程的优先级发送给业务管理程序;或者,业务管理程序通过调用宿主机的优先级控制程序提供的接口,从优先级管理程序中获取宿主机线程的优先级;或者,宿主机的优先级控制程序在初始化时或需要更新时,将宿主机线程的优先级存储至一个存储单元中,而业务管理程序能够基于特定的时间间隔(比如10秒)从该存储单元中获取宿主机线程的优先级,其中,该存储单元可以理解为一个文件或一个缓存。
本说明书实施例中,安全运行单元的业务管理程序快速的从宿主机确定的宿主机线程的优先级,并基于该宿主机线程的优先级确定出vCPU的优先级,从而提高了安全运行单元的处理效率,便于后续基于vCPU的优先级,确定出运行该待处理任务的vCPU。
在安全运行单元基于vCPU的优先级,确定出运行待处理任务的vCPU之前,还需要通过任务优先级策略对接收到的待处理任务进行配置或处理,从而使该待处理任务以相应优先级运行,具体实现方式如下。
所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU之前,还包括:
所述安全运行单元的业务管理程序接收携带有优先级标签的待处理任务;以及
基于所述优先级标签,通过任务优先级策略确定所述待处理任务的优先级。
其中,该优先级标签可以理解为表示待处理任务对应的优先级的标签;例如,高优先级标签、低优先级标签等。
任务优先级策略可以理解为为每个待处理任务确定出优先级的策略,该任务优先级策略可以根据实际应用场景进行设置,本说明书对此不做具体限制,例如,配置系统调度参数(软件参数)、配置硬件qos参数等。在实际应用中,配置系统调度参数可以为对每个待处理任务进行shares时间片配额、配置调度抢占策略等;配置硬件qos参数可以为通过rdt给待处理任务配置路数等。
在实际应用中,安全运行单元中的业务管理程序在接收到携带有优先级标签的待处理任务之后,基于待处理标签,通过预先设置的任务优先级策略,为每个待处理任务配置对应的优先级。
沿用上例,在任务优先级策略存在配置系统调度参数的情况下,安全运行单元的业务管理程序接收携带有优先级标签的待处理任务之后,如果该优先级标签为高优先级标签,则业务管理程序则为待处理任务配置高优先级的shares时间片配额,以及,为该待处理任务配置调度抢占策略,该调度抢占策略可以是通过cgroup来配置的属性,也可以是通过syscall的方式来配置;在高优先级的待处理任务被配置该属性后,可以在得到调度时,无条件抢占低优先级的待处理任务。
如果该优先级标签为低优先级标签,则业务管理程序则为待处理任务配置低优先级的shares时间片配额,并且不为该待处理任务配置调度抢占策略。
在每个待处理任务在完成shares时间片以及调度抢占策略的配置之后,即可获得对应的优先级,也即是对应的优先级能力。
在任务优先级策略存在配置硬件qos参数的情况下,业务管理程序为待处理任务配置rdt内存访问的优先级,比如llc的访问,可以通过rdt为待处理任务配置不同的路数,高优先级的待处理任务可以配置11路,低优先级的待处理任务可以配置4路,基于此,安全运行单元的业务管理程序接收携带有优先级标签的待处理任务之后,如果该优先级标签为高优先级标签,则通过rdt为待处理任务配置优先级较高的路数,比如11路;如果该优先级标签为低优先级标签,则通过rdt为待处理任务配置优先级较低的路数,比如4路;在每个待处理任务在完成路数的配置之后,即可获得对应的优先级,也即是对应的优先级能力。
在实际应用中,业务管理程序可以为待处理任务配置硬件qos参数,或者系统调度参数中任意一种;也可以为待处理任务同时配置配置硬件qos参数以及系统调度参数。本说明书对此不作具体限制。
进一步地,安全运行单元的业务管理程序在确定出vCPU的优先级之后,基于vCPU的优先级可以确定出运行该待处理任务的vCPU。具体实现方式如下。
所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU,包括:
所述安全运行单元的业务管理程序将所述vCPU的优先级,与待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为运行所述待处理任务对应的所述vCPU。
沿用上例,安全运行单元的业务管理程序在确定出vCPU的优先级以及待处理任务的优先级之后,将两者的优先级进行匹配,将高优先级的vCPU确定为与高优先级的待处理任务相匹配的vCPU,将低优先级的vCPU确定为与低优先级的待处理任务相匹配的vCPU。
或者,安全运行单元的业务管理程序为了避免高优先级的vCPU在不运行高优先级的待处理任务时,导致的计算资源的浪费,从而让高优先级的待处理任务运行在高优先级的vCPU上,并让低优先级的待处理任务,同时运行在高优先级的vCPU和低优先级的vCPU上。
同时,安全运行单元的业务管理程序在高优先级和低优先级的待处理任务,同时运行在高优先级的vCPU的过程中,为高低优先级的待处理任务配置shares时间片配额、或配置调度抢占策略、或配置硬件qos参数、或者上述方法的任意组合等,从而在高优先级的待处理任务需要在高优先级的vCPU上运行时,能够随时对低优先级的任务进行抢占,使得高优先级的任务能够快速且无影响的运行。
该安全运行单元的业务管理程序在完成待处理任务和vCPU的匹配之后,将与待处理任务相匹配的vCPU,确定为运行该待处理任务的vCPU,并基于该vCPU对该待处理任务进行处理。
本说明书实施例中,安全运行单元的业务管理程序将vCPU的优先级与待处理任务的优先级进行匹配;并与待处理任务相匹配的vCPU,确定为运行该待处理任务的vCPU,从而实现通过不同优先级的vCPU对不同优先级的待处理任务进行处理,使得安全运行单元按照待处理任务的优先级的高低,对待处理任务进行处理,避免了任务处理过程中出现混乱,实现了将两种优先级的任务部署在一个安全运行单元内。
在实际应用中,通过包含宿主机、以及运行在该宿主机上的安全运行单元的任务处理系统,实现在同一个安全运行单元内,运行多种全局优先级任务的过程,可以参见图2,图2是本说明书一个实施例提供的一种任务处理方法中任务管理的一种流程示意图;如图2所示,该Host thread1…Host thread4可以为上述实施例的vCPU Host线程;高优先级组、低优先级组可以为上述实施例中不同优先级的线程组;安全容器和虚拟机管理程序可以为上述实施例的优先级管理程序。该安全运行单元可以为安全容器,也可以为虚拟机;vCPU…vCPU3可以为上述实施例中的安全运行单元的虚拟中央处理器。Task A…Task D可以为上述实施例的待处理任务。
其中,如图2中Host(宿主机)部分所示;宿主机确定宿主机线程的优先级的步骤,可以参见步骤①、②,也即是,安全容器和虚拟机管理程序基于接收的优先级确定指令,创建高优先级组以及低优先级组;并将Host thread1、Host thread2加入到高优先级组中,从而将Host thread1、Host thread2的优先级确定为高优先级;将Host thread3、Hostthread4加入到低优先级组中,从而将Host thread3、Host thread4的优先级确定为低优先级。
其中,如图2中Guest部分所示;安全运行单元的业务管理程序确定vCPU优先级的方式,可以参见步骤③。该安全运行单元的业务管理程序根据Host上的安全容器和虚拟机的管理程序提供的接口(接口有很多种,不一一列举),来获取与vCPU具有对象关系的vCPUHost线程的优先级信息,从而基于该线程的优先级信息确定出该vCPU的优先级。
同时,安全运行单元的业务管理程序确定待处理任务对应的vCPU的方式,可以参见步骤④。安全运行单元的业务管理程序在确定出待处理任务Task的优先级,以及vCPU的优先级之后,根据该优先级对两者进行匹配,并将与该待处理任务Task相匹配的vCPU,确定为对该待处理任务Task进行处理的vCPU,从而实现了将两种优先级的任务部署在一个安全运行单元内,并通过不同优先级的vCPU对不同优先级的待处理任务进行处理,使得安全运行单元按照待处理任务的优先级的高低,对待处理任务进行处理,避免了任务处理过程中出现混乱。
在实际应用中,本说明书提供的任务处理方法,可以选择通过安全运行单元(安全容器或虚拟机)中的业务管理程序,实现主动的对任务进行优先级管理,从而实现任务与vCPU更灵活的匹配方式。例如,安全运行单元的vCPU中编号0~9的vCPU是高优先级vCPU、编号10~19的vCPU是低优先级vCPU,而低优先级任务中,任务A和任务B之间可能存在干扰,因此,为了避免低优先级任务运行过程中任务A与任务B的干扰,安全运行单元可以通过业务管理程序,将编号10~19的vCPU细分为两个部分,即编号10~14的vCPU为一个部分、编号15~19的vCPU为一个部分。通过将低优先级的任务A放到10~14号vCPU,低优先级任务B放到15~19号vCPU,从而达到避免两个任务之间干扰的目标。
同时,安全运行单元(安全容器或虚拟机)中的业务管理程序为了避免编号0~9的高优先级vCPU在不运行高优先级的任务时,导致的计算资源的浪费,从而让高优先级的任务C放在编号0~9的vCPU上,并将低优先级的任务(任务A、任务B),不仅在编号10~19的低优先级vCPU上运行,也能够在编号0~9的高优先级vCPU上运行。
并且,为了避免低优先级的任务抢占高优先级的任务C的计算资源,为高低优先级的待处理任务配置shares时间片配额、或配置调度抢占策略、或配置硬件qos参数、或者上述方法的任意组合等,从而使得高优先级的任务C需要在高优先级的vCPU上运行时,能够随时对低优先级的任务进行抢占,使得高优先级的任务能够快速且无影响的运行。
需要说明的是,本说明书实施例中,仅以任务之间存在干扰的这一种情况为例,对业务管理程序能够实现任务与vCPU的灵活匹配进行说明,该业务管理程序能够根据实际应用场景的不同,对任务和vCPU进行灵活的匹配。
此外,本说明书提供的任务处理方法。在业务管理程序没有太多个性化的配置处理时,例如任务之间的干扰风险较低时,可以选择通过Guest内核自身常规性地将待处理任务调度至vCPU上进行处理,从而降低业务管理程序实现的复杂度(比如:省略获取vCPU优先级、省略对任务与vCPU进行匹配)。基于此,基于Guest内核对待处理任务进行处理的实现方式如下。
所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级之后,还包括:
所述安全运行单元的内核基于从所述宿主机中确定的宿主机线程的优先级,确定所述vCPU的优先级。
其中,所述安全运行单元的内核可以理解为安全运行单元中的Guest内核,在安全运行单元为虚拟机或者安全容器的情况下,安全运行单元的内核可以理解为运行在虚拟机或安全容器中的Guest内核。
具体地,运行在安全运行单元的内核,能够从宿主机中确定出宿主机线程的优先级,而确定宿主机的优先级的方式,包括但不限于:运行在宿主机中的优先级管理程序初始化时或需要更新时,通过接口将宿主机线程的优先级发送给安全运行单元的内核;或者,安全运行单元的内核通过调用宿主机的优先级控制程序提供的接口,从优先级管理程序中获取宿主机线程的优先级;或者,宿主机的优先级控制程序在初始化时或需要更新时,将宿主机线程的优先级存储至一个存储单元中,而安全运行单元的内核能够基于特定的时间间隔(比如10秒)从该存储单元中获取宿主机线程的优先级,其中,该存储单元可以理解为一个文件、一个缓存,或内存。
本说明书实施例中,安全运行单元的内核快速的从宿主机确定的宿主机线程的优先级,并基于该宿主机线程的优先级确定出vCPU的优先级,从而提高了安全运行单元的处理效率,便于后续基于vCPU的优先级,确定出运行该待处理任务的vCPU。
进一步地,安全运行单元的内核在确定出vCPU的优先级之后,基于该优先级确定出对该接收的待处理任务进行处理的vCPU。具体实现方式如下。
所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU,包括:
所述安全运行单元的内核接收携带有优先级的待处理任务,并将所述vCPU的优先级,与所述待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为处理所述待处理任务的所述vCPU;
其中,所述待处理任务为运行在所述安全运行单元的业务管理程序发送的。
在实际应用中,该安全运行单元的业务管理程序向安全运行单元的内核发送待处理任务之前,需要对该待处理任务进行创建和管理,也即是,该待处理任务也是运行在安全运行单元的业务管理程序创建和管理的。
沿用上例,安全运行单元的内核在确定出vCPU的优先级之后,还能够接收到运行在安全运行单元中的业务管理程序发送的待处理任务以及该待处理任务的优先级;将两者的优先级进行匹配,将高优先级的vCPU确定为与高优先级的待处理任务相匹配的vCPU,将低优先级的vCPU确定为与低优先级的待处理任务相匹配的vCPU。
或者,安全运行单元的内核为了避免高优先级的vCPU在不运行高优先级的待处理任务时,导致的计算资源的浪费,从而让高优先级的待处理任务运行在高优先级的vCPU上,并让低优先级的待处理任务,同时运行在高优先级的vCPU和低优先级的vCPU上。
同时,安全运行单元的内核在高优先级和低优先级的待处理任务,同时运行在高优先级的vCPU的过程中,为高优先级的待处理任务配置抢占策略,从而在高优先级的待处理任务需要在高优先级的vCPU上运行时,能够随时对低优先级的任务进行抢占,使得高优先级的任务能够快速且无影响的运行。
该安全运行单元的内核在完成待处理任务和vCPU的匹配之后,将与待处理任务相匹配的vCPU,确定为运行该待处理任务的vCPU,并基于该vCPU对该待处理任务进行处理。
本说明书实施例中,安全运行单元的内核将vCPU的优先级与待处理任务的优先级进行匹配;并与待处理任务相匹配的vCPU,确定为运行该待处理任务的vCPU,从而实现通过不同优先级的vCPU对不同优先级的待处理任务进行处理,使得安全运行单元按照待处理任务的优先级的高低,对待处理任务进行处理,避免了任务处理过程中出现混乱,实现了将两种优先级的任务部署在同一个安全运行单元内。
在实际应用中,通过包含宿主机、以及运行在该宿主机上的安全运行单元的任务处理系统,实现在同一个安全运行单元内,运行多种全局优先级任务的过程,还可以参见图3,图3是本说明书一个实施例提供的一种任务处理方法中任务处理的另一种流程示意图;如图3所示,该Guest内核可以为上述实施例的安全运行单元的内核。
其中,如图3中Host(宿主机)部分所示;宿主机确定宿主机线程的优先级的步骤,可以参见步骤①、②,也即是,安全容器和虚拟机管理程序基于接收的优先级确定指令,创建高优先级组以及低优先级组;并将Host thread1、Host thread2加入到高优先级组中,从而将Host thread1、Host thread2的优先级确定为高优先级;将Host thread3、Hostthread4加入到低优先级组中,从而将Host thread3、Host thread4的优先级确定为低优先级。
其中,如图3中Guest部分所示;安全运行单元的Guest内核确定vCPU优先级的方式,可以参见步骤③。安全容器和虚拟机管理程序按照特定的频率,将vCPU Host线程的优先级信息发送至Guest内核。Guest内核基于接收的vCPU Host线程的优先级信息确定出该vCPU的优先级。
同时,Guest内核确定待处理任务对应的vCPU的方式,可以参见步骤④。Guest内核在确定出待处理任务Task的优先级,以及vCPU的优先级之后,根据该优先级对两者进行匹配,并将与该待处理任务Task相匹配的vCPU,确定为对该待处理任务Task进行处理的vCPU,从而实现了将两种优先级的任务部署在一个安全运行单元内,并通过不同优先级的vCPU对不同优先级的待处理任务进行处理,使得安全运行单元按照待处理任务的优先级的高低,对待处理任务进行处理,避免了任务处理过程中出现混乱。
进一步地,宿主机的优先级管理程序通过将宿主机线程,加入到预先确定的优先级的线程组,从而确定出宿主机线程的优先级之后,该宿主机的优先级管理程序还可以对宿主机线程的优先级进行调整,具体实现方式如下。
所述宿主机根据预设优先级策略确定宿主机线程的优先级之后,还包括:
所述宿主机的优先级管理程序接收优先级控制对象发送的优先级调整指令,并根据所述优先级调整指令中携带的优先级调整信息,对所述宿主机线程的优先级进行调整。
其中,优先级控制对象可以理解为能够指示优先级管理程序对宿主机线程的优先级进行调整的对象,例如,宿主机中的优先级控制程序、宿主机中的优先级控制装置等。对应的,该优先级调整指令可以理解为能够指示优先级管理程序对宿主机线程的优先级进行调整指令。优先级调整信息可以理解为能够帮助优先级管理程序快速的对宿主机线程的优先级进行调整的信息,例如,该优先级调整信息包括但不限于线程组的标识、宿主机线程的标识、线程组需要被调整为的优先级,宿主机线程需要被调整为的优先级信息。
具体地,宿主机的优先级管理程序能够接收到优先级控制对象发送的优先级调整指令,该优先级管理程序在接收到优先级调整指令之后,能够基于该优先级调整指令中携带的优先级调整信息,例如宿主机线程的标识,确定出需要被调整优先级的宿主机线程;并根据该优先级调整信息,例如宿主机线程需要被调整为的优先级信息,对该宿主机线程的优先级进行调整。
沿用上例,其中,该优先级调整指令可以为一个优先级调整事件,具体地,宿主机的管理程序能够接收到优先级控制装置发送的优先级调整事件,该优先级调整事件中携带有优先级调整信息,该优先级调整信息中包括vCPU Host线程的标识、vCPU Host线程需要被调整的优先级、线程组的标识等。
宿主机的管理程序基于该优先级调整信息中包含的线程组的标识,确定对应的线程组,并从该线程组中确定出与vCPUHost线程的标识对应的线程,并将该线程确定为待调整的线程。之后,宿主机的管理程序确定出与vCPU Host线程需要被调整的优先级,所对应的线程组,并将待调整的线程加入到该线程组中,从而完成对vCPU Host线程的优先级进行调整。
实际应用中,安全运行单元的内核可以提供一个接口(如新增一个cgroup的文件)给业务管理程序(业务管理程序这个组件,在本说明书提供的任务处理系统中是一定存在的),业务管理程序创建任务时,可以选择通过自身进行待处理任务与vCPU的匹配处理,实现将两种优先级的任务运行在同一个安全运行单元内;也可以选择安全运行单元内核自动进行待处理任务与vCPU的匹配处理。如果选择Guest自动匹配处理的话,则业务管理程序通过cgroup或syscall等方式,将待处理任务的优先级告诉安全运行单元内核,由安全运行单元内核自己来根据任务的优先级,决定将该任务放置到哪个vCPU上进行处理。
参见图4,图4是本说明书一个实施例提供的一种任务处理方法中进行优先级调整的流程示意图,其中,如图2中Host(宿主机)部分所示;宿主机对宿主机线程的优先级进行调整的步骤,可以参见步骤①、②,也即是,安全容器和虚拟机管理程序能够接收到优先级控制装置发送的优先级调整事件;该优先级调整事件中携带的优先级调整信息,即图4中的vCPU1:高优→低优;其中“vCPU1”可以为vCPU Host线程对应的vCPU的标识;“高优→低优”可以为vCPU Host线程需要被调整为的优先级,即从高优先级调整为低优先级。
安全容器和虚拟机管理程序基于该优先级调整事件中携带的“vCPU1”,确定出该vCPU对应的线程,即Host thread2;并基于“高优→低优”将线程Host thread2移动至低优先级组中,从而将该Host thread2线程的高优先级,调整为低优先级。
基于此,宿主机对宿主机线程的优先级进行调整的流程,具体可以为:安全容器和虚拟机管理程序接收优先级调整请求(即优先级调整事件)、安全容器和虚拟机管理程序调整Host thread优先级、安全容器和虚拟机管理程序更新vCPU优先级信息并提供查询接口、guest内核或者业务管理程序获取vCPU优先级信息并生效任务绑定关系。
其中,图4中的步骤③、④。可参见上述图3中,对通过安全运行单元的Guest内核确定vCPU优先级的描述,在此不进行过多赘述。
本说明书实施例中,宿主机的优先级管理程序在接收到优先级控制对象发送的优先级调整指令之后,根据该优先级调整指令中携带的优先级调整信息,对宿主机线程的优先级进行灵活的调整,从而实现了基于宿主机实际运行情况的不同,灵活的对宿主机线程的优先级进行调整。
在本说明书提供实施例中,所述基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级,包括:
所述安全运行单元通过调用优先级管理程序的对象接口,从所述优先级管理程序获取所述宿主机线程的优先级;以及
基于所述宿主机线程的优先级确定所述vCPU的优先级;
其中,所述优先级管理程序运行在所述宿主机。
具体地,运行在宿主机上的优先级管理程序提供一个对象接口,而安全运行单元可以通过调用优先级管理程序的对象接口,从优先级管理程序获取宿主机线程的优先级,从而基于该宿主机线程的优先级确定出vCPU的优先级。
实际应用中,安全运行单元通过调用优先级管理程序的对象接口,从优先级管理程序获取宿主机线程的优先级,可以通过运行在安全运行单元中的业务管理程序实现。
该业务管理程序从宿主机中获取宿主机线程的优先级的方式,可以是业务管理程序按照特定频率通过优先级管理程序提供的接口,来获取宿主机线程的相应优先级,例如,运行在宿主机上的优先级管理程序确定出vCPU Host线程的优先级之后,可以为安全运行单元上的业务管理程序提供一个接口,而运行在安全运行单元上的业务管理程序能够按照特定的频率,通过调用该接口获取到宿主机中每个vCPU Host线程的优先级;比如每分钟获取一次。便于后续基于该vCPU Host线程的优先级,确定出与之对应的vCPU的优先级。
实际应用中,安全运行单元通过调用优先级管理程序的对象接口,从优先级管理程序获取宿主机线程的优先级,可以通过安全运行单元的内核实现。
安全运行单元的内核从宿主机中获取宿主机线程的优先级的方式,可以是安全运行单元的内核通过优先级管理程序提供的接口,按照特定频率调用该优先级管理程序中的宿主机线程的优先级,例如,运行在宿主机上的优先级管理程序确定出vCPU Host线程的优先级之后,可以为安全运行单元的内核提供一个接口,而安全运行单元的内核能够按照特定的频率,通过调用该接口获取到宿主机中每个vCPU Host线程的优先级;比如每分钟获取一次。便于后续基于该vCPU Host线程的优先级,确定出与之对应的vCPU的优先级。
本说明书实施例中,安全运行单元通过调用优先级管理程序的对象接口,快速的从优先级管理程序获取所述宿主机线程的优先级;从而实现基于宿主机线程的优先级确定vCPU的优先级,便于后续基于vCPU的优先级,确定出对待处理任务进行处理的vCPU。
进一步地,本说明书提供的任务处理方法中,宿主机的虚拟机控制对象对宿主机线程的优先级进行调整的方式,还可以通过对该宿主机线程所属的线程组的优先级进行调整的方式,实现对宿主机线程的优先级进行调整,具体方式如下。
所述根据所述优先级调整指令中携带的优先级调整信息,对所述宿主机线程的优先级进行调整,包括:
所述宿主机的优先级管理程序根据所述优先级调整指令中携带的优先级调整信息,对所述每个线程组的优先级进行调整;以及
将所述每个线程组调整后的优先级,确定为所述宿主机线程调整后的优先级。
沿用上例,宿主机的管理程序能够接收到优先级控制装置发送的优先级调整事件之后,基于该优先级调整事件中携带的线程组的标识确定对应的线程组,该线程组为需要进行优先级调整的vCPU Host线程所属的线程组;基于该优先级调整事件中携带的vCPUHost线程需要被调整的优先级,对该线程组的优先级进行调整;并将该线程组被调整后的优先级,确定为该线程组所包含的vCPU Host线程的优先级,从而实现对vCPU Host线程的优先级进行调整。
本说明书实施例中,宿主机的优先级管理程序根据优先级调整指令中携带的优先级调整信息,对每个线程组的优先级进行调整;并将每个线程组调整后的优先级,确定为宿主机线程调整后的优先级,从而实现灵活的对宿主机线程的优先级进行调整。
本说明书提供的一种应用于任务处理系统的任务处理方法,基于任务处理系统的宿主机,预先确定安全运行单元的vCPU所对应的宿主机线程的优先级,并基于任务处理系统中能够对多全局优先级进行管理的安全运行单元,根据宿主机线程的优先级以及待处理任务的优先级,确定出对待处理任务进行处理的vCPU,从而通过不同优先级的vCPU对不同优先级的待处理任务进行处理,实现了按照待处理任务的优先级的高低,对待处理任务进行处理,避免了任务处理过程中出现混乱,实现了将两种优先级的任务部署在同一个安全运行单元内。
下述结合附图5,以本说明书提供的任务处理方法在同一安全运行单元内运行多种全局优先级任务场景下的应用为例,对所述任务处理方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种任务处理方法的第一种处理过程流程图,该任务处理方法应用于任务处理系统,该任务处理系统包括宿主机以及运行在宿主机上的安全运行单元,具体包括以下步骤。
步骤502:宿主机的安全容器和虚拟机管理程序,确定宿主机线程的优先级。
具体的,Host(宿主机)上的安全容器和虚拟机的管理程序,能够根据cgroup分组内的shares、任务调度策略、rdt的内存访问策略等方法,为宿主机线程创建高优先级的线程组,以及低优先级的线程组,即高优先级组和低优先级组。并将宿主机的宿主机线程添加至高优先级组和低优先级组中,从而确定出安全运行单元的vCPU,所对应的宿主机线程的优先级。
其中,在宿主机运行过程中,安全运行单元中的vCPU是宿主机中的一个vCPU Host线程,该安全运行单元可以理解为虚拟机或者安全容器。
因此。在确定出安全运行单元的vCPU所对应的宿主机线程优先级时,不同的vCPU就对应不同的优先级能力。
步骤504:安全运行单元的业务管理程序基于宿主机线程的优先级,确定vCPU的优先级。
具体地,业务管理程序根据Host上的安全容器和虚拟机的管理程序,所提供的接口(接口有很多种,不一一列举),从该安全容器和虚拟机的管理程序中,获取vCPU对应的宿主机线程的优先级信息,从而确定出vCPU的优先级,也即是该vCPU与优先级能力的对应关系。
步骤506:安全运行单元的业务管理程序基于vCPU的优先级以及任务的优先级,确定对任务进行处理的vCPU。
具体地,安全运行单元的业务管理程序,根据任务被预先配置的全局优先级,将该任务绑定到相应全局优先级的vCPU上。并基于该vCPU对该任务进行处理;由于vCPU通常实现方式是Host上的一个线程或协程,该vCPU在运行时,会被Host调度器调度后运行在一个pCPU(宿主机中央处理器)上,因此,该不同优先级任务被与其具有相同优先级的vCPU进行处理时,该不同优先级的任务就拥有了所在宿主机的全局优先级属性。
步骤508:宿主机的安全容器和虚拟机管理程序对vCPU的优先级进行调整。
具体地,对于高优先级或低优先级的vCPU,可以通过在Host上的优先级控制装置,将针对vCPU的优先级进行调整的优先级调整事件,通知给Host的安全容器和虚拟机管理程序,由安全容器和虚拟机管理程序基于该优先级调整事件,进行vCPU Host线程的动态优先级转换。
而业务管理程序会周期性地通过安全容器和虚拟机管理程序的提供的接口,获取到最新的vCPU的优先级信息,从而通过最新的vCPU的优先级信息,来调整正在运行的任务所在的vCPU,以及指导后续不同优先级任务的处理和创建。
本说明书提供的任务处理方法,通过将一个安全运行单元的不同vCPU对应的宿主机的线程,赋予不同的优先级。同时通过标准接口将vCPU与优先级的对应关系,告知Guest的业务管理程序,并由业务管理程序实现将Guest内不同优先级的任务,绑定到不同优先级的vCPU上。从而实现同一个安全运行单元能够运行多种优先级任务的目的。进一步实现了Guest任务的多种优先级的静态和动态的精确管理。
下述结合附图6,以本说明书提供的任务处理方法在同一安全运行单元内运行多种全局优先级任务场景下的应用为例,对所述任务处理方法再次进行说明。其中,图6示出了本说明书一个实施例提供的一种任务处理方法的第二种处理过程流程图,该任务处理方法应用于任务处理系统,该任务处理系统包括宿主机以及运行在宿主机上的安全运行单元,具体包括以下步骤。
步骤602:宿主机的安全容器和虚拟机管理程序,确定宿主机线程的优先级。
具体的,Host(宿主机)上的安全容器和虚拟机的管理程序,能够根据cgroup分组内的shares、任务调度策略、rdt的内存访问策略等方法,为宿主机线程创建高优先级的线程组,以及低优先级的线程组,即高优先级组和低优先级组。并将宿主机的宿主机线程添加至高优先级组和低优先级组中,从而确定出安全运行单元的vCPU,所对应的宿主机线程的优先级。
其中,在宿主机运行过程中,安全运行单元中的vCPU是宿主机中的一个vCPU Host线程,该安全运行单元可以理解为虚拟机或者安全容器。
因此。在确定出安全运行单元的vCPU所对应的宿主机线程优先级时,不同的vCPU就对应不同的优先级能力。
步骤604:安全运行单元的Guest内核基于宿主机线程的优先级,确定vCPU的优先级。
具体地,Host上的安全容器和虚拟机的管理程序,会在初始化或优先级变化时,向安全运行单元的Guest内核,发送vCPU对应的宿主机线程的优先级信息。该安全运行单元的Guest内核在接收到vCPU对应的宿主机线程的优先级信息之后,能够基于该优先级信息确定出vCPU的优先级,也即是该vCPU与优先级能力的对应关系。
步骤606:安全运行单元的Guest内核基于vCPU的优先级以及任务的优先级,确定对任务进行处理的vCPU。
具体地,安全运行单元的Guest内核根据任务被预先配置的全局优先级,将该任务调度到相应全局优先级的vCPU上。并基于该vCPU对该任务进行处理;由于vCPU通常实现方式是Host上的一个线程或协程,该vCPU在运行时,会被Host调度器调度后运行在一个pCPU(宿主机中央处理器)上,因此,该不同优先级任务被与其具有相同优先级的vCPU进行处理时,该不同优先级的任务就拥有了所在宿主机的全局优先级属性。
步骤608:宿主机的安全容器和虚拟机管理程序对vCPU的优先级进行调整。
具体地,对于高优先级或低优先级的vCPU,可以通过在Host上的优先级控制装置,将针对vCPU的优先级进行调整的优先级调整事件,通知给Host的安全容器和虚拟机管理程序,由安全容器和虚拟机管理程序基于该优先级调整事件,进行vCPU Host线程的动态优先级转换。
安全容器和虚拟机管理程序在对vCPU Host线程的优先级进行调整之后,会将调整后的优先级信息发送至安全运行单元的Guest内核,该安全运行单元的Guest内核通过接收的、最新的vCPU的优先级信息,来调整正在运行的任务所在的vCPU,以及指导后续不同优先级任务的处理和创建。
本说明书提供的任务处理方法,通过将一个安全运行单元的不同vCPU对应的宿主机的线程,赋予不同的优先级。同时通过标准接口将vCPU与优先级的对应关系,告知Guest内核,并由Guest内核实现将Guest内不同优先级的任务,绑定到不同优先级的vCPU上。从而实现同一个安全运行单元能够运行多种优先级任务的目的。进一步实现了Guest任务的多种优先级的静态和动态的精确管理。
与上述方法实施例相对应,本说明书还提供了任务处理系统实施例,图7示出了本说明书一个实施例提供的一种任务处理系统的结构示意图。如图7所示,该系统包括宿主机702以及运行在所述宿主机上的安全运行单元704,其中,
所述宿主机702,被配置为根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;
所述安全运行单元704,被配置为基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及
基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
可选地,所述宿主机702,还被配置为:
所述宿主机的优先级管理程序创建至少两个线程组,通过预设优先级策略确定每个线程组的优先级;以及
将宿主机线程添加至所述每个线程组,并基于所述每个线程组的优先级确定所述宿主机线程的优先级。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元的业务管理程序基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元的业务管理程序接收携带有优先级标签的待处理任务;以及
基于所述优先级标签,通过任务优先级策略确定所述待处理任务的优先级。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元的业务管理程序将所述vCPU的优先级,与待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为运行所述待处理任务对应的所述vCPU。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元的内核基于从所述宿主机中确定的宿主机线程的优先级,确定所述vCPU的优先级。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元的内核接收携带有优先级的待处理任务,并将所述vCPU的优先级,与所述待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为处理所述待处理任务的所述vCPU;
其中,所述待处理任务为运行在所述安全运行单元的业务管理程序发送的。
可选地,所述宿主机702,还被配置为:
所述宿主机的优先级管理程序接收优先级控制对象发送的优先级调整指令,并根据所述优先级调整指令中携带的优先级调整信息,对所述宿主机线程的优先级进行调整。
可选地,所述宿主机702,还被配置为:
所述宿主机的优先级管理程序根据所述优先级调整指令中携带的优先级调整信息,对所述每个线程组的优先级进行调整;以及
将所述每个线程组调整后的优先级,确定为所述宿主机线程调整后的优先级。
可选地,所述安全运行单元704,还被配置为:
所述安全运行单元通过调用优先级管理程序的对象接口,从所述优先级管理程序获取所述宿主机线程的优先级;以及
基于所述宿主机线程的优先级确定所述vCPU的优先级;
其中,所述优先级管理程序运行在所述宿主机。
可选地,所述安全运行单元为运行在所述宿主机上的虚拟机,或
运行在所述宿主机上的安全容器。
本说明书提供的任务处理系统,基于任务处理系统的宿主机,预先确定宿主机线程的优先级,该宿主机线程即为安全运行单元中的vCPU,基于任务处理系统中能够对多全局优先级进行管理的安全运行单元,通过宿主机线程的优先级确定的vCPU的优先级,并基于vCPU的优先级确定出,对具有不同优先级的待处理任务进行运行的vCPU;从而避免了任务运行过程中对任务的处理出现混乱,实现了按照待处理任务的优先级的高低,对待处理任务进行处理,进一步达到了将两种优先级的任务部署在同一个安全运行单元内的目的。
上述为本实施例的一种任务处理系统的示意性方案。需要说明的是,该任务处理系统的技术方案与上述的任务处理方法的技术方案属于同一构思,任务处理系统的技术方案未详细描述的细节内容,均可以参见上述任务处理方法的技术方案的描述。
图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
其中,处理器820用于执行计算机可执行指令,该计算机可执行指令被处理器820执行时实现上述任务处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的任务处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述任务处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述任务处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的任务处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述任务处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述任务处理方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的任务处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述任务处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (14)
1.一种任务处理方法,应用于任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,所述方法包括:
所述宿主机根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;
所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及
基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
2.根据权利要求1所述的任务处理方法,所述宿主机根据预设优先级策略确定宿主机线程的优先级,包括:
所述宿主机的优先级管理程序创建至少两个线程组,通过预设优先级策略确定每个线程组的优先级;以及
将宿主机线程添加至所述每个线程组,并基于所述每个线程组的优先级确定所述宿主机线程的优先级。
3.根据权利要求1所述的任务处理方法,所述基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级,还包括:
所述安全运行单元的业务管理程序基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级。
4.根据权利要求1所述的任务处理方法,所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU之前,还包括:
所述安全运行单元的业务管理程序接收携带有优先级标签的待处理任务;以及
基于所述优先级标签,通过任务优先级策略确定所述待处理任务的优先级。
5.根据权利要求3所述的任务处理方法,所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU,包括:
所述安全运行单元的业务管理程序将所述vCPU的优先级,与待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为运行所述待处理任务对应的所述vCPU。
6.根据权利要求1所述的任务处理方法,所述安全运行单元基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级之后,还包括:
所述安全运行单元的内核基于从所述宿主机中确定的宿主机线程的优先级,确定所述vCPU的优先级。
7.根据权利要求6所述的任务处理方法,所述基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU,包括:
所述安全运行单元的内核接收携带有优先级的待处理任务,并将所述vCPU的优先级与所述待处理任务的优先级进行匹配;以及
将与所述待处理任务相匹配的所述vCPU,确定为处理所述待处理任务的所述vCPU;
其中,所述待处理任务为运行在所述安全运行单元的业务管理程序发送的。
8.根据权利要求2所述的任务处理方法,所述宿主机根据预设优先级策略确定宿主机线程的优先级之后,还包括:
所述宿主机的优先级管理程序接收优先级控制对象发送的优先级调整指令,并根据所述优先级调整指令中携带的优先级调整信息,对所述宿主机线程的优先级进行调整。
9.根据权利要求8所述的任务处理方法,所述根据所述优先级调整指令中携带的优先级调整信息,对所述宿主机线程的优先级进行调整,包括:
所述宿主机的优先级管理程序根据所述优先级调整指令中携带的优先级调整信息,对所述每个线程组的优先级进行调整;以及
将所述每个线程组调整后的优先级,确定为所述宿主机线程调整后的优先级。
10.根据权利要求1至9任一项所述的任务处理方法,所述基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级,包括:
所述安全运行单元通过调用优先级管理程序的对象接口,从所述优先级管理程序获取所述宿主机线程的优先级;以及
基于所述宿主机线程的优先级确定所述vCPU的优先级;
其中,所述优先级管理程序运行在所述宿主机。
11.根据权利要求1至9任一项所述的任务处理方法,所述安全运行单元为运行在所述宿主机上的虚拟机,或
运行在所述宿主机上的安全容器。
12.一种任务处理系统,所述系统包括宿主机以及运行在所述宿主机上的安全运行单元,其中,
所述宿主机,被配置为根据预设优先级策略确定宿主机线程的优先级,其中,所述宿主机线程为所述安全运行单元的vCPU;
所述安全运行单元,被配置为基于从所述宿主机确定的所述宿主机线程的优先级,确定所述vCPU的优先级;以及
基于所述vCPU的优先级确定运行待处理任务对应的所述vCPU。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述任务处理方法的步骤。
14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述任务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111307054.9A CN114168278A (zh) | 2021-11-05 | 2021-11-05 | 任务处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111307054.9A CN114168278A (zh) | 2021-11-05 | 2021-11-05 | 任务处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168278A true CN114168278A (zh) | 2022-03-11 |
Family
ID=80478144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111307054.9A Pending CN114168278A (zh) | 2021-11-05 | 2021-11-05 | 任务处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168278A (zh) |
-
2021
- 2021-11-05 CN CN202111307054.9A patent/CN114168278A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442762B2 (en) | Systems and methods for introspective application reporting to facilitate virtual machine movement between cloud hosts | |
CN110720091B (zh) | 用于与托管的应用/虚拟网络功能(vnf)协调基础设施升级的方法 | |
CN108369534B (zh) | 代码执行请求路由 | |
EP3201767B1 (en) | Method and system to process requests to execute user code on one or more virtual machine instances identified from a plurality of warmed unassigned virtual machine instances | |
US9977691B2 (en) | Adjusting variable limit on concurrent code executions based on communication between frontends | |
US20170085419A1 (en) | System and method for deploying an application | |
EP3201762B1 (en) | Dynamic code deployment and versioning | |
US10768960B2 (en) | Method for affinity binding of interrupt of virtual network interface card, and computer device | |
US9454359B2 (en) | Deployment optimization for high availability in a multi-tenant platform-as-a-service (PaaS) system | |
EP2907023B1 (en) | Performing reboot cycles, a reboot schedule on on-demand rebooting. | |
US8832459B2 (en) | Securely terminating processes in a cloud computing environment | |
US20170371717A1 (en) | Resource management in cloud systems | |
US8271653B2 (en) | Methods and systems for cloud management using multiple cloud management schemes to allow communication between independently controlled clouds | |
EP3313023A1 (en) | Life cycle management method and apparatus | |
CN108255497B (zh) | 一种应用的部署方法及装置 | |
EP3413196A1 (en) | Service container creation method and device | |
US11106492B2 (en) | Workflow service for a cloud foundry platform | |
EP3913859A1 (en) | Vnf life cycle management method and apparatus | |
WO2011094301A1 (en) | Method and system for abstracting non-functional requirements based deployment of virtual machines | |
Tseng et al. | Task Scheduling for Edge Computing with Agile VNFs On‐Demand Service Model toward 5G and Beyond | |
US20140067864A1 (en) | File access for applications deployed in a cloud environment | |
US20230048833A1 (en) | Method, apparatus, and storage medium for scheduling tasks | |
US20210334126A1 (en) | On-demand code execution with limited memory footprint | |
US11561843B2 (en) | Automated performance tuning using workload profiling in a distributed computing environment | |
CN114168278A (zh) | 任务处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |