调度方法及计算机系统与流程

文档序号:30520991发布日期:2022-06-25 04:54阅读:97来源:国知局
调度方法及计算机系统与流程

1.本技术实施例涉及计算机技术领域,尤其涉及一种调度方法及计算机系统。


背景技术:

2.在虚拟化场景中,分配给虚拟机的cpu(central processing unit,中央处理器)并不是真实或物理cpu(physical central processing unit,简称pcpu),而是虚拟cpu(virtual central processing unit,简称vcpu)。分配给虚拟机的虚拟cpu被调度到物理cpu上运行时,才能够执行任务。因此,这就涉及到将虚拟cpu调度至物理cpu上。
3.相关技术中,一个物理cpu可能同时存在多个虚拟cpu抢占资源,多个虚拟cpu会在物理cpu的运行队列中等待被调度运行,每个虚拟cpu运行一个时间片之后若其对应的计算任务还未执行结束,则会继续加入运行队列的队尾,继续等待被调度运行,为了保证公平性,通常会将物理cpu的时间片均匀分配给运行队列中的多个虚拟cpu,然而,这种方式对于执行消耗较少资源的任务的虚拟机cpu而言,如执行i/o密集型任务的虚拟cpu,可能较长时间都会处于排队状态,从而影响处理性能。


技术实现要素:

4.本技术实施例提供一种调度方法及计算机系统,用以解决现有技术中影响处理性能的技术问题。
5.第一方面,本技术实施例中提供了一种调度方法,包括:
6.按照物理cpu配置的多个队列分别对应的调度优先级,依次调度所述多个队列中的虚拟cpu而运行;
7.在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级,并将所述虚拟机中处于启动状态的至少一个虚拟cpu加入所述虚拟机的当前调度优先级对应队列中;其中,按照调度优先级从高到低的顺序,所述虚拟机对应多个调度优先级的设定运行时间依次增加。
8.第二方面,本技术实施例中提供了一种调度方法,包括:
9.按照cpu配置的多个队列的调度优先级,依次调度所述多个队列中的执行单元而运行;
10.根据任一执行实体的执行单元累计运行时间,达到所述执行实体对应当前所处调度优先级的设备运行时间的情况下,降低所述执行实体的调度优先级,并将所述执行实体中处于启动状态的至少一个执行单元加入所述执行主体的当前调度优先级对应队列中;其中,按照调度优先级从高到低的顺序,所述执行实体对应所述多个调度优先级的设定运行时间依次增加。
11.第三方面,本技术实施例中提供了一种计算机系统,包括存储组件及处理组件;所述处理组件包括至少一个物理cpu;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如上述第一方面所述的调度方法或
实现如上述第二方面所述的调度方法。
12.本技术实施例中,物理cpu配置有多个队列分别对应不同的调度优先级,每个虚拟机分别设置有对应多个调度优先级的设定运行时间,且按照调度优先级从高到低的顺序,对应多个调度优先级的设定运行时间依次增加;在物理cpu上调度虚拟cpu运行时,会按照该多个队列的调度优先级从高到低的顺序,依次调度该多个队列中的虚拟cpu而运行,并根据任一个虚拟机的虚拟cpu累积运行时间,达到该虚拟机对应其当前所处调度优先级的设定运行时间的情况下,降低该虚拟机的调度优先级并将虚拟机中处于启动状态的至少一个虚拟cpu加入虚拟机的调度优先级对应队列中;通过本技术实施例,高调度优先级对应的设定运行时间最短,执行消耗较少cpu资源任务的虚拟cpu主要在高调度优先级对应的队列中运行,执行消耗较多cpu资源任务的虚拟cpu会被降级至低优先级的队列中运行,高调度优先级的队列会优先被调度,使得执行消耗较少cpu资源任务的虚拟cpu能够及时打断和抢占低调度优先级的虚拟cpu,从而降低了高负载虚拟机对低负载虚拟机的冲击,从而可以保证执行消耗较少cpu资源任务的虚拟cpu的任务执行的实时性,实现了为不同类型的任务提供更好的处理性能,保证了虚拟cpu的处理性能。
13.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
14.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1示出了本技术提供的一种调度方法一个实施例的流程图;
16.图2示出了本技术提供的一种调度方法又一个实施例的流程图;
17.图3示出了本技术实施例一个实际应用中的调度交互示意图;
18.图4示出了本技术实施例在一个实际应用中调度方法的流程图;
19.图5示出了本技术提供的一种调度装置一个实施例的结构示意图;
20.图6示出了本技术提供的一种计算机系统一个实施例的结构示意图。
具体实施方式
21.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
22.在本技术的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
23.本技术实施例的技术方案应用于物理cpu(central processing unit,中央处理器)调度场景中,涉及虚拟cpu、进程或线程等执行单元如何在物理cpu中被调度运行。
24.为了方便理解本技术技术方案,下面对本技术实施例中可能涉及到的技术术语进行相应解释:
25.虚拟机(virtual machine):是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
26.虚拟cpu(virtual central processing unit,简称vcpu):利用虚拟机技术模拟出来的cpu,非物理cpu,在虚拟化技术中的多个虚拟cpu可能共享同一个物理cpu的资源。
27.队列:物理cpu对应的结构体实例,可以理解为一种操作受限制的线性表,用于将处于就绪状态的执行单元组织在一起,按照队列顺序,如先入先出顺序,被依次调度在物理cpu中运行。
28.调度器(scheduler):用于调度队列中的执行单元而在物理中运行的内核模块。
29.计算密集型任务:计算密集型指的是系统的硬盘、内存性能相对cpu要好很多;而计算密集型任务是指需要进行大量计算,消耗cpu资源较多的任务,计算密集型任务的i/o(input/output,输入/输出)操作在很短的时间就可以完成,而cpu还有许多运算要处理,cpu负载很高。
30.i/o密集型任务:i/o密集型指的是系统的cpu性能相对硬盘、内存要好很多;i/o密集型任务是指cpu资源消耗较少,大部分时间都在等待i/o操作的任务,cpu负载较低。
31.执行单元:本文中的执行单元是指被调度在cpu中运行而执行具体任务的单元,其可以是指进程、线程或者虚拟cpu等,执行单元对应一执行实体,一个执行实体可以包括一个或多个执行单元,比如执行实体为虚拟机,执行单元可以是指虚拟cpu,执行实体为进程,执行单元可以是指线程等。其中,虚拟cpu被调度至物理cpu获得使用权之后,基于该虚拟cpu运行的虚拟操作系统即可以调度虚拟机中的进程/线程在虚拟cpu中运行。此外,在物理环境中的进程/线程也会被调度至物理cpu中运行。
32.以虚拟化场景为例,正如背景技术中所述,一个物理cpu存在多个虚拟机cpu抢占资源的情况,为了保证公平性,相关技术中是将物理cpu采用分时复用方式,将cpu的时间切分为多个时间片,均匀分配给队列中的等待的虚拟cpu,但是这种方式会影响消耗较少资源的任务的执行的实时性。
33.发明人在实现本技术的过程中发现,对于消耗较多资源的任务而言,需求的是cpu的绝对资源,并不在意延时,例如对于一个需要40%cpu资源的计算密集型任务而言,并不是那么在意是在1秒内的前400毫秒就拿到所有的cpu资源,还是等待600毫米以后再去获得40毫秒的cpu资源;而对于消耗较少资源的任务而言,对cpu资源要求不高,但是对延时很敏感,例如对于一个需要5%cpu资源的i/o密集型任务,如果能够在1秒内的前50毫秒就把传递给cpu处理的请求全部处理完成,那么就可以继续高效的进行i/o操作,如果是在1秒的最后50毫秒才开始处理i/o操作,那么前面的950毫秒内,i/o操作全部处于停滞的状态,造成带宽严重受损,影响任务执行的实时性。由于不同任务具有不同负载,假设存在同时存在计算密集型任务的虚拟cpu和i/o密集型任务的虚拟cpu同时争抢物理cpu的资源,往往会表现为计算密集型任务的虚拟cpu得到了很好的满足,而i/o密集型任务的虚拟cpu性能受损严重。特别是云计算场景下,虚拟cpu的数量远大于云计算平台提供的物理cpu的数量,因此物理cpu的资源争抢更严重,导致执行i/o密集型的cpu排队延时,而影响任务执行实时性。据此发现,发明人经过一系列研究提出了本技术的技术方案,使得一方面保证消耗较少资源
的任务执行的实时性,另一方同时保证消耗较多资源的任务获得所需的绝对资源,以此提高虚拟cpu的处理性能。
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.图1为本技术实施例提供的一种调度方法一个实施例的流程图,该方法可以包括以下几个步骤:
36.101:按照cpu配置的多个队列的调度优先级,依次调度所述多个队列中的执行单元而运行。
37.本实施例中,每个cpu可以对应配置多个队列,该多个队列具有不同的调度优先级。其中,该cpu可以是指物理cpu或者虚拟cpu,执行单元可以为一执行主体的实际运作单元,一个执行主体可以对应一个或多个执行单元,一个cpu可以对应一个或多个执行主体。其中,该cpu为虚拟cpu时,执行单元可以为需要被调度至虚拟cpu中运行的线程,对应的执行主体可以是进程;该cpu为物理cpu时,执行单元可以是指虚拟cpu,对应的执行主体可以为虚拟机;或者执行单元可以为线程,对应的执行主体为进程。
38.其中,需要消耗cpu资源而运行的执行单元也分别对应有调度优先级,每个执行单元的调度优先级可以为其所属执行主体的调度优先级,意即一个执行主体所包含的各个执行单元的调度优先级相同。可选地,每个执行主体的初始调度优先级可以为最高调度优先级。
39.此外,为了进一步保证任务执行实时性,可以周期性调整该cpu对应的至少一个执行主体的调度优先级为最高调度优先级,并将该至少一个执行主体处于启动状态的执行单元加入最高调度优先级对应的队列中。
40.本技术实施例的技术方案可以由调度器执行,其可以具体按照调度优先级,意即调度优先级从高到低的顺序,依次调度该多个队列中的执行单元而运行。
41.102:在任一执行实体的执行单元累积运行时间,达到所述执行实体对应当前调度优先级的设定运行时间的情况下,调整所述执行实体的调度优先级并将所述执行实体中处于启动状态的至少一个执行单元加入对应队列中。
42.其中,执行单元用于执行消费cpu资源的任务,接受到任务的执行单元会被唤醒从而从休眠状态切换至启动状态,以等待被调度至cpu中运行,每个执行单元接受任务并唤醒之后会根据其对应的调度优先级而加入对应队列中。
43.其中,cpu可以划分出多个时间片,每个执行单元被调度时,在cpu中运行一个时间片,其中,cpu可以均匀划分多个时间片并分配给各个执行单元等。可以综合每个执行主体中的各个执行单元在cpu中的运行时间,从而统计获得每个执行主体对应该cpu的执行单元累积运行时间,该执行单元累积运行时间可以是指执行主体中各个执行单元的总运行时间之和。
44.其中,按照调度优先级从高到低的顺序,每个执行实体对应所述多个调度优先级的设定运行时间依次增加。可选地,每个执行实体对应最低调度优先级的设定运行时间可以为无穷时间,意即对最低调度优先级不进行时间限制。对于非最低调度优先级的其它调
度优先级,可以预先根据每个执行主体的规格来配置设定运行时间。可选地,可以根据执行主体的规格,如其开启的执行单元量等,首先确定执行主体对应最高调度优先级的设定运行时间,再基于该最高调度优先级的设定运行时间,来确定其它调度优先级的设定运行时间。结合执行主体的规格,可以确定执行主体执行任务可能消耗的cpu资源的比例,据此配置设定运行时间,调度优先级越高,其对应的设定运行时间越小。
45.本实施例中,根据任一个执行主体的执行单元累积运行时间,若达到该执行主体对应当前所处调度优先级的设定运行时间,意即执行单元累积运行时间大于或等于设定运行时间的情况下,代表该设定运行时间无法满足执行主体需要的cpu运行时间,其可能在执行消耗资源较多的任务,此时,可以降低执行主体的调度优先级,并将该执行主体处于启动状态的至少一个执行单元加入执行主体当前调度优先级所对应的队列中,以降低该执行主体的执行单元的调度优先级,以降低对执行消耗较少资源任务的执行单元的冲击,保证任务执行的实时性,且将执行消耗资源较多的任务的执行单元加入低调度优先级的队列中,低调度优先级对应较大的设定运行时间,也可以保证将执行消耗资源较多的任务的执行单元可以充分获得资源,从而提高虚拟cpu的处理性能。
46.可选地,降低执行主体的调度优先级可以是将执行主体降低一个调度优先级,从而可以通过逐级降低的方式,来使得执行消耗较多资源的任务的执行主体中的执行单元逐步加入至最低调度优先级的队列中。
47.而在每个执行主体的执行单元累积运行时间小于该执行主体对应当前所处调度优先级的设定运行时间的情况下,可以保持执行主体的当前调度优先级不变,执行主体的执行单元在cpu中运行一个时间片之后,会进入其当前所在队列的队尾继续等待调度等。
48.一个实际应用中,本技术实施例的技术方案可以应用于虚拟化场景中,执行主体可以是指虚拟机,执行单元可以虚拟机的虚拟cpu,虚拟cpu被调度至物理cpu上运行以执行相应任务。下面一个或多个实施例中,主要以对物理cpu的调度为例对本技术的技术方案进行介绍。图2为本技术实施例提供的一种调度方法又一个实施例的流程图,本实施例的技术方案可以由调度器执行,该方法可以包括以下几个步骤:
49.201:按照物理cpu配置的多个队列分别对应的调度优先级,依次调度所述多个队列中的虚拟cpu而运行。
50.本技术实施例中,一个虚拟机可以对应一个或多个虚拟cpu,一个或多个虚拟机的多个虚拟cpu可能在一个物理cpu中被调度而运行。虚拟cpu接受任务之后被唤醒,从而从休眠状态切换至启动状态以等待在对应物理cpu中被调度运行。
51.物理cpu可以配置有多个队列,该多个队列分别对应不同调度优先级,被唤醒而等待被调度至该物理cpu中运行的每个虚拟cpu也对应有调度优先级,每个虚拟cpu可以根据各自对应的调度优先级首先加入对应队列中以等待被调用而运行。其中,每个虚拟cpu的调用优先级可以为其所属虚拟机的调度优先级,意即一个虚拟机中处于启动状态的各个虚拟cpu的执行单元的调度优先级相同。可选地,每个虚拟机的初始调度优先级可以为最高调度优先级。
52.此外,为了进一步保证任务执行实时性,可以周期性调整所述物理cpu对应的至少一个虚拟机的调度优先级为最高优先级,并将该至少一个虚拟机中处于启动状态的多个虚拟cpu加入到最高调度优先级对应的队列中,意即在每个调度周期的开始时刻,可以将所有
在物理cpu中等待调度的虚拟cpu的调度优先级调整为最高优先级,在该实现方式中,每个虚拟机的初始调度优先级也可以为任意一个调度优先级。
53.202:在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级并将该虚拟机中处于启动状态的至少一个虚拟cpu加入该虚拟机的当前调度优先级对应队列中;其中,按照调度优先级从高到低的顺序,所述虚拟机对应多个调度优先级的设定运行时间依次增加。
54.其中,虚拟cpu用于执行任务,接受到任务的虚拟cpu会被唤醒而切换至启动状态,并加入相应队列中以等待被调度至该物理cpu中运行,每个虚拟cpu接受任务并唤醒之后会具体根据其对应的调度优先级而加入对应队列中。每个虚拟cpu任务执行完成之后会从队列中移除,并进入休眠状态直至再次被唤醒。
55.其中,可以划分出多个时间片,每个虚拟cpu被调度时,在物理cpu中运行其分配的一个时间片,cpu可以均匀划分多个时间片并分配给队列中的各个虚拟cpu等。可以综合每个虚拟机中的各个虚拟cpu在物理cpu中总运行时间,从而获得每个虚拟机在该物理cpu中的虚拟cpu累积运行时间,意即该虚拟cpu累积运行时间是指虚拟机中各个虚拟cpu的总运行时间之和。可选地,周期性调整物理cpu所对应的至少一个虚拟机的调度优先级的情况下,该虚拟cpu累积运行时间具体可以是指虚拟机在当前调整周期中的累积运行时间,意即虚拟机中的各个虚拟cpu当前调整周期中的总运行时间之和,在每个调整周期会重新统计累积运行时间。
56.其中,按照调度优先级从高到低的顺序,每个虚拟机对应所述多个队列的设定运行时间依次增加。可选地,每个虚拟机对应最低调度优先级的设定运行时间可以为无穷时间,意即对最低调度优先级不进行时间限制。对于非最低调度优先级的其它调度优先级,可以预先根据每个虚拟机的规格来配置设定运行时间。其中,虚拟机的规格定义在虚拟机在计算性能、存储性能、网络性能等方面的基本属性,如可以包括虚拟cpu数量,内存大小等。
57.可选地,可以根据虚拟机的规格,首先确定虚拟机对应最高调度优先级的设定运行时间,再基于该最高调度优先级的设定运行时间,来确定其它调度优先级的设定运行时间,例如其它调度优先级的设定运行时间可以设置为其前一个调度优先级的两倍等,当然,本技术对此不进行具体限制,可以结合实际情况而设置等。其中,调度优先级越高,其对应的设定运行时间越小。
58.本实施例中,在虚拟机的虚拟cpu累积运行时间达到其当前所处调度优先级的设定运行时间,代表该设定运行时间无法满足虚拟机所需的cpu时间,其可能在执行消耗资源较多的任务,此时,可以降低虚拟机的调度优先级,并将该虚拟机中处于启动状态的用以执行任务的至少一个虚拟cpu加入虚拟机的当前调度优先级所对应的队列中,以降低该虚拟机的虚拟cpu调度优先级,降低对执行消耗较少资源任务的虚拟机中的虚拟cpu的冲击,保证任务执行的实时性,且将执行消耗资源较多的任务的虚拟cpu加入低调度优先级的队列中,低调度优先级对应较大的设定运行时间,也可以保证将执行消耗资源较多的任务的虚拟cpu能够获得充分的cpu资源。
59.可选地,降低虚拟机的调度优先级可以是将虚拟机降低一个调度优先级,以通过逐级降低的方式,来使得执行消耗较多资源的任务的虚拟机中的虚拟cpu逐步加入至最低调度优先级的队列中,以保证任务有效执行。因此,一些实施例中,所述降低所述虚拟机的
调度优先级,并将处于启动状态的至少一个虚拟cpu加入对应队列中可以包括:
60.将该虚拟机降低一个调度优先级;
61.将该虚拟机处于启动状态的至少一个虚拟cpu加入该虚拟机的当前调度优先级对应的队列中。
62.其中,若任一个虚拟机的虚拟cpu累积运行时间小于该虚拟机对应当前所处调度优先级的设定运行时间的情况下,可以保持虚拟机的当前调度优先级不变,虚拟机的虚拟cpu在物理cpu中运行一个时间片之后,会进入其当前所在队列的队尾继续等待调度等。
63.本技术实施例,通过根据虚拟cpu消耗的cpu时间来动态调整虚拟cpu的调度优先级,保证消耗较多资源,如计算密集型的虚拟cpu处于较低调度优先级,以消耗剩余的cpu资源,而消耗较少资源,如i/o密集型的虚拟cpu处于最高调度优先级中,可以及时去打断和抢占低调度优先级的虚拟cpu,提高任务执行实时性,一方面保证诸如i/o密集型的虚拟cpu的响应时间,同时也尽力将剩余的cpu资源去更多服务计算密集型的虚拟机cpu。
64.一些实施例中,任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu的加入对应队列中可以包括:
65.在任一个虚拟机的任一个虚拟cpu的当前时间片运行结束或者任一个虚拟cpu被唤醒的情况下,判断所述虚拟机的虚拟cpu累积运行时间是否达到所述虚拟机对应当前所处调度优先级的设定运行时间;
66.若是,则降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu的调度优先级加入对应队列中。
67.否则,可以保持所述虚拟机的调度优先级不变。
68.其中,任一个虚拟cpu的当前时间片运行结束之后,需要重新加入队列中继续等待调度,而任一个虚拟cpu接受到任务而被唤醒的情况下,也需要加入队列等待调度,因此,可以在任一个虚拟cpu的当前时间片运行结束或者任一个虚拟cpu被唤醒的情况下,对于所述虚拟机的虚拟cpu累积运行时间进行判定,以决策是否需要调整虚拟机的调度优先级等。
69.其中,每个虚拟机的虚拟cpu累积运行时间可以是在其对应的任一个虚拟cpu在一个时间片运行结束之后进行统计并记录。当然,在其对应的任一个虚拟cpu被唤醒之后也可以进行统计。因此,一些实施例中,在任一个虚拟机的任一个虚拟cpu的当前时间片运行结束或者任一个虚拟cpu被唤醒而启动的情况下,可以统计所述虚拟机的虚拟cpu累积运行时间,再判断该虚拟cpu累积运行时间是否达到相应的设定运行时间。
70.其中,虚拟机中处于启动状态的至少一个虚拟cpu可以包括已加入任一队列的,以及被唤醒还未加入任一队列的虚拟cpu。
71.其中,在虚拟cpu累积运行时间小于虚拟机对应当前所处调度优先级的设定运行时间的情况下,可以保持虚拟机的调度优先级不变。
72.一些实施例中,在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级并将处于启动状态的至少一个虚拟cpu加入对应队列中可以包括:
73.在任一个虚拟机为非最低调度优先级的情况下,若所述虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚
拟机的调度优先级并将处于启动状态的至少一个虚拟cpu加入对应队列中。
74.而若任一个虚拟机为最低调度优先级,可以直接保持虚拟机的调度优先级不变。
75.此外,由上文描述可知,可以周期性调整述物理cpu对应的至少一个虚拟机的调度优先级为最高优先级并将所述至少一个虚拟机中处于启动状态的多个虚拟cpu加入到最高调度优先级对应的队列中,一些实施例中,在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级并将处于启动状态的至少一个虚拟cpu加入对应队列中可以包括:
76.在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间且当前调整周期未结束的情况下,降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu加入对应队列中。
77.若任一个虚拟机为最低调度优先级,则保持虚拟机的调度优先级不变直至当前调整周期结束。
78.一些实施例中,若任一个虚拟cpu的任务执行结束,则可以从其所在队列中出队,将虚拟cpu中从其所在队列中删除。该出队的虚拟cpu即进入休眠状态直至重新接受到任务而被唤醒而切换至启动状态。
79.一些实施例中,由于被唤醒的虚拟cpu以及当前时间片运行结束且任务未执行结束的虚拟cpu均会加入相应队列中,从而发生入队事件,为了进一步保证任务执行实时性,该方法还可以包括:
80.针对任一个队列的入队事件,在当前入队的虚拟cpu的调度优先级高于当前运行的虚拟cpu的调度优先级,调度当前入队的虚拟cpu在所述物理cpu中抢占运行。
81.此外,还可以将被抢占的虚拟cpu根据其当前所处调度优先级插入至对应队列的队首位置。
82.为了方便理解,下面结合图3所示的交互示意图对本技术技术方案进行介绍。如图3中所述,在一个计算机系统中可以包括多个物理cpu100,以一个物理cpu为例,假设一个物理cpu100可以支持多个虚拟机300,多个虚拟机300中存储多个虚拟cpu301抢占物理cpu302的资源,以在物理cpu302运行,以执行任务。
83.调度器200加载并为物理cpu302维护三个队列:队列1、队列2以及队列3,依次对应high、normal和low的调度优先级,其中high调度优先级为最高调度优先级,low调度优先级为最低调度优先级,normal调度优先级为中间调度优先级。
84.每个虚拟机300可以预先配置分配对应该三个调度优先级的设定运行时间,可选地,可以配置对应high调度优先级的设定运行时间htime,以及对应normal调度优先级的设定运行时间为ntime。由于low调度优先级为最低调度优先级,其对应的设定运行时间可以为空,表示无穷大。
85.每个虚拟机初始的调度优先级可以为high调度优先级,并可以周期性的调整每个虚拟机的调度优先级为high调度优先级。
86.每个虚拟机300中的虚拟cpu301会根据虚拟机300的调度优先级而加入相应队列中。
87.调度器200可以按照调度优先级从高到低的顺序,依次遍历三个队列,以调度虚拟cpu在物理cpu中运行一个时间片。
88.其中,调度器200可以统计每个虚拟机在当前调整周期中的虚拟cpu累积运行时间,并在虚拟机中的任一个虚拟cpu的当前时间片运行结束或者任一个虚拟cpu被唤醒的情况下,判断虚拟机的虚拟cpu累积运行时间是否达到虚拟机对应其当前所处调度优先级的设定运行时间,若是,则将虚拟机降低一个调度优先级,并将其当前处于唤醒状态的虚拟cpu加入低一个调度优先级的队列;若否,则保持当前调度优先级不变,当前时间片运行结束的虚拟cpu或被唤醒的cpu加入当前调度优先级对应队列。
89.例如,high调度优先级的虚拟机的一个虚拟cpu当前时间片运行结束或者被唤醒,统计该虚拟机在当前调整周期中的虚拟cpu累积运行时间,并确定该虚拟机对应high调度优先级的htime,若虚拟cpu累积运行时间大于或等于htime,且当前调整周期未结束,则虚拟机的调度优先级降低为normal调度优先级,该虚拟机处于启动状态的所有虚拟cpu进入normal调度优先级的队列中等待调度;若虚拟cpu累积运行时间小于htime,则保持high调度优先级不变,当前时间片运行结束或者被唤醒的虚拟cpu继续进入high调度优先级的队列中等待调度。
90.normal调度优先级的虚拟机的一个虚拟cpu当前时间片运行结束或者被唤醒,统计该虚拟机在当前调整周期中的虚拟cpu累积运行时间,并确定该虚拟机对应normal调度优先级的ntime,若虚拟cpu累积运行时间大于或等于ntime,且当前调整周期未结束,则虚拟机的调度优先级降低为low调度优先级,该虚拟机处于启动状态的所有虚拟cpu进入low调度优先级的队列中等待调度;若虚拟cpu累积运行时间小于ntime,则保持normal调度优先级不变,当前时间片运行结束或者被唤醒的虚拟cpu继续进入normal调度优先级的队列中等待调度。
91.若一个虚拟机降低至low调度优先级,则保持low调度优先级不变直至当前调整周期结束。该虚拟机中的虚拟cpu在每个时间片运行结束或者被唤醒之后,进入low调度优先级的队列中。
92.以上述三个调度优先级为例,如图4所示的详细调度流程可以包括:
93.调度器加载,为物理cpu维护三个队列,依次对应high、normal和low的调度优先级401;
94.在每个调整周期,调整虚拟机为high调度优先级402;
95.虚拟cpu根据其对应虚拟机的调度优先级进入对应队列中403;
96.检测当前入队虚拟cpu的调度优先级是否大于当前运行的虚拟cpu404;若否,在队列的队尾排队405,若是,抢占运行406;
97.虚拟cpu被调度运行407;
98.虚拟cpu运行在high调度优先级的队列,且调整周期未结束,在当前时间片运行结束之后,判断其对应虚拟机的虚拟cpu累积运行时间是否达到htime408,若是,执行步骤403;若否,调整调度优先级为normal调度优先级409之后,执行步骤403。
99.虚拟cpu运行在normal调度优先级的队列,且调整周期未结束,在当前时间片运行结束之后,判断其对应虚拟机的虚拟cpu累积运行时间是否达到ntime410,若是,执行步骤403,若否,调整调度优先级为low调度优先级411之后,执行步骤403。
100.虚拟cpu运行在low调度优先级的队列,且调整周期未结束,在当前时间片运行结束之后,执行步骤403。
101.若调整周期结束,则调整虚拟机的调度优先级为high调度优先级。
102.本实施例中,high优先级保证了对cpu延时有一定需求并且消耗较少资源的虚拟机的任务执行的实时性,normal优先级用于对实时性要求不高并且比较消耗资源的虚拟机;low优先级用于限制资源消耗过大的虚拟机,削减这些高负载的虚拟机对低负载的虚拟机产生的冲击。每一个虚拟机可以根据规格定义不同的htime、ntime。通过虚拟机的虚拟cpu消耗的虚拟cpu累积运行时间动态的调整调度优先级,智能识别出虚拟机的任务类型,可以保证为不同类型的任务都能提供更好的处理性能。
103.需要说明的是,上述仅以三个调度优先级举例说明具体调度流程,可以理解的是,实际应用中可以设置多个调度优先级,本技术对此不进行具体限制。
104.图5为本技术实施例提供的一种调度装置一个实施例结构示意图,该装置可以包括:
105.调度模块501,用于按照cpu配置的多个队列的调度优先级,依次调度所述多个队列中的执行单元而运行;
106.处理模块502,用于根据任一执行实体的累计运行时间,达到所述执行实体对应当前所处调度优先级的设备运行时间的情况下,调整所述执行实体的调度优先级并将所述执行实体中处于启动状态的至少一个执行单元加入对应队列中;其中,按照调度优先级从高到低的顺序,所述执行实体对应所述多个队列的设定运行时间依次增加。
107.一个实际应用中,调度模块可以具体用于按照物理cpu配置的多个队列分别对应的调度优先级,依次调度所述多个队列中的虚拟cpu而运行;
108.处理模块可以具体用于在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级并将处于启动状态的至少一个虚拟cpu加入对应队列中;其中,按照调度优先级从高到低的顺序,所述虚拟机对应多个调度优先级的设定运行时间依次增加。
109.一些实施例中,该处理模块可以具体是在任一个虚拟机的任一个虚拟cpu的当前时间片运行结束或者任一个虚拟cpu被唤醒的情况下,判断所述虚拟机的虚拟cpu累积运行时间是否达到所述虚拟机对应当前所处调度优先级的设定运行时间,若是,降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu的调度优先级加入对应队列中;若否,保持所述虚拟机的调度优先级不变。
110.一些实施例中,处理模块降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu加入对应队列中包括:将所述虚拟机降低一个调度优先级;将所述虚拟机处于启动状态的至少一个虚拟cpu加入所述虚拟机的当前调度优先级对应的队列中。
111.一些实施例中,该处理模块还用于在所述虚拟cpu累积运行时间,小于所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,保持所述虚拟机的当前调度优先级不变。
112.一些实施例中,该处理模块还用于周期性调整所述物理cpu对应的至少一个虚拟机的调度优先级为最高优先级,并将所述至少一个虚拟机中处于启动状态的多个虚拟cpu加入到最高调度优先级对应的队列中。
113.一些实施例中,该调度模块可以具体是在任一个虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间且当前调整周期未结束的情况
下,降低所述虚拟机的调度优先级,并将处于启动状态的至少一个虚拟cpu加入对应队列中。
114.一些实施例中,该调度模块还用于针对任一个队列的入队事件,在当前入队的虚拟cpu的调度优先级高于当前运行的虚拟cpu的调度优先级,调度当前入队的虚拟cpu在所述物理cpu中抢占运行;将被抢占的虚拟cpu根据其当前所处调度优先级插入至对应队列的队首位置。
115.一些实施例中,该调度模块可以具体用于在任一个虚拟机为非最低调度优先级的情况下,若所述虚拟机的虚拟cpu累积运行时间,达到所述虚拟机对应当前所处调度优先级的设定运行时间的情况下,降低所述虚拟机的调度优先级并将处于启动状态的至少一个虚拟cpu加入对应队列中。
116.一些实施例中,该处理模块还用于若任一个虚拟机为最低调度优先级,保持所述虚拟机的调度优先级不变直至当前调整周期结束。
117.图5所述的调度装置可以执行图1或图2所示实施例所述的调度方法,其实现原理和技术效果不再赘述。对于上述实施例中的调度装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
118.此外,本技术实施例中还提供了一种计算机系统,如图6中所述,该计算机系统可以包存储组件601以及处理组件602;其中,该处理组件602可以包括至少一个物理cpu603。
119.存储组件601存储条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件602调用并执行以实现如图1或图2所示实施例的调度方法。
120.其中,该计算机系统可以为一个物理设备,或者实现为多个物理设备组成的分布式集群等;
121.该计算机系统可以是云计算平台提供的提供ecs(elastic compute service,弹性计算服务)的弹性计算主机等,在该计算机系统中所创建的虚拟机可以为ecs实例。
122.其中,存储组件601被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
123.当然,计算机系统必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
124.本技术实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图1或图2所示实施例的调度方法。该计算机可读介质可以是上述实施例中描述的计算机系统中所包含的;也可以是单独存在,而未装配入该电子设备中。
125.本技术实施例还提供了一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,所述计算机程序被计算机执行时可以实现如上述如图1或图2所示实施例的调度方法。在这样的实施例中,计算机程序可以是从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被处理器执行时,执行本技术的系统中限定的各种功能。
126.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
127.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
128.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
129.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1