一种热迁移中的降频方法、装置及存储介质与流程

文档序号:17287478发布日期:2019-04-03 03:41阅读:721来源:国知局
本发明涉及虚拟机领域,尤其涉及一种热迁移中的降频方法、装置及存储介质。
背景技术
::热迁移(livemigrate)是基于核的虚拟机(kernel-basedvirtualmachine,kvm)平台一个非常重要的特性(feature),又称为动态迁移、实时迁移,在数据中心的运维方面扮演重要的角色。热迁移过程中,虚拟机的停机时间(downtime)直接会影响虚拟机(virtualmachine,vm)的可用时间。在kvm的热迁移过程中,需要不断的把vm内存从源端拷贝到目的端。由于有内存脏页(被修改过的页)的产生,所以通常情况下需要迭代很多次才能把内存完全拷贝完。当迭代一定次数达到内存的收敛之后,就会进行最后一次的拷贝。最后一次拷贝花的时间就是俗称的downtime。从以上描述来看,downtime时间的大小主要由最后一轮需要传输的内存脏页大小来决定的。通常情况下,可以适当减少进行热迁移的vm中vcpu运行时间来降低内存脏页产生的速度,那么在主机(host)端的表现即减少相应虚拟中央处理器(virtualcentralprocessingunit,vcpu)线程被调度的时间,进而达到对vcpu降频的效果。一种解决方案中,在脏页率达到一定阈值之后,会把进行热迁移的vm中所有的vcpu线程唤醒(这样可以防止vcpu已经在睡眠时又进行睡眠的情况发生),然后对进行热迁移的vm中的vcpu线程进行毫秒(ms)级的睡眠(sleep),那么在host端表现为进行热迁移的vm中的vcpu线程主动让出物理cpu,进而导致进行热迁移的vm中的vcpu线程不会得到调度。从实际运用来看,上述解决方案过于简单粗暴,会导致在进行其它操作(比如计算、编解码等)的vcpu也被睡眠,使得vm整体性能降低。技术实现要素:本申请提供一种热迁移中的降频方法、装置及存储介质,可以当在热迁移过程中进行降频时,减少对虚拟机性能的影响。本申请采用如下技术方案。一种热迁移中的降频方法,包括:在热迁移的过程中,确定降频后,对降频所针对的虚拟中央处理器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线程进行阻塞操作。其中,所述用于降频的程序在被所述处理器读取执行时,在确定降频前还可以进行如下操作:当热迁移的统计数据满足降频的触发条件时,生成用于指示降频的信号,发送给所述热迁移的源端虚拟机中的全部或部分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线程。本申请至少一个实施例中,提出了在虚拟机热迁移过程中更加细粒度的降频方案,只在特定退出中阻塞(block)vcpu线程,可以避免降频时一些不必要的vcpu线程阻塞,从而减少对虚拟机性能的影响。本申请实施例的一种实现方式中,只对写内存页导致的退出(exit)进行vcpu线程block,而其他操作引起的exit则不对vcpu线程进行阻塞,从而可以更加精确的控制降频操作,最大限度降低对虚拟机性能的影响。本申请实施例的一种实现方式中,在阻塞vcpu线程后定期判断是否唤醒vcpu线程,从而可以及时唤醒vcpu线程。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明图1是实施例一的热迁移中的降频方法的流程图;图2是应用实施例一的方法的系统架构示意图;图3是实施例一的例子中的kvm物理机器的示意图;图4是实施例一的例子中的降频过程的示意图;图5是实施例一的例子中热迁移中内存拷贝的过程示意图;图6是实施例三的热迁移中的降频装置的流程图。具体实施方式下面将结合附图及实施例对本申请的技术方案进行更详细的说明。需要说明的是,如果不冲突,本申请实施例以及实现方式中的不同特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在一种配置中,进行降频的计算设备可包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存(memory)。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。内存可能包括一个或多个模块。计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom),快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。实施例一、一种热迁移中的降频方法,如图1所示,包括步骤s110~s120:s110、在热迁移的过程中,确定降频后,对降频所针对的vcpu线程进行标记;s120、当对已标记的vcpu线程执行预定类型的操作时,阻塞已标记的vcpu线程。本实施例中,vm可以但不限于是指kvm,也可以是其它开源的虚拟机,或其它可以对执行代码进行修改的虚拟机。本实施例中,所述降频所针对的vcpu线程可以但不限于包括热迁移中源端vm的全部或部分vcpu线程。源端vm可以是指热迁移中作为迁移对象的vm,热迁移过程中的内存拷贝,是将源端vm的内存copy到目标vm。源端vm中可以包含一个或多个vcpu线程。本实施例中,可以但不限于通过作为源端vm宿主的物理机器上的功能模块执行上述步骤s110~s120。本实施例中,当vcpu线程被block后将处于block状态,当源端vm中的至少一个vcpu线程被block后,相当于源端的vcpu降频,进而可以降低脏页的产生速度,以减少热迁移中的downtime。本实施例中,预定类型的操作可以由系统管理员设置、修改,也可以为默认的操作,直接保存在执行代码中。本实施例中,blockvcpu线程的做法可以但不限于包括使vcpu线程休眠。本实施例中,可以是当热迁移过程中满足降频的触发条件时,确定降频,从而触发vcpu降频;比如可以是当热迁移源端中内存的脏页率达到预设阈值时触发vcpu降频,也可以是热迁移中的其它统计数据满足其它预设的触发条件时触发vcpu降频。本实施例中,如果是没有标记的vcpu线程执行预定类型的操作,可以不进行block,而是让该vcpu线程继续运行;没有标记可以意味着热迁移目前不需要进行降频。本实施例中,确定降频可以包括以下任一种情况:捕获到用于指示降频的信号、接收到用于指示降频的信号、检测到用于指示降频的信号、监听到用于指示降频的信号、拦截到用于指示降频的信号、确定需要进行降频、确定需要指示源端虚拟机中的vcpu线程降频等。其中,用于指示降频的信号可以是在vcpu线程创建时,专门为vcpu线程注册的信号,也可以是其中携带了降频指示的其它信号。一种应用本实施例的降频方法的系统架构如图2所示,作为源端vm宿主机的物理机器上,运行有模拟器(或可以称为仿真器),和底层虚拟模块,比如在kvm技术中,模拟器可以是qemu模块,底层虚拟模块可以是kmod。其中,模拟器可以用于在对热迁移中的数据进行统计,比如统计脏页率;数据满足降频的触发条件时,生成用于指示降频的信号,发送给源端vm中的全部或部分vcpu线程。其中,用于指示降频的信号可以是在vcpu线程创建的时候,为该vcpu线程在底层虚拟模块里面注册的一个信号(signal)。底层虚拟模块可以用于执行上述步骤s110~s120,通过捕获发送给vcpu线程的信号,来得到上述用于指示降频的信号;另外还可以用于在热迁移的内存拷贝中,将源端vm的内存页设为“只读”,并在设为“只读”的内存页被操作时,通过更新脏页位图或其它方式,来记录该内存页为脏页;模拟器可以基于脏页位图等统计脏页率。一种实现方式中,预定类型的操作可以包括写内存页导致的exit。本实现方式中,写内存页导致的exit可以但不限于是扩展页表(extendedpagetable,ept)误配置(misconfigure)exit。其它实现方式中,写内存页导致的exit也可以是采用其它名称的exit,或其它类型的写内存页导致的exit。其它实现方式中,也不排除预定类型的操作还包括另外情况导致的exit,或另外的操作;如果预定类型的操作是另外的操作,则可以在block一个vcpu线程之前先唤醒该vcpu线程,以免对在block状态的vcpu线程重复block。一种实现方式中,对降频所针对的vcpu线程进行标记可以包括:在降频所针对的vcpu线程对应的vcpu请求位图(requestbitmap)中,将block位置位。本实现方式中,可以通过产生页故障阻塞请求(pagefaultblockrequest),来置位vcpurequestbitmap中的block位。本实现方式中,当对已标记的vcpu线程执行预定类型的操作时,阻塞所述已标记的vcpu线程可以包括:当对vcpu线程执行预定类型的操作时,检查该vcpu线程对应的vcpurequestbitmap中,block位是否已置位;如果已置位,就对该vcpu线程进行block操作。其中,如果block位没有置位,则vcpu线程可以继续运行。其它实现方式中,可以采用其它方式来标记vcpu线程,比如记录vcpu线程的标识,当对vcpu线程执行预定类型的操作时,检查记录中是否存在该vcpu线程的标识,如果存在则block该vcpu线程。一种实现方式中,确定降频前还可以包括:当热迁移的统计数据满足降频的触发条件时,生成用于指示降频的信号,发送给源端vm中的全部或部分vcpu线程。本实现方式中,降频所针对的vcpu线程,可以是指作为所述用于指示降频的信号的发送对象的vcpu线程。本实现方式中,可以由虚拟机宿主机上运行的模拟器执行统计、判断生成和发送用于指示降频的信号的操作;底层虚拟模块捕获该用于指示降频的信号,并进行步骤s110、s120。本实现方式中,可以通过捕获得到发送给vcpu线程的用于指示降频的信号,来确定降频;确定降频后,可以对作为该用于指示降频的信号的发送对象(或者称为发送目标)的vcpu线程进行标记。本实现方式中,如果虚拟机系统中有多个vm并行在进行热迁移,则可以对不同的热迁移过程分别判断是否满足降频的触发条件;当一个热迁移过程中的统计数据满足降频的触发条件时,针对该热迁移过程的源端vm中的全部或部分vcpu线程,发送用于指示降频的信号。其它实现方式中,用于指示降频的信号也可以是发送给源端vm宿主机上的功能模块(比如kmod),或不指定接收端的指示信号,在该指示信号中携带有vcpu线程或vm的标识;功能模块得到该指示信号后,按照其中携带的标识对相应的vcpu线程,或相应的vm中的vcpu线程进行标记。本实现方式中,生成用于指示降频的信号,发送给源端vm中的全部或部分vcpu线程后还可以包括:周期性判断热迁移的统计数据是否仍满足降频的触发条件;当不再满足触发条件时,发送唤醒信号给源端vm中的全部或部分vcpu线程。本实现方式中,可以由虚拟机宿主机上运行的模拟器执行周期性判断及发送唤醒信号的操作;底层虚拟模块捕获该唤醒信号,如果该唤醒信号针对的vcpu线程处于block状态,则唤醒该vcpu线程;如果该唤醒信号针对的vcpu线程不处于block状态,则可以忽略该唤醒信号。本实现方式中,唤醒信号的发送对象,可以是之前作为用于指示降频的信号的发送对象的vcpu线程。本实现方式中,唤醒信号可以但不限于为sig_ipi信号。比如,当降频的触发条件是脏页率超过预设阈值时,这样当源端vm中的vcpu线程被block后,脏页率有可能下降到预设阈值之下,此时可以唤醒源端vm中被block的vcpu线程。其中,vcpu线程被唤醒后,可以进入guest开始运行;比如在唤醒后调用vcpu_enter_guest函数。其它实现方式中,也可以实时监测热迁移的统计数据是否满足降频的触发条件,一旦不满足就唤醒block的源端vm中的vcpu线程。下面通过一个说明上述实施例。在kvm物理机器上,安装了qemu模块和kvm模块。一台vm可以看作是物理服务器上的一个qemu进程。其中qemu模块主要负责vm设备的模拟,而kvm模块主要负责vm的一些底层虚拟的相关操作处理。如图3所示,qemu模块中挂载有kvm访问(guest)操作系统,kvmguest中包含应用(applications),文件系统及块设备(filesystemsandblockdevices),驱动(drivers),以及多个vcpu线程(thread),比如图3中的vcpu0~vcpun,其中n为正整数。kvm的核心模块(kvm.ko)运行在linux系统的内核(kernel)上,和vcpu线程进行交互。在热迁移过程中,qemu模块会不断去统计脏页的产生。本例中,对内存脏页的统计过程如下:发生热迁移时,kvm模块会把进行热迁移的源端vm的所有内存页置为“只读”,当guest操作已置为“只读”的内存页时,就会触发kvmeptmisconfigure。kvm模块会通过触发misconfigure的内存的地址,确定该内存所在的页(page),然后更新脏页位图(dirtybitmap),将所确定的页标记为脏页。qemu模块可以在热迁移过程中,在满足触发条件时周期性或通过dirtybitmap,来统计内存脏页。统计内存脏页时,qemu模块可以计算单位时间内产生的脏页数量,得到脏页率;其中,单位时间的长度可以等于统计周期的长度,即qemu模块相邻两次统计内存脏页的时刻之间相隔的时间长度。实际应用中,也不排除采用其它的方式进行内存脏页的统计,得到其它的统计结果,比如脏页在总页数中的比例等。本例中,qemu模块在vcpu线程创建的时候就为每个vcpu线程在kvm模块里面注册一个降频信号(signal),通过降频signal,可以为每个vcpu线程开启降频操作。本例中,该降频signal即上述用于指示降频的信号。假设进行热迁移的源端vm是vmx,将该vm对应的一个或多个vcpu线程称为vcpux线程,对源端vm中的vcpu进行降频的过程如图4所示,包括:当vmx的内存的脏页率达到或超过预设阈值后,qemu模块通过killvcpu线程给热迁移的vm对应的一个或多个vcpux线程发送降频信号;kvm模块(kmod)捕捉到降频信号之后就会为vcpux线程产生pagefaultblockrequest,在vcpux线程对应的vcpurequestbitmap中,将block位置位;在vcpux线程的运行(run)过程中,当阻塞位置位后,下一次的eptmisconfigureexit触发时,在执行(handle)exit的过程中,就会检查该vcpux是否有pagefaultblockrequest,即检查vcpux线程对应的vcpurequestbitmap中,阻塞位是否已置位;如果有pagefaultblockrequest(阻塞位已置位),就对vcpux线程进行block操作,vcpux线程进入block状态;如果没有pagefaultblockrequest(阻塞位未置位),则vcpux线程进入guest状态,开始运行。在qemu模块在给vcpux线程发送降频信号后,开启唤醒定时器(timer)来触发周期性的唤醒事件,每当timer到期(即每隔一定的时间长度)执行唤醒时间,包括:判断是否对vcpux线程进行唤醒;可以当内存脏页率下降到预设阈值以下时,确定唤醒vcpux线程,并发送针对vcpux线程的用于kickvcpu的sig_ipi信号。kvm模块(kmod)捕获到针对vcpux线程的唤醒信号(本例中即用于kickvcpu的sig_ipi信号)后,唤醒block状态的vcpux线程;vcpux线程进入guest,开始运行。本例中,热迁移过程中,拷贝内存部分的流程图如图5所示,包括步骤501~507:501、qemu启动迁移线程migration_thread,对vmx进行内存拷贝(copy);502、migration线程获取要拷贝的内存页;503、判断所产生的内存脏页是否小于最后一轮拷贝的内存大小,如果不小于,则进行步骤504;如果小于,则进行步骤505;504、将获取的内存页拷贝到目的端;返回步骤502;505、暂停(pause)住vmx的vcpu,主线程中开启压缩,进行最后一轮的内存拷贝(lastcopy);内存拷贝完毕之后,会把vmx的vcpu的状态和各种外设的状态传送到目的(dst)端,然后结束整个热迁移。由于内存脏页的产生,migration_thread需要不断的迭代传输这些内存脏页。当发现内存产生脏页速率(即:脏页率)大于内存页拷贝速率时就会触发vcpu的降频操作,即,在步骤502后还会进行图5中的步骤506。506、判断脏页率是否过大,比如达到或超过预设阈值;如果是则进行步骤507,如果不是则可以不进行处理,或可以唤醒block的vcpu线程;507、对vcpu进行降频,可以按照图4所示的过程对vcpu进行降频。实际应用时,不一定在获取要拷贝的内存页后再进行步骤506,页可以在启动迁移线程后周期性执行506。实施例二、一种热迁移中的降频装置,包括:存储器和处理器;所述存储器用于保存用于进行降频的程序;所述用于降频的程序在被所述处理器读取执行时,进行如下操作:在热迁移的过程中,确定降频后,对降频所针对的vcpu线程进行标记;当对已标记的vcpu线程执行预定类型的操作时,block已标记的vcpu线程。一种实现方式中,预定类型的操作可以包括写内存页导致的exit。本实现方式中,写内存页导致的exit可以但不限于是扩展页表ept误配置misconfigureexit。一种实现方式中,对降频所针对的vcpu线程进行标记可以包括:在降频所针对的vcpu线程对应的vcpu请求位图requestbitmap中,将block位置位。本实现方式中,当对已标记的vcpu线程执行预定类型的操作时,block所述已标记的vcpu线程可以包括:当对vcpu线程执行预定类型的操作时,检查该vcpu线程对应的vcpurequestbitmap中,block位是否已置位;如果已置位,则对该vcpu线程进行block操作。一种实现方式中,用于降频的程序在被处理器读取执行时,在确定降频前还可以进行如下操作:当热迁移的统计数据满足降频的触发条件时,生成用于指示降频的信号,发送给所述热迁移的源端vm中的全部或部分vcpu线程;所述降频所针对的vcpu线程,是指作为所述用于指示降频的信号的发送对象的vcpu线程。本实现方式中,用于降频的程序在被所述处理器读取执行时,在生成用于指示降频的信号,发送给源端vm中的全部或部分vcpu线程后还可以进行如下操作:周期性判断热迁移的统计数据是否仍满足降频的触发条件;当不再满足降频的触发条件时,发送唤醒信号给所述源端vm中的全部或部分vcpu线程。本实现方式中,接收唤醒信号的vcpu线程如果处于block状态,则唤醒该vcpu线程,如果不处于block状态,则可以忽略唤醒信号。本实现方式中,用于降频的程序可以分为两个部分,一部分用于获取热迁移的统计数据,并判断是否满足降频的触发条件,相应生成和发送用于指示降频的信号和唤醒信号;另一部分用于根据用于指示降频的信号来标记vcpu线程,并在已标记的vcpu线程执行预定类型操作时block该vcpu线程,在收到唤醒信号后唤醒处于block状态的相应的vcpu线程。本实现方式中,用于降频的程序在被所述处理器读取执行时,所进行的操作对应于实施例一的步骤s110~s120,其它实现细节可参考实施例一。实施例三、一种热迁移中的降频装置,如图3所示,包括:标记模块31,用于在热迁移的过程中,确定降频后,对降频所针对的vcpu线程进行标记;阻塞模块32,用于当对已标记的vcpu线程执行预定类型的操作时,block已标记的vcpu线程。一种实现方式中,预定类型的操作可以包括写内存页导致的exit。本实现方式中,写内存页导致的exit可以但不限于是扩展页表ept误配置misconfigureexit。一种实现方式中,标记模块对降频所针对的vcpu线程进行标记可以包括:标记模块在降频所针对的vcpu线程对应的vcpu请求位图requestbitmap中,将block位置位。本实现方式中,阻塞模块当对已标记的vcpu线程执行预定类型的操作时,block所述已标记的vcpu线程可以包括:阻塞模块当对vcpu线程执行预定类型的操作时,检查该vcpu线程对应的vcpurequestbitmap中,block位是否已置位;如果已置位,则对该vcpu线程进行block操作。一种实现方式中,降频装置还可以包括:控制模块,用于当热迁移的统计数据满足降频的触发条件时,生成用于指示降频的信号,发送给所述热迁移的源端vm中的全部或部分vcpu线程;所述降频所针对的vcpu线程,是指作为所述用于指示降频的信号的发送对象的vcpu线程。本实现方式中,标记模块确定降频可以包括以下任一种情况:捕获到用于指示降频的信号、接收到用于指示降频的信号、检测到用于指示降频的信号、监听到用于指示降频的信号、拦截到用于指示降频的信号、确定需要进行降频、确定需要指示源端虚拟机中的vcpu线程降频等。本实现方式中,控制模块还可以用于在生成用于指示降频的信号,发送给源端vm中的全部或部分vcpu线程后,周期性判断热迁移的统计数据是否仍满足降频的触发条件;当不再满足降频的触发条件时,发送唤醒信号给所述源端vm中的全部或部分vcpu线程。本实现方式中,阻塞模块还可以用于当捕获到对于一个vcpu线程的唤醒信号时,如果该vcpu线程处于block状态,则唤醒该vcpu线程;如果该vcpu线程不处于block状态,则可以忽略唤醒信号。本实现方式中,控制模块可以设置于图2所示的模拟器中,标记模块和阻塞模块可以设置于图2所示的底层虚拟模块中。本实现方式中,标记模块和阻塞模块所进行的操作分部对应于实施例一的步骤s110、s120,其它实现细节可参考实施例一。实施例四、一种存储介质,所述存储器介质中存储有用于进行降频的程序;所述用于降频的程序在被执行时进行如下操作:在热迁移的过程中,确定降频后,对降频所针对的vcpu线程进行标记;当对已标记的vcpu线程执行预定类型的操作时,阻塞已标记的vcpu线程。本实现方式中,用于降频的程序在被执行时,所进行的操作对应于实施例一的步骤s110~s120,其它实现细节可参考实施例一。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1