调度方法、虚拟机监视器、电子设备及存储介质与流程
未命名
07-20
阅读:115
评论:0
1.本公开涉及虚拟化系统领域,尤其涉及一种调度方法、虚拟机监视器、电子设备和/或存储介质。
背景技术:
2.虚拟化系统是能够将单个计算机的硬件资源划分或布置为多个虚拟计算机(例如,多个虚拟机)的虚拟机系统,并且主要分为两个层次,例如,虚拟机监视器(hypervisor)和客户操作系统(guest os)。虚拟机监视器(hypervisor)运行在物理硬件和操作系统之间,允许多个客户操作系统共享一套物理硬件。客户操作系统(guest os)运行在虚拟机监视器之上。
3.由于虚拟化系统分为两个层次,其cpu调度也随之分为由如下两种执行的调度:客户操作系统内部的调度器、和虚拟机监视器层面的调度器。相应地,虚拟化系统的cpu调度技术主要包含物理cpu调度技术和虚拟cpu调度技术两个方面。虚拟机监视器(hypervisor)负责将虚拟的cpu在物理cpu上进行调度,客户操作系统(guest os)负责将系统的任务在操作系统拥有的cpu上进行调度。由于虚拟机系统的两种调度位于不同的层次,它们之间互不干涉,互不联系,各自基于自己的上下文环境进行调度行为,这就导致一种调度现象的产生,这种调度现象常被称之为双调度(double scheduling)现象。双调度现象将导致诸如lhp(locker holder preemption,互斥锁抢占)、虚拟机资源分配不公平、smp(simultaneous multi-processor,同时多处理器)调度不平衡等问题,使得虚拟机系统(例如,计算机)的整体调度性能低下。
技术实现要素:
4.根据本公开的实施例,一种由虚拟机监视器执行的调度方法可包括:获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息;至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。
5.获取所述运行数据,可包括:利用虚拟机内省技术获取所述运行数据。
6.所述利用虚拟机内省技术获取所述运行数据,可包括:利用虚拟机内省技术,获取所述客户操作系统的第一变量的值,其中所述第一变量为从所述客户操作系统的镜像符号表中确定的能够用于指示所述客户操作系统的运行状态的变量;基于所述第一变量的值,获取所述运行数据。
7.所述第一变量可包括与所述第二调度器有关的参数、与所述客户操作系统执行的任务相关的参数和/或与cpu使用情况有关的参数,所述运行数据可包括与所述第二调度器相关的信息、所述客户操作系统的cpu使用情况和/或所述客户操作系统的任务执行情况。
8.所述至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数,可包括:通过所述调度信息确定第二变量的调整值,其中,所述第二变量为基于所述客户操
作系统的镜像符号表确定的与所述第二调度器的参数有关的变量;利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值。
9.所述第二变量可包括cpu容量、cpu组容量和/或负载均衡间隔。
10.根据本公开的实施例,一种虚拟机监视器可包括至少一个处理器,所述至少一个处理器被配置为:获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息;至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。
11.所述至少一个处理器可被配置为:利用虚拟机内省技术获取所述运行数据。
12.所述至少一个处理器可被配置为通过执行以下操作来利用虚拟机内省技术获取所述运行数据:利用虚拟机内省技术,获取所述客户操作系统的第一变量的值,其中,所述第一变量为从所述客户操作系统的镜像符号表中确定的能够用于指示所述客户操作系统的运行状态的变量;基于获取的所述第一变量的值,获取所述运行数据。
13.所述第一变量可包括与所述第二调度器有关的参数、与所述客户操作系统执行的任务相关的参数和/或与cpu使用情况有关的参数,所述运行数据可包括与所述第二调度器相关的信息、所述客户操作系统的cpu使用情况和/或所述客户操作系统的任务执行情况。
14.所述至少一个处理器可被配置为通过执行以下操作来至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数:通过所述调度信息确定第二变量的调整值,其中,所述第二变量为基于所述客户操作系统的镜像符号表确定的与所述第二调度器的参数有关的变量;利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值。
15.所述第二变量可包括cpu容量、cpu组容量和/或负载均衡间隔。
16.根据本公开的实施例,一种电子设备包括:至少一个存储计算机可执行指令的存储器,至少一个处理器,被配置为运行所述计算机可执行指令以执行如上所述的调度方法。
17.根据本公开的实施例,提供了一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如上所述的调度方法。
18.根据本公开示例实施例的调度方法和虚拟机监视器,通过获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息,并且至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数,可以有效地实现协同调度,从而提高系统(例如,计算机)的整体调度性能。
附图说明
19.当结合附图考虑以下详细描述时,将容易获得对本公开及其许多伴随方面的更完整理解。
20.图1是示出虚拟机系统的两个层次的调度的示意图;
21.图2是示出双调度现象可能会导致的互斥锁抢占(lhp)问题的示意图;
22.图3是示出双调度现象可能会导致的虚拟机资源分配不公平现象的示意图;
23.图4是示出双调度现象可能会导致的同时多处理器(smp)调度不平衡现象的示意图;
24.图5是示出根据本公开的示例实施例的示例架构;
25.图6是示出根据本公开的示例实施例的由虚拟机监视器执行的调度方法的流程图;
26.图7是示出根据本公开的示例实施例的由图5所示的虚拟机监视器执行的调度方法的示例流程图。
27.图8是示出根据本公开的示例实施例的虚拟机监视器的框图;
28.图9是示出根据本公开的示例实施例的电子设备的框图。
具体实施方式
29.在描述附图中所示的本公开的一些示例实施例时,为了清楚起见采用了特定的术语。然而,本公开并不旨在限于如此选择的特定术语,并且应当理解,每个特定元素包括以类似方式操作的所有技术等同物。需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的示例实施例能够以除了在这里图示或描述的那些以外的顺序实施。
30.在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括a和b之中的至少一个”即包括如下三种并列的情况:(1)包括a;(2)包括b;(3)包括a和b。例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
31.如本文所用,如“至少一个”的表述,当位于一系列元素之后时,修饰整个元素列表,而不是修饰列表中的单个元素。因此,例如,“a、b或c中的至少一个”和“a、b和c中的至少一个”都表示a、b、c或其任意组合。表述“a、b和/或c”也指a、b、c或其任意组合。
32.图1是示出虚拟机系统的两个层次的调度的示意图。
33.如在背景技术中所提及的以及如图1所示,虚拟化系统主要分为两个层次(例如,虚拟机监视器(hypervisor)和客户操作系统(guest os))。虚拟机监视器运行在物理硬件和操作系统之间,并且允许多个客户操作系统共享一套物理硬件。客户操作系统运行在虚拟机监视器之上。例如,虚拟机监视器可管理多个虚拟机(vm),每个虚拟机上可运行一个客户操作系统。客户操作系统的调度器将系统内的任务调度到虚拟cpu(vcpu)资源上运行,虚拟机监视器的调度器将虚拟cpu(vcpu)调度到cpu资源上运行。这两种调度器在其各自的环境下进行调度,调度的客体不同,调度的方式不同,调度的算法也不同。
34.由于虚拟机系统的两种调度方法互不干涉,互不联系,各自基于自己的上下文环境进行调度,因而导致双调度现象。如背景技术中提及的,双调度现象可能导致诸如互斥锁抢占(lhp)、虚拟机资源分配不公平、同时多处理器(smp)调度不平衡等问题,而使得虚拟机系统(例如,计算机)的整体调度性能低下。
35.图2是示出双调度现象可能会导致的lhp问题的示意图。
36.lhp通常指互斥锁的拥有者(lock holder)的运行权被虚拟机监视器剥夺,导致其他等待该锁资源的线程在其所在的虚拟cpu上一直做自旋(spinning)操作从而浪费cpu资源。如图2所示,vcpu0上一个使用者guest os1申请了锁以后,此vcpu0又被虚拟机监视器调
度器调度给guest os2,而此时vcpu1上如果有使用者(如guest os1)要申请锁的话,只能等待vcpu0被调度回来执行并释放锁以后,才能申请到锁的使用,这之间等待的时间是lhp导致的无用等待时间。
37.图3是示出双调度现象可能会导致的虚拟机资源分配不公平现象的示意图。
38.虚拟机监视器调度器始终按照其自己的算法调度的cpu资源,不会考虑运行在其之上的虚拟机的客户操作系统的状态。如图3所示,客户操作系统1运行了相对较重的任务,而客户操作系统2运行了相对较轻的任务。这两种工作状态可使用不同的cpu资源。但是,虚拟机监视器调度器依然按照轮询调度的方法给两个客户操作系统的vcpu分配均等的物理cpu(pcpu)运行时间,这就导致任务较重的客户操作系统1缺少足够的cpu资源来处理其任务,而任务较轻的客户操作系统2浪费了部分cpu资源,带来资源分配不合理的问题。
39.图4是示出双调度现象可能会导致的smp调度不平衡现象的示意图。
40.从客户操作系统的角度来看,其始终认为其是独占当前的cpu资源的,这在共享cpu(例如,虚拟机和其他虚拟机进行cpu共享)的情况下,可能发生如图4所示的调度不均衡的现象。如图4所示,客户操作系统1的调度器认为其拥有的cpu0和cpu1的能力是一样的,往这两个cpu上分配任务也是对等的,但实际上客户操作系统1是和另外的客户操作系统共享cpu0,cpu1是完全被客户操作系统调度。也就是说,cpu0和cpu1反映在客户操作系统1的能力是不一致的,并且这导致客户操作系统的调度器做出的任务调度实际上是不合理的或不平衡的。
41.出现上述问题的是因为虚拟机监视器的调度器和客户操作系统的调度器是完全分开的。在虚拟机监视器的调度器与客户操作系统的调度器之间没有数据沟通,并且虚拟机监视器的调度器与客户操作系统的调度器不知晓对方的调度状态以及调度方法。因此,可能导致虚拟机系统(例如,计算机)的整体调度性能下降。
42.为此,本公开的一些示例实施例提出一种调度方法,其可在不对客户操作系统进行任何修改而只是对虚拟机监视器进行一些改变的情况下实现协同调度。下面,将参照图5至图9对本公开的一些示例实施例进行描述。
43.图5示出根据本公开的示例实施例的示例架构。如图5所示,所有修改均集中在虚拟机监视器里,客户操作系统不做任何修改。例如,虚拟机监视器可以增加如下三个模块:
44.1.操作系统数据检测器
45.此模块可以使用虚拟机内省(vmi,virtual machine introspection)技术来监测客户操作系统运行时的数据。作为示例,这些数据主要可以包括:操作系统调度器的相关信息(例如,调度周期、负载均衡参数)、cpu使用情况(例如,cpu使用率),和/或当前任务的执行情况等。
46.2.操作系统调度调整模块
47.此模块使用vmi技术确定与客户操作系统的调度器的参数有关的变量,并且根据调度控制器模块提供的信息(虚拟机监视器的调度器的调度信息)在虚拟机监视器里动态地调整与客户操作系统的调度器的参数有关的变量的值,进而实现对客户操作系统的调度器的参数的调整。
48.3.调度控制器
49.此模块作为客户操作系统的调度器(也可被称为“任务调度器”)和虚拟机监视器
的调度器(也可被称为“vcpu调度器”)的桥接模块。此模块(例如,调度控制器)的主要功能包括:
50.1)从操作系统数据检测器模块收集客户操作系统的运行数据(例如,与客户操作系统的调度器相关的信息、客户操作系统的任务执行情况、和/或cpu使用情况),并基于运行数据调整虚拟机监视器的调度器的参数。
51.2)监测虚拟机监视器的调度器的调度决策(决定执行什么样的调度)、调度行为(实际执行了什么样的调度操作)和/或调度状态,将虚拟机监视器调度器的这些调度信息传递给操作系统调度调整模块。
52.需要说明的是,虚拟机监视器的修改不限于以上示例,也就是说,虚拟机监视器不必一定单独包含以上模块,以上模块可以被合并或组合,只要虚拟机监视器能够执行以下将描述的调度方法即可。例如,如果仅调整虚拟机监视器的调度器的参数,则虚拟机监视器可以不包含操作系统调度调整模块,而如果只调整客户操作系统的调度器的参数,则可以不包含操作系统数据检测器,或者也可以包含操作系统数据检测器,原因是,虚拟机监视器可以至少基于虚拟机监视器的调度器的调度信息调整客户操作系统的调度器的参数。例如,可以仅基于虚拟机监视器的调度器的调度信息调整客户操作系统的调度器的参数(这种情况下,虚拟机监视器可以不包含操作系统数据检测器),或者,也可以基于虚拟机监视器的调度器的调度信息以及客户操作系统的运行数据两者来调整客户操作系统的调度器的参数(这种情况下,虚拟机监视器可以包含操作系统数据检测器)。
53.图6示出根据本公开的示例实施例的由虚拟机监视器执行的调度方法的流程图。参照图6,在步骤s610,获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息。随后,在步骤s620,可以至少基于获取的所述运行数据调整所述第一调度器的参数;和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。客户操作系统例如可以linux操作系统和android操作系统,等等。
54.下面,将结合示例对图6所示的步骤进行详细描述。
55.根据一些示例实施例,在步骤s610,获取所述运行数据,可以包括:利用虚拟机内省技术获取所述运行数据。例如,在虚拟机外部监控虚拟机内运行状态的方法被称为vmi。vmi允许虚拟机监控器在不修改客户操作系统的代码情况下获取客户操作系统的运行数据。
56.作为示例,所述运行数据包括与所述第二调度器相关的信息、所述客户操作系统的cpu使用情况和/或所述客户操作系统的任务执行情况。例如,与所述第二调度器相关的信息可以包括所述第二调度器的调度周期、负载均衡参数(比如,负载均衡间隔)等。
57.例如,所述客户操作系统的cpu使用情况可以包括cpu使用率等。例如,所述客户操作系统的任务执行情况可以包括所述客户操作系统的当前任务的执行状况等。然而,上述运行数据不限于以上示例,而是可以是客户操作系统运行时的各种数据。
58.例如,利用虚拟机内省技术获取所述运行数据可以包括:(1)利用虚拟机内省技术,获取所述客户操作系统的第一变量的值,其中所述第一变量为从所述客户操作系统的镜像符号表中确定的能够用于指示所述客户操作系统的运行状态的变量;(2)基于所述第一变量的值,获取所述运行数据。例如,利用虚拟机内省技术可以实现在不修改所述客户操作系统的代码的情况下,通过对所述客户操作系统的镜像符号进行分析确定第一变量。在
获取到第一变量的值后,例如,可以将第一变量的值直接作为所述运行数据,或者,也可以对各种第一变量的值进行统计分析或执行各种运算处理,将统计分析结果或运算处理结果作为所述运行数据。在一些示例实施例中,第一变量的值还可以基于与影响客户操作系统运行的其他数据的综合分析或处理而获得以确定所述运行数据。然而,基于所述第一变量的值获取所述运行数据的具体方式不限于以上示例,本发明对基于所述第一变量的值获取所述运行数据的方式并无限制。
59.上述第一变量可以包括与所述第二调度器有关的变量、与所述客户操作系统执行的任务相关的变量和/或与cpu使用情况有关的变量,但不限于此。与所述第二调度器有关的变量例如可以是调度周期和/或负载均衡间隔。与所述客户操作系统执行的任务相关的变量例如可以是反映当前任务的执行情况的变量。与cpu使用情况有关的变量例如可以是cpu使用率等。
60.例如,在虚拟机系统初始化阶段,图5所示的操作系统数据检测器模块可以预先通过vmi技术分析运行于虚拟机监视器上的多个客户操作系统的镜像符号表,来确定所述第一变量。镜像符号表中包含客户操作系统的代码中的各个功能函数所涉及的各种变量及其地址,这些变量中包括与客户操作系统的状态相关的第一变量。后续,在系统运行阶段,例如,操作系统数据检测器模块可以通过vmi技术周期性地(例如,周期值的设定应以不增加系统负担的前提下能够有效获取系统状态变化为宜)依据获取的第一变量的地址读取第一变量的值,并且基于获取的第一变量的值,获取上述运行数据。
61.在步骤s610获取到上述运行数据的情况下,在步骤s620,可以至少基于获取的所述运行数据调整所述第一调度器的参数。例如,可以仅基于获取的所述运行数据调整所述第一调度器的参数,或者,可以基于获取的所述运行数据以及与所述第一调度器有关的调度信息两者来调整所述第一调度器的参数。由于在调整虚拟机监视器的第一调度器的参数时考虑了客户操作系统的运行数据,因此可以利于第一调度器更合理地进行资源调度,从而尽可能避免双调度现象的发生。例如,在系统运行阶段,操作系统数据检测器模块可将运行数据周期性地发送给调度控制器模块,调度控制器模块可以对上述运行数据进行分析,并根据分析结果来动态地调整虚拟机监视器的第一调度器的参数。例如,这些参数可以包括但不限于以下参数:cpu分配给客户操作系统的时间片,分配给客户操作系统的cpu个数。
62.例如,假定当前虚拟机监视器上运行了两个客户操作系统a和b,a和b共享cpu,共享cpu的时间片分配由虚拟机监视器的第一调度器来控制。在某一时刻,假设虚拟机监视器通过操作系统数据检测器模块获取到a和b各自运行的任务负载存在差异(运行数据的一种),比如a正在运行高负载的任务,b正在运行轻量级的任务。在这种情况下,例如,操作系统数据检测器模块可将这个信息传递给调度控制器模块,然后调度控制器模块会相应地调整虚拟机监视器的第一调度器的关于共享cpu时间片的参数,将分配给a运行的cpu的时间片延长,将分配给b运行的cpu的时间片缩短,从而使a获得更多的cpu资源,使a上面的高负载的任务运行得到保障。
63.例如,假定当前虚拟机监视器上运行了两个客户操作系统a和b,虚拟机监视器通过操作系统数据检测器模块获取到客户操作系统a的cpu使用率相对高,而操作系统b的cpu使用率相对低,这种情况下,调度控制器模块可以调整分配给客户操作系统的cpu的个数,使得分配给客户操作系统a的cpu个数增多,而分配给客户操作系统b的cpu个数减少。在一
些示例实施例中,如果客户操作系统a和b共享cpu,则可以将分配给a运行的cpu的时间片延长,将分配给b运行的cpu的时间片缩短,从而使a获得更多的cpu资源。
64.再例如,假设当前虚拟机监视器上运行了两个客户操作系统a和b,并且客户操作系统a和b共享cpu,虚拟机监视器通过操作系统数据检测器模块获取到客户操作系统a的负载均衡间隔变短,则需要对客户操作系统a响应更快,这种情况下,调度控制器模块可以调整分配给客户操作系统的cpu的个数或cpu分配给客户操作操作的时间片,甚至可以使共享cpu被客户操作系统独占。
65.在一些示例实施例中,尽管图6中未示出,但是可选地,图6所示的方法还可包括:在所述第一调度器的参数被调整之后,基于调整后的所述第一调度器的参数执行cpu资源调度。
66.以上描述了虚拟机监视器可以基于客户操作系统的运行数据调整其自身第一调度器的参数。根据图6所示的调度方法,虚拟机监视器还可以基于与其自身的第一调度器有关的调度信息来调整客户操作系统的第二调度器的参数。下面,结合一些示例对此进行描述。
67.如图6中所示,在步骤s610中可以获取虚拟机监视器的第一调度器的调度信息。作为示例,第一调度器的调度信息可以是第一调度器的调度决策信息,例如,第一调度器作出的以时间片轮转的方式将分配给一个客户操作系统的cpu资源分配给另一个客户操作系统的决策,或者,第一调度器的调度周期等。例如,可以监测所述第一调度器的调度行为,并根据所述调度行为获取所述调度信息。例如,在系统运行阶段,虚拟机监视器中的调度控制器可以监测第一调度器的调度行为以收集第一调度器的调度信息(例如,调度决策信息)。收集的信息可被发送给操作系统调度调整模块。
68.随后,在步骤s620中可以至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。例如,可以仅基于获取的所述第一调度器的调度信息调整所述第二调度器的参数,或者,可以基于获取的所述第一调度器的调度信息以及客户操作系统的运行数据两者来调整所述第二调度器的参数。由于在调整客户操作系统的第二调度器的参数时考虑了虚拟机监视器的第一调度器的调度信息,因此可以利于客户操作系统的第二调度器基于这些调整后的参数更合理地进行资源调度,从而尽可能避免或者减少双调度现象的发生。
69.例如,可以通过所述第一调度器的调度信息确定第二变量的调整值,利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值。这里,第二变量为基于所述客户操作系统的镜像符号表确定的与所述第二调度器的参数有关的变量。例如,通过对所述客户操作系统的镜像符号进行分析,可以确定第二变量。随后,可以利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值。通过利用虚拟机内省技术,可以在不修改客户操作系统的代码的情况下,修改第二变量的当前值。
70.作为示例,上述第二变量可以包括cpu容量、cpu组容量和/或负载均衡间隔,但不限于此。cpu容量可以表示cpu在一个周期内可以执行多少比特的信息。cpu组容量是指在按组调度cpu的场景中cpu组在一个周期内可以执行多少比特的信息。负载均衡间隔可以表示每隔多久执行一次负载均衡操作。
71.例如,在系统初始化阶段,虚拟机监视器中的操作系统调度调整模块可通过vmi技
术分析客户操作系统的镜像符号表,确定客户操作系统的第二调度器的参数有关的变量(例如,上述第二变量)并得到这些变量的地址。
72.在系统运行阶段,虚拟机监视器中的操作系统调度调整模块可从调度控制器接收第一调度器的调度信息并且分析这些调度信息,根据分析结果得出客户操作系统的第二调度器的调度参数的调整值,然后,通过vmi技术动态地将调整值写入到客户操作系统的第二变量的地址里,从而实现在虚拟机监视器中直接更改客户操作系统的第二调度器的参数。例如,可以利用vmi技术修改客户操作系统的代码的运行环境,修改后在这种运行环境下虚拟机监视器便可以给第二变量赋新值,然而,利用vmi技术将所述调整值确定为所述第二变量的当前值的方式不限于上述方式。可根据cpu硬件的不同,采用不同的方式使用vmi技术修改所述第二变量的值。
73.作为示例,假定当前虚拟机系统运行两个客户操作系统a和b,虚拟机系统有4个cpu核,cpu0独立分配给a,cpu3独立分配给b,cpu1和cpu2共享分配给a和b,共享的方式是时间片轮转方式。在某一时刻,虚拟机监视器的调度控制器收集到虚拟机监视器的第一调度器的一个调度信息,此信息是第一调度器将要进行时间片轮转,把分配给客户操作系统a的cpu1和cpu2资源分配给客户操作系统b。调度控制器模块可将此信息传递给操作系统调度调整模块,操作系统调度调整模块分析此信息后,作出调整客户操作系统a的cpu容量参数的决定,操作系统调度调整模块便可通过vmi技术,将a的cpu容量参数修改成一个新的值,然后a的调度器后续便可以根据这个新值来进行它自己的调度活动。此调度活动可被称为负载均衡的调度活动。
74.需要说明的是,步骤620可以只执行“至少基于获取的所述运行数据调整所述第一调度器的参数”(以下简称“操作1”),也可以只执行“至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数”(以下简称“操作2”),或者,可以执行操作1和操作2,这取决于步骤s610获取的信息,如果步骤s610获取到客户操作系统的运行数据,则可以执行操作1,如果步骤s610获取到了第一调度器的调度信息,则可以执行操作2,如果客户操作系统的运行数据和第一调度器的调度信息都获取到了,则可以执行操作1和操作2。此外,在操作1和操作2都执行的情况下,本发明对操作1和操作2的执行顺序并无限制,可以执行完操作1再执行操作2,也可以执行完操作2再执行操作1,或者操作1和操作2可以同时执行,并且操作1和操作2彼此可以互不影响。
75.以上,已经参照图6描述了根据实施例的由虚拟机监视器执行的调度方法,根据该调度方法,由于在调整虚拟机监视器的第一调度器的参数时考虑了客户操作系统的运行数据,因此可以利于第一调度器更合理地进行资源调度,从而尽可能避免双调度现象的发生。此外,由于在调整客户操作系统的第二调度器的参数时考虑了虚拟机监视器的第一调度器的调度信息,因此可以利于客户操作系统的第二调度器基于这些调整后的参数更合理地进行资源调度,从而尽可能避免或减少双调度现象的发生。也就是说,根据上述调度方法,实现了协同调度,能够提高虚拟机系统(例如,计算机)的整体的调度性能。而且,根据上述调度方法,可以在不修改客户操作系统的情况下实现协同调度,而且上述调度方法也不需要虚拟机调度器与客户操作系统进行深入的通信来达到协同调度,因而可以极大的减少开放难度和成本,增加与客户操作系统的适配性。
76.为便于理解,下面再参照图7的示例对上述调度方法进行简要描述。图7是示出根
据本公开的示例实施例的由图5所示的虚拟机监视器执行的调度方法的示例流程图。
77.假设虚拟机监视器如图5所示包括操作系统数据检测器、操作系统调度调整模块和调度控制器。如图7所示,在步骤s710,虚拟机监视器对客户操作系统的镜像符号进行分析来确定指示所述客户操作系统的运行状态的第一变量以及与所述客户操作系统的第二调度器的参数有关的第二变量。接下来,在步骤s720,操作系统数据检测器可以保存第一变量。在步骤s730,操作系统调度调整模块可以保存第二变量。在步骤s740,操作系统数据检测器可收集客户操作系统状态,从而获取客户操作系统的运行数据。例如,根据指示客户操作系统的运行状态的第一变量的值,获取客户操作系统的运行数据。在步骤s750,调度控制器可收集虚拟机监视器的调度状态,从而获取与虚拟机监视器的第一调度器有关的调度信息。在步骤s760,调度控制器可根据获取的运行数据调整虚拟机监视器的第一调度器的调度参数。在步骤s770,操作系统调度控制模块可根据获取的调度信息调整客户操作系统的第二调度器的参数。可周期性地重复步骤s740和s760,并且可周期性地重复步骤s750和s770,从而可周期性地基于与虚拟机监视器的第一调度器有关的调度信息调整客户操作系统的第二调度器的参数,并且周期性地基于客户操作系统的运行数据调整虚拟机监视器的第一调度器的参数,从而尽可能避免或减少双调度现象的发生。
78.以上,已经结合图5至图7描述了根据本公开的一些示例实施例的调度方法,上述调度方法可应用于采用虚拟化技术的任何计算机系统,例如,采用虚拟化技术的车机系统,诸如,在自动驾驶领域中使用的车机系统。通过采用根据本公开的一些示例实施例的调度方法,由于不对客户操作系统作任何修改,因此能够极大的减少开发难度,增加与客户操作系统的适配性。在实施这样的调度方法之后,可以提高虚拟机系统(例如,计算机)的整体调度性能。
79.图8是示出根据本公开的示例实施例的虚拟机监视器800的框图。
80.参照图8,虚拟机监视器800可包括数据获取单元810和参数调整单元820。例如,数据获取单元810可被配置为获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息。参数调整单元820可被配置为:至少基于获取的所述运行数据调整所述第一调度器的参数;和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。在上文中,已经对数据获取单元810和参数调整单元820执行的具体操作所涉及的细节进行过描述,因此,这里不再赘述。数据获取单元810和参数调整单元820可表示由包括在虚拟机监视器800中的至少一个处理器执行的功能。
81.根据本公开的一些示例实施例,数据获取单元810可利用虚拟机内省技术,获取客户操作系统的第一变量的值,并且可以基于获取的所述第一变量的值,获取所述运行数据。这里,第一变量可以是从所述客户操作系统的镜像符号表中确定的能够用于指示所述客户操作系统的运行状态的变量。通过利用虚拟机内省技术,可以在不修改客户操作系统的代码的情况下,获取客户操作系统的运行数据。此外,调整单元820可通过所述调度信息确定所述第二变量的调整值,利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值,从而实现至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。这里,所述第二变量可以是基于客户操作系统的镜像符号表确定的与所述第二调度器的参数有关的变量。通过利用虚拟机内省技术,可以在不修改客户操作系统的代码的情况下,调整客户操作系统的第二调度器的参数。
82.另外,根据一些示例实施例,虚拟机监视器800还可包括所述第一调度器。所述第一调度器可被被配置为在所述第一调度器的参数被调整之后,基于调整后的所述第一调度器的参数执行cpu资源调度。
83.关于以上提及的各单元所执行的操作中涉及的任何相关细节均可参见上文中提供的关于图5至图7的相应描述。
84.此外,需要说明的是,尽管以上在介绍虚拟机监视器800时将其划分为用于分别执行相应处理的单元,然而,本领域技术人员清楚的是,上述各单元执行的处理也可以在虚拟机监视器800不进行任何具体单元划分或者各单元之间并无明确划界的情况下执行。此外,虚拟机监视器800的单元划分方式也不限于图8的示例。例如,虚拟机监视器可包括如图5中所示出的单元。本公开对虚拟机监视器800的单元或模块划分方式并无任何限制,只要其能够执行图6所示的调度方法即可。此外,虚拟机监视器800还可包括其他单元,例如,存储单元。
85.还应理解,各种单元可以被实现为一个或多个电子电路,并且上述各种单元中的一个或多个也可以实现为单个电子电路。
86.根据本公开的一些示例实施例的虚拟机监视器,通过获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息,并且至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数,可以有效地实现协同调度,从而提高虚拟机系统(例如,计算机)的整体调度性能。
87.图9是示出根据本公开的示例实施例的电子设备的框图。
88.参照图9,电子设备900可包括至少一个存储器901和至少一个处理器902,所述至少一个存储器901存储计算机可执行指令,计算机可执行指令在被至少一个处理器902执行时,促使至少一个处理器902执行根据本公开的一些示例实施例的调度方法。
89.作为示例,电子设备900可以是pc计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。例如,电子设备900可连接到无线lan。这里,电子设备900并非必须是单个的电子设备,还可以是能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
90.在电子设备900中,处理器902可包括中央处理器(cpu)、图形处理器(gpu)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
91.处理器902可运行存储在存储器901中的指令或代码,其中,存储器901还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
92.存储器901可与处理器902集成为一体。例如,存储器901可以是布置在集成电路微处理器中的ram或闪存。此外,存储器901可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器901和处理器902可在操作上进行耦合,或者可通过例如i/o端口或网络连接互相通信,使得处理器902能够读取存储在存储器901中的文件。
93.此外,电子设备900还可包括视频显示器(例如,液晶显示器)和用户交互接口(例如,键盘、鼠标或触摸输入装置)。电子设备的所有组件可经由总线和/或网络而彼此连接。
94.根据本公开的一些示例实施例,还可提供一种存储指令的计算机可读存储介质,其中,当所述指令由至少一个处理器执行时,促使所述至少一个处理器执行根据本公开的一些示例实施例的调度方法。这里的计算机可读存储介质的示例包括:只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的指令或计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
95.附图中所示和上文所述的任何功能块均可在处理电路(诸如,包括逻辑电路的硬件)、硬件/软件组合(诸如执行软件的处理器)、或它们的组合中实现。例如,处理电路更具体地可以包括但不限于中央处理单元(cpu)、算术逻辑单元(alu)、数字信号处理器、微型计算机、现场可编程门阵列(fpga)、片上系统(soc)、可编程逻辑单元、微处理器、专用集成电路(asic)等。
96.本领域技术人员将理解,在不脱离本公开的范围的情况下,可以根据已经描述的内容修改本公开的示例实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理。
技术特征:
1.一种由虚拟机监视器执行的调度方法,包括:获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息;至少基于获取的所述运行数据调整所述第一调度器的参数;和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。2.如权利要求1所述的调度方法,其中,获取步骤包括:利用虚拟机内省技术获取所述运行数据。3.如权利要求2所述的调度方法,其中,所述利用虚拟机内省技术获取所述运行数据,包括:利用虚拟机内省技术,获取所述客户操作系统的第一变量的值,其中所述第一变量为从所述客户操作系统的镜像符号表中确定的变量;基于所述第一变量的值,获取所述运行数据。4.如权利要求3所述的调度方法,其中,所述第一变量包括与所述第二调度器有关的参数、与所述客户操作系统运行的任务相关的参数和/或与cpu使用情况有关的参数;所述运行数据包括与所述第二调度器相关的信息、所述客户操作系统的cpu使用情况和/或所述客户操作系统的任务执行情况。5.如权利要求1所述的调度方法,其中,所述至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数,包括:通过所述调度信息确定第二变量的调整值,其中,所述第二变量为基于所述客户操作系统的镜像符号表确定的与所述第二调度器的参数有关的变量;利用虚拟机内省技术,将所述调整值确定为所述第二变量的当前值。6.如权利要求5所述的调度方法,其中,所述第二变量包括cpu容量、cpu组容量和/或负载均衡间隔。7.一种虚拟机监视器,包括:至少一个处理器,被配置为:获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息;至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。8.一种电子设备,其特征在于,包括:至少一个存储计算机可执行指令的存储器;至少一个处理器,被配置为运行所述计算机可执行指令以执行如权利要求1所述的调度方法。9.一种存储指令的计算机可读存储介质,其特征在于,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1所述的调度方法。
技术总结
本公开关于一种调度方法、虚拟机监视器、电子设备及存储介质。可提供包括以下步骤的所述调度方法:获取虚拟机监视器上运行的客户操作系统的运行数据和/或虚拟机监视器的第一调度器的调度信息;至少基于获取的所述运行数据调整所述第一调度器的参数,和/或,至少基于获取的所述调度信息调整所述客户操作系统的第二调度器的参数。二调度器的参数。二调度器的参数。
技术研发人员:周戴欢 戴月华 赵民栋
受保护的技术使用者:三星电子株式会社
技术研发日:2023.03.17
技术公布日:2023/7/19
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种缺资料流域径流量智能预测方法与流程 下一篇:双Z轴六工位内绕机的制作方法
