CN112130963A - 虚拟机任务的调度方法、装置、计算机设备及存储介质 - Google Patents
虚拟机任务的调度方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112130963A CN112130963A CN202011057197.4A CN202011057197A CN112130963A CN 112130963 A CN112130963 A CN 112130963A CN 202011057197 A CN202011057197 A CN 202011057197A CN 112130963 A CN112130963 A CN 112130963A
- Authority
- CN
- China
- Prior art keywords
- task
- processor
- offline
- tasks
- online
- 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/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
- 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
Abstract
本申请关于一种虚拟机任务的调度方法、装置、计算机设备及存储介质,涉及云计算技术领域。该方法包括:获取目标处理器对应的任务集合,该任务集合中包含至少一个虚拟机任务;该虚拟机任务的任务类型为离线任务或者在线任务;响应于活动任务集合中的第一任务满足调度条件,获取目标处理器当前运行的第二任务的任务类型;该第一任务是在线任务;响应于第二任务的任务类型指示第二任务为离线任务,将目标处理器运行的任务切换为第一任务。通过上述方法,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
Description
技术领域
本申请实施例涉及云计算技术领域,特别涉及一种虚拟机任务的调度方法、装置、计算机设备及存储介质。
背景技术
在云计算场景中,同一台云主机上的运行着不同虚拟机,各个虚拟机共享主机的硬件资源,业务运行于虚拟机之上,而虚拟机之间一般存在对主机硬件资源的竞争,从而产生阻塞和延迟,使得主机资源不能完全被利用,特别是中央处理器(Central ProcessingUnit,CPU)资源。
在相关技术中,为避免因对CPU资源的竞争而导致任务调度延时,提高主机资源的利用率,通常将执行相同类型任务的虚拟机部署在同一台云主机上,即将在线虚拟机部署在同一台云主机上,或者,将离线虚拟机部署在同一台云主机上。
然而,上述方案无法满足不同类型的业务混合部署的需求,若将不同类型的任务进行混合部署,则会因离线任务对CPU资源的持续占用而对在线任务产生严重干扰,导致在线业务异常,因此如何实现不同类型的任务在同一台云主机上混合部署的问题亟待解决。
发明内容
本申请实施例提供了一种虚拟机任务的调度方法、装置、计算机设备及存储介质,可以实现不同类型的任务在同一台云主机上的混合部署,该技术方案如下:
一方面,提供了一种虚拟机任务的调度方法,所述方法包括:
获取目标处理器对应的任务集合,所述任务集合中包含至少一个虚拟机任务;所述虚拟机任务的任务类型为离线任务或者在线任务,所述离线任务是离线虚拟机对应的任务,所述在线任务是除所述离线任务之外的其他任务;
响应于所述任务集合中的第一任务满足调度条件,获取所述目标处理器当前执行的第二任务的任务类型;所述第一任务是所述在线任务;
响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,将所述目标处理器执行的任务切换为所述第一任务。
另一方面,提供了一种虚拟机任务的调度装置,所述装置包括:
第一获取模块,用于获取目标处理器对应的任务集合,所述任务集合中包含至少一个虚拟机任务;所述虚拟机任务的任务类型为离线任务或者在线任务,所述离线任务是离线虚拟机对应的任务,所述在线任务是除所述离线任务之外的其他任务;
第二获取模块,用于响应于所述任务集合中的第一任务满足调度条件,获取所述目标处理器当前执行的第二任务的任务类型;所述第一任务是所述在线任务;
第一切换模块,用于响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,将所述目标处理器执行的任务切换为所述第一任务。
在一种可能的实现方式中,所述调度条件包括:所述第一任务被唤醒、时钟中断来临、以及所述第一任务被创建中的任意一种。
在一种可能的实现方式中,所述第一切换模块,包括:
队列加入子模块,用于将所述第一任务加入所述目标处理器的运行队列;
队列移除子模块,用于将所述运行队列中,包括所述第二任务在内的各个所述离线任务移除。
在一种可能的实现方式中,所述装置还包括:
在线任务调度模块,用于响应于所述运行队列中包含至少两个所述在线任务,采用第一调度算法对至少两个所述在线任务在所述目标处理器中的执行方式进行调度。
在一种可能的实现方式中,所述在线任务调度模块,包括:
第一时间获取子模块,用于获取至少两个所述在线任务的虚拟执行时间,所述虚拟执行时间用以表示所述在线任务加权后的实际执行时间;
在线任务调度子模块,用于响应于第一在线任务的所述虚拟执行时间达到第一时间阈值,在所述目标处理器上执行第二在线任务,所述第一在线任务是至少两个所述在线任务中的任意一个;所述第二在线任务是至少两个所述在线任务中,所述虚拟执行时间最小的一个。
在一种可能的实现方式中,所述装置还包括:
队列加入模块,用于响应于所述运行队列中的各个所述在线任务执行完成,且所述第二任务处于所述任务集合中,将所述第二任务加入所述运行队列。
在一种可能的实现方式中,所述装置还包括:
离线任务调度模块,用于响应于所述运行队列中包含至少两个所述离线任务,采用第二调度算法对至少两个所述离线任务在所述目标处理器中的执行方式进行调度。
在一种可能的实现方式中,所述离线任务调度模块,包括:
第二时间获取子模块,用于获取第一离线任务的单次实际执行时间;所述第一离线任务是所述目标处理器上当前执行的离线任务;
离线任务调度子模块,用于响应于所述第一离线任务的单次实际执行时间达到第二时间阈值,在所述目标处理器上执行第二离线任务,所述第二离线任务是至少两个所述离线任务中,累计实际执行时间最少的一个。
在一种可能的实现方式中,所述装置还包括:
第三获取模块,用于在所述第一获取模块所述获取目标处理器对应的任务集合之前,响应于所述第二任务满足所述调度条件,获取所述第二任务的任务类型;
第一运行状态遍历模块,用于响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,遍历至少一个处理器的运行状态,所述至少一个处理器的运行状态包括第一状态,第二状态以及第三状态中的一种;所述第一状态是指处理器处于空闲状态,所述第二状态是指处理器处于离线任务运行状态,所述第三状态是指处理器处于在线任务运行状态;
第四获取模块,用于基于所述至少一个处理器的运行状态,从所述至少一个处理器中获取所述目标处理器;
第二执行模块,用于在所述目标处理器上执行所述第二任务。
在一种可能的实现方式中,所述第四获取模块,包括:
第一获取子模块,用于获取处于所述第一状态的处理器为所述目标处理器;
第二获取子模块,用于响应于不存在处于所述第一状态的处理器,获取处于所述第二状态的处理器为所述目标处理器;
第三获取子模块,用于响应于不存在处于所述第一状态和所述第二状态的处理器,获取处于所述第三状态的处理器中,处于运行状态的任务数量最少的一个为所述目标处理器。
在一种可能的实现方式中,所述装置还包括:
第二运行状态遍历模块,用于响应于负载均衡时机到来,且所述目标处理器处于执行所述第二任务的状态,遍历除所述目标处理器外的至少一个处理器;
第一确定模块,用于从所述目标处理器外的至少一个处理器中确定第一处理器,所述第一处理器为处于所述第三状态的处理器;
第一调度模块,用于将所述第一处理器上运行的指定数量的离线任务调度到所述目标处理器上执行。
在一种可能的实现方式中,所述装置还包括:
第二确定模块,用于响应于不存在所述第一处理器,确定第二处理器,所述第二处理器为处于所述第二状态的处理器中,满足负载均衡条件的处理器;所述负载均衡条件是指所述目标处理器与所述第二处理器之间的负载差值达到负载差阈值,且所述目标处理器的负载较小于所述第二处理器的负载;
第二调度模块,用于将所述第二处理器上运行的指定数量的离线任务调度到所述目标处理器上执行。
另一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述各种可选实现方式中提供的虚拟机任务的调度方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述各种可选实现方式中提供的虚拟机任务的调度方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的虚拟机任务的调度方法。
本申请提供的技术方案可以包括以下有益效果:
通过在进行任务调度时,将目标处理器对应的任务集合中满足调度条件的在线任务调度到处于离线任务执行状态的目标处理器中,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1示出了本申请一示例性实施例提供的任务调度系统的结构示意图;
图2示出了本申请一示例性实施例提供的虚拟机任务的调度方法的流程图;
图3示出了本申请一示例性实施例示出的云服务器结构的示意图;
图4示出了本申请一示例性实施例提供的虚拟机任务的调度方法的流程图;
图5示出了本申请一示例性实施例示出的云服务器结构的示意图;
图6示出了本申请一示例性实施例示出的任务调度的逻辑示意图;
图7示出了本申请一示例性实施例示出的任务调度的逻辑示意图;
图8示出了本申请一示例性实施例示出的任务调度的逻辑示意图;
图9示出了本申请一示例性实施例示出的任务调度的逻辑示意图;
图10示出了本申请一示例性实施例示出的离线任务之间进行任务调度的逻辑示意图;
图11示出了本申请一示例性实施例示出的调度离线任务的逻辑示意图;
图12示出了本申请一示例性实施例示出的离线任务负载均衡的逻辑示意图;
图13示出了本申请一示例性实施例示出的任务调度系统的示意图;
图14示出了本申请一示例性实施例示出的虚拟机任务的调度装置的方框图;
图15是根据一示例性实施例示出的计算机设备的结构框图;
图16是根据一示例性实施例示出的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请实施例提出了一种虚拟机任务的调度方法,该方案能够提高CPU的整体利用率。为了便于理解,下面对本申请涉及的名词进行解释。
1)云计算(Cloud Computing)
云计算是指IT(Information Technology,信息技术)基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。
云计算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(NetworkStorage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
2)虚拟机(Virtual Machine)
虚拟机是计算机系统的仿真器,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能够提供物理计算机的功能。
虚拟机根据他们的运用和与直接机器的相关性可分为系统虚拟机和程序虚拟机,系统虚拟机可以提供一个可以运行完整操作系统的完整系统平台,程序虚拟机则为运行单个计算机程序设计。其本质特点是运行在虚拟机上的软件被局限在虚拟机提供的资源里。
在云计算场景中,典型的应用场景为:虚拟机运行于云服务器(也称云主机)之上,任务运行于虚拟机之上。同一台主机上的不同虚拟机,共享主机的硬件资源,包括CPU、内核、I/O(Input/Output,输入/输出)接口等资源。通常,为避免虚拟机之间因主机资源竞争而产生阻塞和延时,导致任务出现异常,主机资源一般不能完全被利用,尤其是CPU资源,通常的云主机的整体CPU占用率不会超过50%,运行于虚拟机中的不同任务分时复用主机的CPU资源。
3)负载均衡
负载均衡,又称负载分担,是指将负载(任务)进行平衡、分摊到多个操作单元上进行执行,例如Web(World Wide Web,全球广域网)服务器、FTP(File Transfer Protocol,文件传输协议)服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务,在本申请中体现为在不同CPU之间进行任务的负载均衡。
图1示出了本申请一示例性实施例提供的任务调度系统的结构示意图,如图1所示,该任务调度系统包括服务器110和终端120。
上述服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
上述终端120可以是各种个人计算机、智能手机、平板电脑、笔记本电脑、台式计算机以及便携式可穿戴设备等,但并不局限于此。终端120向服务器110上传配置信息,服务器110基于终端120上传的配置信息对不同类型的任务进行任务调度。
其中,上述系统中包含一个或者多个服务器110,以及多个终端120。本申请实施例对于服务器110和终端120的个数不做限制。
终端以及服务器通过通信网络相连。可选的,通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。本申请在此不做限制。
图2示出了本申请一示例性实施例提供的虚拟机任务的调度方法的流程图,该方法由服务器执行,该服务器可以实现为图1所示任务调度系统中的服务器,该服务器可以是云服务器,即云主机,如图2所示,该方法包括:
步骤210,获取目标处理器对应的任务集合,该任务集合中包含至少一个虚拟机任务;该虚拟机任务的任务类型为离线任务或者在线任务,该离线任务是离线虚拟机对应的任务,该在线任务是除离线任务之外的其他任务。
在云计算场景中,虚拟机运行于云服务器(云主机)上,任务运行在虚拟机上;基于任务对延时的敏感程度,可以将任务划分为在线任务和离线任务,其中,在线任务是指对延时敏感,但整体CPU占用率较低,不会持续消耗CPU资源的任务,比如:在线购物车、支付业务等;离线任务是指对延时不敏感,但需要持续消耗CPU,对CPU资源占用率较高,最高CPU占用率可达100%的任务,比如:AI(Artificial Intelligence,人工智能)计算、函数计算等。其中,在线任务相对离线任务具有绝对的高优先级,是重点保障对象;离线任务具有绝对的低优先级。
在相关技术中,离线任务的绝对低优先级设置可能会导致优先级反转的问题,即低优先级任务持锁后被抢占,导致高优先级任务因等锁阻塞,从而造成高优先级的任务后执行的情况。但在混合部署虚拟机的场景中,由于虚拟机之间存在天然的隔离(由虚拟机底层机制提供),虚拟机之间基本没有共享的软件临界区,比如共享的锁,而对于内核线程或者虚拟化机制中的一些特殊的需要共享软件临界区的逻辑,只需要采用隔离或规避等手段,即可避免优先级反转的问题,比如,对于Linux系统中的proc虚拟文件系统,不同的虚拟机可能并发访问,只需要在虚拟机层面做一定的隔离,即可避免出现优先级反转的问题。在优先级反转问题解决的前提下,即可设计离线任务处于绝对低优先级。
在一种可能的实现方式中,在满足混合部署不同类型任务的云服务器中,混合部署有不同类型的虚拟机,包括在线虚拟机和离线虚拟机;其中,在线虚拟机用于运行在线任务,离线虚拟机用于运行离线任务,图3示出了本申请一示例性实施例示出的云服务器结构的示意图,如图3所示,在云服务器300中包含有虚拟机310,调度器320以及CPU330,其中,虚拟机310分为在线虚拟机311以及离线虚拟机312,在线虚拟机311用于运行在线任务,离线虚拟机用于运行离线任务,且云服务器中包含至少一个在线虚拟机和至少一个离线虚拟机,在各个虚拟机中,包含有至少一个VCPU(Virtualization Central Processing Unit,虚拟CPU),其本质为操作系统中的一个普通进程,即任务,也就是说,各个虚拟机中运行有至少一个对应类型的任务;调度器320用于执行本申请所提供的虚拟机任务的调度方法,用以实现对不同类型的任务的混合调度;CPU330用于为虚拟机提供CPU硬件资源。
步骤220,响应于活动任务集合中的第一任务满足调度条件,获取目标处理器当前运行的第二任务的任务类型;该第一任务是在线任务。
由于在不同类型任务在同一云服务器上混合部署时,需要优先保证延时敏感型的在线任务的执行,再考虑CPU的利用率问题,因此,当不同类型的任务在同一云服务器上混合部署时,在线任务相对于离线任务具有绝对的高优先级,离线任务具有最低优先级,即当在线任务和离线任务同时存在于同一CPU中时,优先执行在线任务。
因此,目标处理器中第一任务的运行状态与目标处理器中当前运行的第二任务的任务类型相关。
步骤230,响应于第二任务的任务类型指示第二任务为离线任务,将目标处理器运行的任务切换为第一任务。
同一CPU在进行任务运行时,在同一时间内,只有一个任务在执行,但任务之间以较快的速度进行切换,因此同一CPU可以同时运行多个任务,但同一时间只能执行一个任务,也就是说,处于运行状态的任务可以处于执行状态,也可以处于待执行状态。
当目标处理器中当前执行的任务的任务类型为离线任务时,说明目标处理器当前没有在线任务需要处理,因此,将第一任务(在线任务)调度至目标处理器中,优先执行。
综上所述,本申请实施例提供的虚拟机任务的调度方法,通过在进行任务调度时,将目标处理器对应的任务集合中满足调度条件的在线任务调度到处于离线任务执行状态的目标处理器中,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
在一种可能的实现方式中,CPU可以处于三种状态,包括:运行在线任务的状态,运行离线任务的状态以及未运行任务的状态,在上述情况下,对于在线任务而言,CPU处于运行离线任务的状态以及未运行任务的状态时,均可视为CPU处于相对空闲状态。
当目标处理器为处于运行离线任务的状态时,请参考图4,其示出了本申请一示例性实施例提供的虚拟机任务的调度方法的流程图,该方法由服务器执行,该服务器可以实现为图1所示任务调度系统中的服务器,该服务器可以是云服务器,即云主机,如图4所示,该方法包括:
步骤410,获取目标处理器对应的任务集合,该任务集合中包含至少一个虚拟机任务;该虚拟机任务的任务类型为离线任务或者在线任务,该离线任务是离线虚拟机对应的任务,该在线任务是除离线任务之外的其他任务。
在一种可能的实现方式中,将运行在云服务器上的虚拟机中的任务按照任务类型划分为在线任务和离线任务,其中,运行在云服务器上的虚拟器中的各个任务的任务类型是基于用户的设置操作进行设置的,比如,通过图1所示的终端对服务器中运行的各个任务的任务类型进行设置,以使得云服务器能够根据设置好的各个任务的任务类型执行相应的任务调度策略。
在一种可能的实现方式中,每种任务类型定义有不同的标识,用以实现对在线任务和离线任务的区分。
在一种可能的实现方式中,云服务器通过云服务器中设置的调度器实现对不同类型任务的混合调度,图5示出了本申请一示例性实施例示出的云服务器结构的示意图,如图5所示,将云服务器500中的各个任务按照任务类型划分为在线任务510和离线任务520,调度器530基于不同任务类型对应的调度策略,将在线任务和离线任务调度到适当的CPU上运行,实现对CPU的分时复用,从而提高对CPU资源的利用率。
在一种可能的实现方式,用户可以通过任务调度系统提供的用户动态接口,比如Linux操作系统提供的/proc和/sys虚拟文件系统接口,将用户配置设置到任务调度系统的调度器中,即Linux操作系统的调度器中,并保存在云主机调度器的与任务相关的中结构体或者全局变量,用以后续调度器在实时任务调度时进行查询。
在一种可能的实现方式中,该用户动态接口可以包括任务的调度类型设置接口,以及调度参数设置接口;用户可以通过任务的调度类型设置接口设置指定任务的调度类型,比如,将离线虚拟机的相关进程的调度类型设置为离线类型任务,将除离线虚拟机的相关任务之外的其他进程的调度类型设置为在线类型任务,其中,其他进程包括主机进程、内核线程,比如rcu相关线程等。其中,主机进程包含维持云服务器正常运行的所有进程和云服务器中实现特定功能需要运行的进程;维持云服务器正常运行的进程包含内核线程;实现特定功能的进程包括监控进程以及用户系统维护的代理进程。当云服务器执行在线任务时,通过调度器将运行的在线进程调度至对应的CPU中;当云服务器执行离线任务时,通过调度器将运行的离线进程调度至对应的CPU中。用户可以通过调度参数设置接口,根据不同的场景需求,设置符合当前场景需求的调度参数,比如在线/离线任务的最长运行时长、在线/离线任务的最长等待运行时长、在线/离线任务的权重比例等等。
步骤420,响应于任务集合中的第一任务满足调度条件,获取目标处理器当前执行的第二任务的任务类型;该第一任务是在线任务。
在一种可能的实现方式中,该调度条件包括第一任务被唤醒、时钟中断来临以及第一任务被创建中的任意一种。
其中,目标处理器对应的任务集合是指调度器已经配置给目标处理器的,预定由目标处理器执行的任务的集合,目标处理器在对任务进行执行时,可以将执行的任务加入到运行队列,按照设定到的时钟中断对执行的任务进行调度。
在一种可能的实现方式中,第一任务可以是已经被调度器配置给目标处理器的处于睡眠状态的在线任务;或者,第一任务是已经被调度器配置给目标处理器的处于运行队列但处于未执行状态的在线任务;或者,第一任务也可以是新创建的尚未被调度器配置给目标处理器的在线任务。
在上述三种情况下,均需要对目标处理器当前执行的第二任务的任务类型进行判断,以确定第一任务是否能够在目标处理器上被执行。
步骤430,响应于第二任务的任务类型指示第二任务为离线任务,将第一任务加入目标处理器的运行队列。
在一种可能的实现方式中,每个CPU上都对应有相对独立的运行队列,例如,该运行队列可以是基于链表或其他可实现类似功能的数据结构实现的运行队列。每个运行队列具有相应的队列操作接口,该队列操作接口包括入队接口以及出队接口;当任务从睡眠状态切换为运行状态时,对入队接口进行调用,实现将任务加入运行队列,并对运行队列中的任务进行相应的状态、统计更新。当任务从运行状态切换回睡眠状态时,对出队接口进行调用,实现将任务移除运行队列,并对运行队列中的任务进行相应的状态、统计更新。当任务被加入到运行队列中时,可以视为该任务处于“Running”状态,即运行状态;当任务被移除运行队列时,可以视为该任务处于“Sleep”状态,即睡眠状态。
在一种可能的实现方式中,响应于运行队列中包含至少两个在线任务,采用第一调度算法对至少两个在线任务在目标处理器中的执行方式进行调度。
该第一调度算法用以保证至少两个在线任务在目标处理器上的执行时间的一致性。
在一种可能的实现方式中,采用第一调度算法对至少两个在线任务在目标处理器中的执行方式进行调度,包括:
获取至少两个在线任务的虚拟执行时间,该虚拟执行时间用以表示在线任务加权后的实际执行时间;
响应于第一在线任务的虚拟执行时间达到第一时间阈值,在目标处理器上执行第二在线任务,该第一在线任务是至少两个在线任务中的任意一个;该第二在线任务是至少两个在线任务中,虚拟执行时间最小的一个。
在一种可能的实现方式中,该第一调度算法是CFS(Completely Fair Scheduler,完全公平调度器)算法,用以维护为任务提供处理器时间方面的平衡,完全公平调度器为每一个进程(任务)设置一个虚拟时钟(vruntime),如果一个任务得以执行,随着时间的增长,其vruntime将不断增大,而没有得到执行的任务的vruntime保持不变;在每一次时间中断来临时,调度器选择vruntime最小的任务进行执行,以使得各个任务的被执行的虚拟时间相同。
在一种可能的实现方式中,各个在线任务之间存在不同的优先级,通过对各个在线任务设置不同的nice值加以区分,在Linux系统中,nice的范围从-20到+19,正值表示低优先级,负值表示高优先级,值为0则表示不会调整该任务的优先级;每个任务在创建时,被赋予了不同的优先级,因此,每个任务在其计划执行时被赋予了一个nice值,即具有对应的任务权重。
其中,虚拟时间vruntime的计算公式为:
vruntime=实际运行时间*1024/任务权重
其中,1024是指nice为0的任务的权重,也就是说,所有任务都以nice为0的任务的权重1024作为基准计算vruntime的增加速度。
在在线任务之间进行任务调度时,保证各个在线任务的虚拟执行时间相等,以保证在线任务之间的调度公平性和及时性。
对应于第一任务(在线任务)的满足的调度条件,有:
第一种情况,当第一任务由最初的睡眠状态被唤醒时,触发任务调度,即唤醒时抢占;
第二种情况,当第一任务处于运行队列,时钟中断来临时,触发任务调度,即周期性抢占;
第三种情况,当在线任务被创建时,触发任务调度,即创建时抢占。
在第一种情况下,请参考图6,其示出了本申请一示例性实施例示出的任务调度的逻辑示意图,如图6所示,该任务调度过程包括:
S601,在线任务处于睡眠状态。
S602,唤醒在线任务。
S603,判断目标处理器中正在执行的任务是否为离线任务,若是,则执行S604,否则,执行S605。
S604,调度器将在线任务调度至目标处理器运行,即发生抢占。
S605,调度器进入标准调度器处理逻辑。
其中,标准调度器处理逻辑即目标处理器对正在处理的在线任务进行执行,按照第一调度算法进行在线任务之间的切换,当在线任务执行结束后,运行离线任务。
在第二种情况下,请参考图7,其示出了本申请一示例性实施例示出的任务调度的逻辑示意图,如图7所示,该任务调度过程包括:
S701,在线任务处于运行队列。
S702,时钟中断来临,触发调度器进行任务调度。
S703,判断目标处理器中正在执行的任务是否为离线任务,若是,则执行S704,否则,执行S705。
S704,调度器将在线任务调度至目标处理器运行,即发生抢占。
S705,调度器按照标准任务调度处理逻辑对在线任务进行调度。
在第二种情况下,请参考图8,其示出了本申请一示例性实施例示出的任务调度的逻辑示意图,如图8所示,该任务调度过程包括:
S801,调度器调用创建任务接口,创建新任务。
在一种可能的实现方式中,调度器通过Linux内核中的fork()函数创建新任务。
S802,判断新任务是否为在线任务,若是,则执行S803,否则,执行S804。
S803,判断目标处理器中正在执行的任务是否为离线任务,若是,则执行S805,否则,执行S804。
S804,调度器进入标准调度器处理逻辑。
S805,调度器将在线任务调度至目标处理器运行,即发生抢占。
步骤440,将运行队列中,包括第二任务在内的各个离线任务移除。
当目标处理器中执行的第二任务的任务类型为离线任务,在此时进行任务调度时,暂停在目标处理器中对所有离线任务的执行,将在线任务调度至目标处理器中执行。
其中,将包括第二任务在内的各个离线任务移除是指将所有离线任务设置为睡眠状态,在为进行CPU负载均衡调度的前提下,其仍处于目标处理器对应的任务集合中。
步骤450,响应于运行队列中的各个在线任务执行完成,且第二任务处于任务集合中,将第二任务加入运行队列。
图9示出了本申请一示例性实施例示出的任务调度的逻辑示意图,如图9所示,该任务调度过程包括:
S901,调度器调度在线任务抢占目标处理器。
其中,调度器在上述第一种情况,第二种情况与第三种情况中的任意一种情况下,调度在线任务抢占目标处理器。
S902,在线任务执行完成后,调度器释放目标处理器。
在一种可能的实现方式中,在线任务执行完成后,调度器调用主动调度接口,主动让出目标处理器,其中主动调度接口可以是Linux内核中的schedule()接口。
S903,调度器调度离线任务在CPU上运行。
在一种可能的实现方式中,响应于运行队列中包含至少两个离线任务,采用第二调度算法对至少两个离线任务在目标处理器中的执行方式进行调度。
其中,第二调度算法不同于第一调度算法。
在一种可能的实现方式中,上述采用第二调度算法对至少两个离线任务在目标处理器中的执行方式进行调度,包括:
获取第一离线任务的单次实际执行时间;该第一离线任务是目标处理器上当前执行的离线任务;
响应于第一离线任务的单次实际执行时间达到第二时间阈值,在目标处理器上执行第二离线任务,该第二离线任务是至少两个离线任务中,累计实际执行时间最少的一个。
也就是说,在目标处理器上运行的各个离线任务,对应有固定的单次实际执行时间,即第二时间阈值,表现为目标处理器分配给各个离线任务单次允许执行的时间,即时间片。按照时间片轮转的方式,均分时间片,轮流执行,若第一离线任务在时间片结束时仍处于被执行状态,则调度器调度第二离线任务抢占目标处理器;若第一离线任务在时间片结束之前阻塞或者执行结束,则调度器立即调度目标处理器执行第二离线任务,以防止造成CPU的闲置或阻塞引起的对CPU资源的浪费。图10示出了本申请一示例性实施例示出的离线任务之间进行任务调度的逻辑示意图,如图10所示,该任务调度过程包括:
S1001,在目标处理器上执行第一离线任务。
S1002,记录该第一离线任务的单次执行时间。
S1003,调度时机来临时,判断第一离线任务的单次运行时间是否大于第二时间阈值;若是,则执行S1004,否则,执行S1005。
S1004,调度器调度第二离线任务抢占目标处理器,执行第二离线任务,并记录第二离线任务的单次执行时间。
S1005,在目标处理器上继续执行第一离线任务。
S1006,更新第一离线任务的执行时间,并等待下一次调度时机的来临。
在一种可能的实现方式中,为了避免频繁的任务切换带来的对CPU性能的额外开销,对于离线任务设置较长的单次运行时间,即时间片,比如,可以设置为12ms,以提高CPU的吞吐性能。
在一种可能的实现方式中,在获取目标处理器对应的任务集合之前,该方法还包括:
响应于第二任务满足调度条件,获取第二任务的任务类型;
响应于第二任务的任务类型指示第二任务为离线任务,遍历至少一个处理器的运行状态,至少一个处理器的运行状态包括第一状态,第二状态以及第三状态中的一种;第一状态是指处理器处于空闲状态,第二状态是指处理器处于离线任务运行状态,第三状态是指处理器处于在线任务运行状态;
获取至少一个处理器中处于第一状态和第二状态中的一种为目标处理器;
在目标处理器上执行第二任务。
在一种可能的实现方式中,在获取执行离线任务的目标处理器时,优先获取处于空闲状态的处理器为目标处理器,即获取处于第一状态的处理器为目标处理器;
响应于不存在处于第一状态的处理器,获取处于第二状态的处理器为目标处理器;
响应于不存在处于第一状态和第二状态的处理器,获取处于第三状态的处理器中,处于运行状态的任务数量最少的一个为目标处理器。
在一种可能的实现方式中,在获取处于第二状态的处理器为目标处理器时,获取处于第二状态的各个处理器的离线任务负载情况,获取其中离线任务负载最轻的一个为目标处理器。图11示出了本申请一示例性实施例示出的调度离线任务的逻辑示意图,如图11所示,该过程包括:
S1101,响应于第二任务满足调度条件,获取第二任务的任务类型。
在一种可能的实现方式中,第二任务满足调度条件表现为第二任务被唤醒或者被创建。
S1102,判断第二任务是否为离线任务,若是,则执行S1103,否则,进入在线任务调度逻辑。
S1103,遍历寻找处于第一状态的CPU作为目标处理器。
S1104,判断是否找到处于第一状态的CPU,若是,则执行S1109,否则,执行S1105。
S1105,遍历寻找处于第二状态的CPU。
S1106,判断是否找到处于第二状态的CPU,若是,则执行S1107,否则,执行S1108。
S1107,确定处于第二状态的CPU负载最小的CPU为目标处理器。
S1108,获取处于第三状态的处理器中,处于运行状态的任务数量最少的一个为目标处理器。
S1109,将第二任务迁移到目标处理器上运行。
在一种可能的实现方式中,云主机中包含至少一个CPU,各个CPU均可以为虚拟机中的任务提供相应的资源,调度器在进行任务调度时,还应该考虑不同CPU之间的负载均衡,以使得各个CPU处于正常运行状态,从而避免因出现CPU过载或空闲的情况而造成的任务执行效率低或者对CPU资源的浪费。
在一种可能的实现方式中,在线任务与离线任务分别进行独立的负载均衡,以减少互相之间的耦合。
示意性的,在线任务的负载均衡采用操作系统调度器标准的负载均衡算法和策略,比如Linux系统中CFS的负载均衡,保障在线业务在不同CPU上的负载均衡。
离线任务的负载均衡可以根据CPU的负载程度来进行,其中,CPU的负载程度是根据当前CPU中处于运行状态的任务数量来衡量的。在进行离线任务的负载均衡时,优先对处于在线任务执行状态的处理器中的离线任务进行调度;对离线任务的负载均衡可以通过主动拉取的方式进行,在一种可能的实现方式中,响应于负载均衡时机到来,且目标处理器处于执行第二任务的状态,对离线任务的负载均衡过程包括:
遍历除目标处理器外的至少一个处理器;
从目标处理器外的至少一个处理器中确定第一处理器,该第一处理器为处于第三状态的处理器;
将第一处理器上运行的指定数量的离线任务调度到目标处理器上执行。
当不存在处于在线任务执行状态的处理器时,对处理离线任务执行状态中,离线任务负载较重的处理器上的离线任务进行调度;在一种可能的实现方式中,该方法还包括:
响应于不存在第一处理器,确定第二处理器,该第二处理器为处于第二状态的处理器中,满足负载均衡条件的处理器;该负载均衡条件是指目标处理器与第二处理器之间的负载差值达到负载差阈值;且目标处理器的负载小于第二处理器的负载;
将第二处理器上运行的指定数量的离线任务调度到目标处理器上执行。
图12示出了本申请一示例性实施例示出的离线任务负载均衡的逻辑示意图,如图12所示,该过程包括:
S1201,响应于负载均衡时机到来,全局搜索第一处理器,该第一处理器是指处于第三状态的处理器。
S1202,判断是否搜索到第一处理器,若是,则执行S1205,否则,执行S1023。
S1203,全局搜索处于第二处理器,该第二处理器为处于第二状态的至少一个处理器中,满足负载均衡条件的处理器。
S1204,判断是否搜索到处于第二处理器,若是,则执行S1205,否则,结束搜索。
S1205,将搜索到的处理器上的指定数量的离线任务迁移至目标处理器。
在另一种可能的实现方式中,无论目标处理器处于何种执行状态,在进行离线任务负载均衡时,均进行负载均衡:
响应于负载均衡时机到来,遍历除目标处理器外的至少一个处理器;
从目标处理器外的至少一个处理器中确定第三处理器,该第三处理器为满足负载均衡条件的处理器,该负载均衡条件是指目标处理器与第三处理器之间的负载差值达到负载差阈值,且目标处理器的负载小于第三处理器的负载;
将第三处理器上运行的指定数量的离线任务调度到目标处理器上执行。
需要说明的是,在负载差值计算过程中,当目标处理器的负载值为较小的一方时,执行上述离线任务的负载均衡操作;当目标处理器与其他处理器之间的负载差达到负载差值阈值,但目标处理器的负载值为较大的一方时,将目标处理器上的离线任务调度到满足负载均衡条件的其他处理器中运行。
在一种可能的实现方式中,在进行离线任务负载均衡时,若目标处理器中存在延时执行时长达到延时时长阈值的离线任务时,响应于负载均衡时机到来,调度器可以全局遍历处于第一状态和第二状态的处理器,将目标处理器中延时执行时长达到延时时长阈值的离线任务调度到处于第一状态和第二状态的处理器执行。
在一种可能的实现方式中,在将延时执行时长达到延时时长阈值的离线任务调度到处于第一状态和第二状态的处理器执行时,优先将该离线任务调度到处于第一状态的处理器中运行,若不存在处于第一状态的处理器,则将该离线任务调度到处于第二状态的处理器中负载最小的处理器中运行。
综上所述,本申请实施例提供的虚拟机任务的调度方法,通过在进行任务调度时,将目标处理器对应的任务集合中满足调度条件的在线任务调度到处于离线任务执行状态的目标处理器中,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
图13示出了本申请一示例性实施例示出的任务调度系统的示意图,如图13所示,该任务调度系统包括:虚拟机1310,调度器1320以及CPU1330,其中,该调度器包括配置管理模块1321,类型管理模块1322,单核调度模块1324以及负载均衡模块1323。
其中,配置管理模块1321用于基于接收到的配置信息,对调度器进行设定。
在一种可能的实现方式中,配置信息包括:任务的任务类型,在线任务的执行时间阈值(第一时间阈值),离线任务的时间片(第二时间阈值),离线任务的延时时长阈值等。
其中,任务的任务类型包括在线任务和离线任务。用户可以根据实际需求,对定任务的任务类型进行设定。
在一种可能的实现方式中,用户可以通过任务调度系统提供的用户动态接口,比如Linux操作系统提供的/proc和/sys虚拟文件系统接口,将用户配置的配置信息设置到云服务器的调度器中,保存与主机调度器的与进程(任务)相关的结构体或者全局变量中,并保存在云主机调度器的与任务相关的结构体或者全局变量中,用以后续调度器在实时任务调度时进行查询。
类型管理模块1322,用于管理任务类型,类型管理模块基于配置管理模块接收到的配置信息,通过为每种任务类型定义不同的标记,将任务分为在线任务和离线任务,其中,在线任务相对离线任务具有绝对的高优先级,离线任务具有绝对的低优先级。
以Linux系统为例,表现为:将离线虚拟机相关的所有线程为离线任务;将其他所有线程(包括主机进程、内核线程(如rcu相关线程))设置为在线任务,在表示任务的对象中(Linux内核中为task_struct结构)为其预留相应的任务。
单核调度模块1324,用于在单个CPU上实现调度器所需的基础框架,以及实现在线任务和离线任务之间的混合调度。
该基础框架包括运行队列、队列操作接口等。其中,该运行队列是单核调度模块基于链表或其他可实现类似功能的数据结构实现的,且每个CPU都拥有独立的运行队列。
单核调度模块在单个CPU上对在线任务和离线任务的调度可以参考图2,图4所示实施例中的相关内容,此处不再赘述。
负载均衡模块1323,主要用于实现在线任务和离线任务的负载均衡,以解决离线任务饥饿的问题。
其中,在线任务的负载均衡主要采用调度器标准的负载均衡算法和策略(CFS算法);
离线任务的负载均衡包括空闲选核和周期负载均衡,其中,空闲选核是指在离线任务被唤醒或者被创建时,选择相对空闲的CPU运行离线任务;周期负载均衡是指在负载均衡时机到来时对离线任务进行调度,相关内容可以参考图4所示实施例中的相关内容,此处不再赘述。
在一个完整的虚拟机任务调度过程中,如图13所示,用户通过终端设置配置信息,并将该配置信息通过云服务器的调度器中的配置管理模块1321对外提供的用户动态接口发送到配置管理模块1321,该配置管理模块基于用户的配置信息将在线任务和离线任务别对应到在线虚拟机和离线虚拟机中,当在线虚拟机或离线虚拟机运行对应的任务时,将对应的任务发送给调度器,调度器中的类型管理模块1322基于接收到任务为每种任务类型定义不同的标记,指示负载均衡模块1323基于每种类型的任务所对应的负载均衡策略,将各个任务调度到对应的CPU中执行;在单个CPU进行任务执行时,由单核调度模块1324调度各个CPU中优先处理在线任务,同时调度在线任务之间的切换以及离线任务之间的切换。在负载均衡时机到来时,负载均衡模块1323还用于调度各个CPU中的离线任务,以使得各个CPU负载均衡。
综上所述,本申请实施例提供的任务调度系统,通过在进行任务调度时,将目标处理器对应的任务集合中满足调度条件的在线任务调度到处于离线任务执行状态的目标处理器中,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
图14示出了本申请一示例性实施例示出的虚拟机任务的调度装置的方框图,该装置应用于服务器中,该服务器可以实现为图1所示任务调度系统中的服务器,该服务器可以是云服务器,即云主机,如图14所示,该装置包括:
第一获取模块1401,用于获取目标处理器对应的任务集合,该任务集合中包含至少一个虚拟机任务;该虚拟机任务的任务类型为离线任务或者在线任务,离线任务是离线虚拟机对应的任务,该在线任务是除离线任务之外的其他任务;
第二获取模块1402,用于响应于任务集合中的第一任务满足调度条件,获取目标处理器当前执行的第二任务的任务类型;该第一任务是在线任务;
第一切换模块1403,用于响应于第二任务的任务类型指示第二任务为离线任务,将目标处理器执行的任务切换为第一任务。
在一种可能的实现方式中,该调度条件包括:第一任务被唤醒、时钟中断来临、以及第一任务被创建中的任意一种。
在一种可能的实现方式中,该第一切换模块1403,包括:
队列加入子模块,用于将第一任务加入目标处理器的运行队列;
队列移除子模块,用于将运行队列中,包括第二任务在内的各个离线任务移除。
在一种可能的实现方式中,该装置还包括:
在线任务调度模块,用于响应于运行队列中包含至少两个在线任务,采用第一调度算法对至少两个在线任务在目标处理器中的执行方式进行调度。
在一种可能的实现方式中,该在线任务调度模块,包括:
第一时间获取子模块,用于获取至少两个在线任务的虚拟执行时间,该虚拟执行时间用以表示在线任务加权后的实际执行时间;
在线任务调度子模块,用于响应于第一在线任务的虚拟执行时间达到第一时间阈值,在目标处理器上执行第二在线任务,该第一在线任务是至少两个在线任务中的任意一个;该第二在线任务是至少两个在线任务中,所述虚拟执行时间最小的一个。
在一种可能的实现方式中,该装置还包括:
队列加入模块,用于响应于运行队列中的各个在线任务执行完成,且第二任务处于任务集合中,将第二任务加入运行队列。
在一种可能的实现方式中,该装置还包括:
离线任务调度模块,用于响应于运行队列中包含至少两个离线任务,采用第二调度算法对至少两个离线任务在目标处理器中的执行方式进行调度。
在一种可能的实现方式中,该离线任务调度模块,包括:
第二时间获取子模块,用于获取第一离线任务的单次实际执行时间;该第一离线任务是目标处理器上当前执行的离线任务;
离线任务调度子模块,用于响应于第一离线任务的单次实际执行时间达到第二时间阈值,在目标处理器上执行第二离线任务,该第二离线任务是至少两个离线任务中,累计实际执行时间最少的一个。
在一种可能的实现方式中,该装置还包括:
第三获取模块,用于在第一获取模块获取目标处理器对应的任务集合之前,响应于第二任务满足调度条件,获取第二任务的任务类型;
第一运行状态遍历模块,用于响应于第二任务的任务类型指示第二任务为离线任务,遍历至少一个处理器的运行状态,至少一个处理器的运行状态包括第一状态,第二状态以及第三状态中的一种;该第一状态是指处理器处于空闲状态,该第二状态是指处理器处于离线任务运行状态,该第三状态是指处理器处于在线任务运行状态;
第四获取模块,用于基于至少一个处理器的运行状态,从至少一个处理器中获取目标处理器;
第二执行模块,用于在目标处理器上执行第二任务。
在一种可能的实现方式中,该第四获取模块,包括:
第一获取子模块,用于获取处于第一状态的处理器为目标处理器;
第二获取子模块,用于响应于不存在处于第一状态的处理器,获取处于第二状态的处理器为目标处理器;
第三获取子模块,用于响应于不存在处于第一状态和第二状态的处理器,获取处于第三状态的处理器中,处于运行状态的任务数量最少的一个为目标处理器。
在一种可能的实现方式中,该装置还包括:
第二运行状态遍历模块,用于响应于负载均衡时机到来,且目标处理器处于执行第二任务的状态,遍历除目标处理器外的至少一个处理器;
第一确定模块,用于从目标处理器外的至少一个处理器中确定第一处理器,该第一处理器为处于第三状态的处理器;
第一调度模块,用于将第一处理器上运行的指定数量的离线任务调度到目标处理器上执行。
在一种可能的实现方式中,该装置还包括:
第二确定模块,用于响应于不存在第一处理器,确定第二处理器,第二处理器为处于第二状态的处理器中,满足负载均衡条件的处理器;该负载均衡条件是指目标处理器与第二处理器之间的负载差值达到负载差阈值,且目标处理器的负载小于第二处理器负载;
第二调度模块,用于将第二处理器上运行的指定数量的离线任务调度到目标处理器上执行。
综上所述,本申请实施例提供的虚拟机任务的调度装置,应用在服务器中,通过在进行任务调度时,将目标处理器对应的任务集合中满足调度条件的在线任务调度到处于离线任务执行状态的目标处理器中,使得在云服务器中能够混合调度在线任务和离线任务,在保证了在线任务的优先级的同时,提高了对CPU资源的利用率。
图15是根据一示例性实施例示出的计算机设备1500的结构框图。该计算机设备可以实现为本申请上述方案中的服务器。所述计算机设备1500包括中央处理单元(CentralProcessing Unit,CPU)1501、包括随机存取存储器(Random Access Memory,RAM)1502和只读存储器(Read-Only Memory,ROM)1503的系统存储器1504,以及连接系统存储器1504和中央处理单元1501的系统总线1505。所述计算机设备1500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)1506,和用于存储操作系统1513、应用程序1514和其他程序模块1515的大容量存储设备1507。
所述基本输入/输出系统1506包括有用于显示信息的显示器1508和用于用户输入信息的诸如鼠标、键盘之类的输入设备1509。其中所述显示器1508和输入设备1509都通过连接到系统总线1505的输入输出控制器1510连接到中央处理单元1501。所述基本输入/输出系统1506还可以包括输入输出控制器1510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1510还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1507通过连接到系统总线1505的大容量存储控制器(未示出)连接到中央处理单元1501。所述大容量存储设备1507及其相关联的计算机可读介质为计算机设备1500提供非易失性存储。也就是说,所述大容量存储设备1507可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read Only Memory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-OnlyMemory,EEPROM)闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(DigitalVersatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1504和大容量存储设备1507可以统称为存储器。
根据本公开的各种实施例,所述计算机设备1500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1500可以通过连接在所述系统总线1505上的网络接口单元1511连接到网络1512,或者说,也可以使用网络接口单元1511来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集存储于存储器中,中央处理器1501通过执行该至少一条指令、至少一段程序、代码集或指令集来实现上述各个实施例所示的虚拟机任务的调度方法中的全部或者部分步骤。
图16是根据一示例性实施例示出的计算机设备1600的结构框图。该计算机设备1600可以是图1所示的虚拟机任务的调度系统中的终端。
通常,计算机设备1600包括有:处理器1601和存储器1602。
处理器1601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1601所执行以实现本申请中方法实施例提供的方法。
在一些实施例中,计算机设备1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、显示屏1605、摄像头组件1606、音频电路1607、定位组件1608和电源1609中的至少一种。
在一些实施例中,计算机设备1600还包括有一个或多个传感器1610。该一个或多个传感器1610包括但不限于:加速度传感器1611、陀螺仪传感器1612、压力传感器1613、指纹传感器1614、光学传感器1615以及接近传感器1616。
本领域技术人员可以理解,图16中示出的结构并不构成对计算机设备1600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成上述图2或图4任一实施例所示的方法的全部或者部分步骤。例如,非临时性计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
在一示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2或图4任一实施例所示方法的全部或部分步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其他实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种虚拟机任务的调度方法,其特征在于,所述方法包括:
获取目标处理器对应的任务集合,所述任务集合中包含至少一个虚拟机任务;所述虚拟机任务的任务类型为离线任务或者在线任务,所述离线任务是离线虚拟机对应的任务,所述在线任务是除所述离线任务之外的其他任务;
响应于所述任务集合中的第一任务满足调度条件,获取所述目标处理器当前执行的第二任务的任务类型;所述第一任务是所述在线任务;
响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,将所述目标处理器执行的任务切换为所述第一任务。
2.根据权利要求1所述的方法,其特征在于,所述调度条件包括:所述第一任务被唤醒、时钟中断来临、以及所述第一任务被创建中的任意一种。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标处理器执行的任务切换为所述第一任务,包括:
将所述第一任务加入所述目标处理器的运行队列;
将所述运行队列中,包括所述第二任务在内的各个所述离线任务移除。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述运行队列中包含至少两个所述在线任务,采用第一调度算法对至少两个所述在线任务在所述目标处理器中的执行方式进行调度。
5.根据权利要求4所述的方法,其特征在于,所述采用第一调度算法对至少两个所述在线任务在所述目标处理器中的执行方式进行调度,包括:
获取至少两个所述在线任务的虚拟执行时间,所述虚拟执行时间用以表示所述在线任务加权后的实际执行时间;
响应于第一在线任务的所述虚拟执行时间达到第一时间阈值,在所述目标处理器上执行第二在线任务,所述第一在线任务是至少两个所述在线任务中的任意一个;所述第二在线任务是至少两个所述在线任务中,所述虚拟执行时间最小的一个。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
响应于所述运行队列中的各个所述在线任务执行完成,且所述第二任务处于所述任务集合中,将所述第二任务加入所述运行队列。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
响应于所述运行队列中包含至少两个所述离线任务,采用第二调度算法对至少两个所述离线任务在所述目标处理器中的执行方式进行调度。
8.根据权利要求7所述的方法,其特征在于,所述采用第二调度算法对至少两个所述离线任务在所述目标处理器中的执行方式进行调度,包括:
获取第一离线任务的单次实际执行时间;所述第一离线任务是所述目标处理器上当前执行的离线任务;
响应于所述第一离线任务的单次实际执行时间达到第二时间阈值,在所述目标处理器上执行第二离线任务,所述第二离线任务是至少两个所述离线任务中,累计实际执行时间最少的一个。
9.根据权利要求1所述的方法,其特征在于,在所述获取目标处理器对应的任务集合之前,所述方法还包括:
响应于所述第二任务满足所述调度条件,获取所述第二任务的任务类型;
响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,遍历至少一个处理器的运行状态,所述至少一个处理器的运行状态包括第一状态,第二状态以及第三状态中的一种;所述第一状态是指处理器处于空闲状态,所述第二状态是指处理器处于离线任务运行状态,所述第三状态是指处理器处于在线任务运行状态;
基于所述至少一个处理器的运行状态,从所述至少一个处理器中获取所述目标处理器;
在所述目标处理器上执行所述第二任务。
10.根据权利要求9所述的方法,其特征在于,所述基于所述至少一个处理器的运行状态,从所述至少一个处理器中获取所述目标处理器,包括:
获取处于所述第一状态的处理器为所述目标处理器;
响应于不存在处于所述第一状态的处理器,获取处于所述第二状态的处理器为所述目标处理器;
响应于不存在处于所述第一状态和所述第二状态的处理器,获取处于所述第三状态的处理器中,处于运行状态的任务数量最少的一个为所述目标处理器。
11.根据权利要求9所述的方法,其特征在于,响应于负载均衡时机到来,且所述目标处理器处于执行所述第二任务的状态,所述方法还包括:
遍历除所述目标处理器外的至少一个处理器;
从所述目标处理器外的至少一个处理器中确定第一处理器,所述第一处理器为处于所述第三状态的处理器;
将所述第一处理器上运行的指定数量的离线任务调度到所述目标处理器上执行。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
响应于不存在所述第一处理器,确定第二处理器,所述第二处理器为处于所述第二状态的处理器中,满足负载均衡条件的处理器;所述负载均衡条件是指所述目标处理器与所述第二处理器之间的负载差值达到负载差阈值,且所述目标处理器的负载小于所述第二处理器的负载;
将所述第二处理器上运行的指定数量的离线任务调度到所述目标处理器上执行。
13.一种虚拟机任务的调度装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标处理器对应的任务集合,所述任务集合中包含至少一个虚拟机任务;所述虚拟机任务的任务类型为离线任务或者在线任务,所述离线任务是离线虚拟机对应的任务,所述在线任务是除所述离线任务之外的其他任务;
第二获取模块,用于响应于所述任务集合中的第一任务满足调度条件,获取所述目标处理器当前执行的第二任务的任务类型;所述第一任务是所述在线任务;
第一切换模块,用于响应于所述第二任务的任务类型指示所述第二任务为所述离线任务,将所述目标处理器执行的任务切换为所述第一任务。
14.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集;所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至12任一所述的虚拟机任务的调度方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集;所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至12任一所述的虚拟机任务的调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011057197.4A CN112130963A (zh) | 2020-09-30 | 2020-09-30 | 虚拟机任务的调度方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011057197.4A CN112130963A (zh) | 2020-09-30 | 2020-09-30 | 虚拟机任务的调度方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112130963A true CN112130963A (zh) | 2020-12-25 |
Family
ID=73843327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011057197.4A Pending CN112130963A (zh) | 2020-09-30 | 2020-09-30 | 虚拟机任务的调度方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112130963A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094158A (zh) * | 2021-03-15 | 2021-07-09 | 国政通科技有限公司 | 服务的驱动调用方法、调用装置、电子设备及存储介质 |
CN113556264A (zh) * | 2021-06-25 | 2021-10-26 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实时云平台管理监控系统 |
CN114327767A (zh) * | 2021-12-28 | 2022-04-12 | 元心信息科技集团有限公司 | 任务处理的方法、装置、电子设备及计算机可读存储介质 |
CN114510327A (zh) * | 2022-01-07 | 2022-05-17 | 中汽创智科技有限公司 | 一种优先级动态调整方法及装置 |
CN114764417A (zh) * | 2022-06-13 | 2022-07-19 | 深圳致星科技有限公司 | 隐私计算、隐私数据及联邦学习的分散式处理方法及装置 |
CN115129458A (zh) * | 2022-09-02 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 基于容器的进程调度方法、装置、设备及存储介质 |
WO2024032783A1 (zh) * | 2022-08-11 | 2024-02-15 | 北京有竹居网络技术有限公司 | 任务调度的方法和电子设备 |
-
2020
- 2020-09-30 CN CN202011057197.4A patent/CN112130963A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094158A (zh) * | 2021-03-15 | 2021-07-09 | 国政通科技有限公司 | 服务的驱动调用方法、调用装置、电子设备及存储介质 |
CN113556264A (zh) * | 2021-06-25 | 2021-10-26 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实时云平台管理监控系统 |
CN114327767A (zh) * | 2021-12-28 | 2022-04-12 | 元心信息科技集团有限公司 | 任务处理的方法、装置、电子设备及计算机可读存储介质 |
CN114327767B (zh) * | 2021-12-28 | 2022-08-05 | 元心信息科技集团有限公司 | 任务处理的方法、装置、电子设备及计算机可读存储介质 |
CN114510327A (zh) * | 2022-01-07 | 2022-05-17 | 中汽创智科技有限公司 | 一种优先级动态调整方法及装置 |
CN114510327B (zh) * | 2022-01-07 | 2023-12-22 | 中汽创智科技有限公司 | 一种优先级动态调整方法及装置 |
CN114764417A (zh) * | 2022-06-13 | 2022-07-19 | 深圳致星科技有限公司 | 隐私计算、隐私数据及联邦学习的分散式处理方法及装置 |
CN114764417B (zh) * | 2022-06-13 | 2022-08-26 | 深圳致星科技有限公司 | 隐私计算、隐私数据及联邦学习的分散式处理方法及装置 |
WO2024032783A1 (zh) * | 2022-08-11 | 2024-02-15 | 北京有竹居网络技术有限公司 | 任务调度的方法和电子设备 |
CN115129458A (zh) * | 2022-09-02 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 基于容器的进程调度方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112130963A (zh) | 虚拟机任务的调度方法、装置、计算机设备及存储介质 | |
US10003500B2 (en) | Systems and methods for resource sharing between two resource allocation systems | |
Liu et al. | Efficient dependent task offloading for multiple applications in MEC-cloud system | |
CN106933669B (zh) | 用于数据处理的装置和方法 | |
EP3008594B1 (en) | Assigning and scheduling threads for multiple prioritized queues | |
Hashem et al. | MapReduce scheduling algorithms: a review | |
CN103197968A (zh) | 一种融合同步异步特点的线程池处理方法及系统 | |
CN112380020A (zh) | 一种算力资源分配方法、装置、设备及存储介质 | |
CN111488210B (zh) | 基于云计算的任务调度方法、装置和计算机设备 | |
CN109840142A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN109408220A (zh) | 一种任务处理方法及装置 | |
Pourghaffari et al. | An efficient method for allocating resources in a cloud computing environment with a load balancing approach | |
Stavrinides et al. | Cost‐aware cloud bursting in a fog‐cloud environment with real‐time workflow applications | |
CN105051691A (zh) | 调度 | |
KR102052964B1 (ko) | 컴퓨팅 스케줄링 방법 및 시스템 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN111930516B (zh) | 一种负载均衡方法及相关装置 | |
US9436505B2 (en) | Power management for host with devices assigned to virtual machines | |
US11782765B2 (en) | Method, device, and program product for managing computing system | |
CN109634812A (zh) | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 | |
CN115129458A (zh) | 基于容器的进程调度方法、装置、设备及存储介质 | |
CN116841720A (zh) | 资源配置方法、装置、计算机设备、存储介质及程序产品 | |
Komarasamy et al. | Deadline constrained adaptive multilevel scheduling system in cloud environment | |
Yu et al. | Towards dynamic resource provisioning for traffic mining service cloud | |
CN115951974B (zh) | Gpu虚拟机的管理方法、系统、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40035776 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |