CN108241522B - 虚拟化环境中的睡眠状态切换方法、装置及电子设备 - Google Patents
虚拟化环境中的睡眠状态切换方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108241522B CN108241522B CN201611228779.8A CN201611228779A CN108241522B CN 108241522 B CN108241522 B CN 108241522B CN 201611228779 A CN201611228779 A CN 201611228779A CN 108241522 B CN108241522 B CN 108241522B
- Authority
- CN
- China
- Prior art keywords
- timer
- setting information
- virtual machine
- length
- sleep state
- 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.)
- Active
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/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/45575—Starting, stopping, suspending or resuming virtual machine instances
Abstract
本申请提供一种虚拟化环境中的睡眠状态切换方法、装置及电子设备;所述睡眠状态切换方法包括:当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;当所述虚拟机退出后,虚拟机监视器VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。本申请可以优化VCPU的idle状态切换过程,减少VM exit的开销。
Description
技术领域
本发明涉及虚拟化领域,尤其涉及一种虚拟化环境中的睡眠状态切换方法、装置及电子设备。
背景技术
由于虚拟化技术的引入,在操作系统与硬件之间增加了一层虚拟机监视器(Virtual Machine Monitor,VMM),它负责管理计算机系统的硬件资源。在虚拟化场景下,存在根模式和非根模式两种操作模式,VMM可以运行在根模式下,客户机操作系统运行在非根模式下。这两种操作模式可以相互转换,VMM可以调用指令切换到非根模式,硬件自动加载客户机操作系统的上下文,使客户机操作系统获得运行,这个过程称为虚拟机(VirtualMachine,VM)进入(entry)。客户机操作系统运行过程中遇到需要VMM处理的事件时,硬件自动挂起客户机操作系统,切换到根模式,恢复VMM的运行,这个过程称为VM退出(exit)。
对于Linux系统而言,虚拟中央处理器(Virtual Central Processing Unit,VCPU)从进入睡眠(idle)状态到退出idle状态的过程如下:2次APIC定时器操作,包括取消调度器定时器(scheduler timer)、设置定时器的值)、暂停(hlt)操作、2次APIC定时器操作(包括恢复调度器定时器、设置定时器的值)。上述过程中,hlt操作、定时器操作都会引发VMexit,因此有可能会出现5次VM exit。由于VM exit涉及到状态保存、上下文切换,所消耗的时间可能远大于VCPU真正进入idle状态的时间。
在某些场景下可能会出现大量的VM exit,比如当2个VCPU存在某种竞争状态时,可能出现以下情况:2个VCPU的状态相互依赖。如图1所示,VCPU0和VCPU1分别循环执行以下过程:需要另一个VCPU工作时发送核间中断(Inter-Processor Interrupts,IPI)信号唤醒另一个VCPU、进入到idle状态(包括2次APIC定时器操作、hlt操作)、被所述另一个VCPU所发送的IPI信号唤醒后从idle状态退出(包括2次APIC定时器操作)、运行程序。原生环境中,上述操作可以通过操作硬件完成;而在虚拟化环境中,上述操作增加了VM exit带来的开销。可见,若程序中涉及频繁的进入、退出idle状态,将导致存在大量VM exit且占比较大,因此虚拟化环境中该程序的性能会严重下降。
发明内容
本申请提供一种虚拟化环境中的睡眠状态切换方法、装置及电子设备,可以优化VCPU的idle状态切换过程,减少VM exit的开销。
本申请采用如下技术方案。
一种虚拟化环境中的睡眠状态切换方法,包括:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;
当所述虚拟机退出后,虚拟机监视器VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
可选地,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还包括:
所述虚拟机执行暂停hlt操作退出。
可选地,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
当所述虚拟机执行hlt指令退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
可选地,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还包括:
所述虚拟机强制退出。
可选地,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
当所述虚拟机强制退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
可选地,当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则进行所述将定时器的设置信息写入共享页面的操作。
可选地,所述预定时间长度初始化为0;所述方法还包括:通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
可选地,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
一种虚拟化环境中的睡眠状态切换方法,包括:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;
所述虚拟机退出。
可选地,所述当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机退出包括:
所述虚拟机执行暂停hlt操作退出。
可选地,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述虚拟机退出包括:
所述虚拟机强制退出。
可选地,当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则将定时器的设置信息写入共享页面。
可选地,所述预定时间长度初始化为0;所述方法还包括:通过以下方式调整预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
可选地,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
一种虚拟化环境中的睡眠状态切换方法,包括:
虚拟机监视器VMM当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
所述VMM根据所述定时器的设置信息进行设置。
可选地,所述定时器的设置信息由所述虚拟机当虚拟中央处理器VCPU将进入睡眠状态时写入共享页面,包含:停止调度器定时器的指示、第一定时长度;
所述VMM根据所述定时器的设置信息进行设置包括:
所述VMM根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
可选地,所述定时器的设置信息由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,包含:启动调度器定时器的指示、第二定时长度;
所述VMM根据所述定时器的设置信息进行设置包括:
所述VMM根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
一种虚拟化环境中的睡眠状态切换装置,包括:
操作模块,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;
监视模块,用于当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
可选地,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,控制所述虚拟机执行暂停hlt指令退出。
可选地,所述监视模块当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
所述监视模块当虚拟机的虚拟机执行hlt指令退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
可选地,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述操作模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,强制所述虚拟机退出。
可选地,所述监视模块当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
所述监视模块当所述虚拟机强制退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
可选地,所述的睡眠状态切换装置还包括:
轮询模块,用于在所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前,进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来,则指示所述操作模块将定时器的设置信息写入共享页面。
可选地,所述预定时间长度初始化为0;所述装置还包括:
调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
可选地,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
一种虚拟化环境中的睡眠状态切换装置,包括:
写入模块,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;
执行模块,用于将所述虚拟机退出。
可选地,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块执行暂停hlt操作使所述虚拟机退出。
可选地,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述写入模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块强制所述虚拟机退出。
可选地,所述的睡眠状态切换装置还包括:
轮询模块,用于当所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来,则指示所述写入模块将定时器的设置信息写入共享页面。
可选地,所述预定时间长度初始化为0;所述装置还包括:
调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
可选地,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
一种虚拟化环境中的睡眠状态切换装置,包括:
读取模块,用于当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
设置模块,用于根据所述定时器的设置信息进行设置。
可选地,所述定时器的设置信息由所述虚拟机当虚拟中央处理器VCPU将进入睡眠状态时写入共享页面,包含:停止调度器定时器的指示、第一定时长度;
所述设置模块根据所述定时器的设置信息进行设置包括:
所述设置模块根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
可选地,所述定时器的设置信息由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,包含:启动调度器定时器的指示、第二定时长度;
所述设置模块根据所述定时器的设置信息进行设置包括:
所述设置模块根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第一处理器和第一存储器;
所述第一存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第一处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;
当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第二处理器和第二存储器;
所述第二存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第二处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;退出所述虚拟机。
一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第三处理器和第三存储器;
所述第三存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第三处理器读取执行时,执行以下操作:
当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
根据所述定时器的设置信息进行设置。
本申请包括以下优点:
本申请至少一个实施例通过在需要进行睡眠状态切换时,在共享页面中保存对定时器的设置信息,在VM exit后根据共享页面中的设置信息对定时器进行操作,从而减少了VM exit的次数,优化了VCPU的idle状态切换过程,提升了虚拟化环境中idle敏感型程序的性能。
本申请实施例的一种实现方式中,可以通过在执行hlt指令之前进行轮询,来减少VM exit和VM entry的开销。
本申请实施例的一种实现方式中,可以根据所获取的处理过程信息调整轮询(poll)的时间长度,从而能够对轮询的时间长度的自适应调整。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
图1是两个VCPU相互依赖时的工作过程示意图;
图2是实施例一的虚拟化环境中的睡眠状态切换方法的示意图;
图3是实施例一的例子中的过程示意图;
图4是实施例二的虚拟化环境中的睡眠状态切换方法的示意图;
图5是实施例三的虚拟化环境中的睡眠状态切换方法的示意图;
图6是实施例四的虚拟化环境中的睡眠状态切换装置的示意图;
图7是实施例五的虚拟化环境中的睡眠状态切换装置的示意图;
图8是实施例六的虚拟化环境中的睡眠状态切换装置的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一种配置中,进行睡眠状态切换的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例一、一种虚拟化环境中的睡眠状态切换方法,如图2所示,包括步骤S110~S120:
S110、当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;
S120、VMM当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
本实施例中,VCPU进行idle状态切换包括:VCPU进入idle状态,和/或,VCPU退出idle状态。在现有技术中,当VCPU进入或退出idle状态时,可能存在两次定时器操作,每次定时器操作都有可能引起1次VM exit。其中,定时器是指计算机系统中用来在未来某个时间产生中断,以触发某些事件执行的设备,有多种硬件可以实现定时器功能;对于Linux系统,本文中所说的定时器,可以指本地高级可编程中断控制器local APIC定时器,本地指每个VCPU上拥有自己的APIC定时器。
本实施例中,当VCPU进行idle状态切换时,VCPU所在的虚拟机可以在共享页面中保存定时器的设置信息,在VM exit后由VMM根据共享页面中的设置信息进行操作;如果是VCPU进入idle状态的情况,当保存定时器的设置信息后,执行hlt指令时会引起VM exit,这样原本在VCPU进入idle状态的过程中可能需要的3次VM exit(两次定时器操作、执行hlt指令),将可以减少成1次;如果是VCPU退出idle状态的情况,则可以在写入定时器的设置信息之后强制进行VM exit,这样原本在VCPU退出idle状态的过程中可能需要的2次VM exit(两次定时器操作),将可以减少成1次。可见,本实施例的方案在VCPU进入、退出idle状态的过程中,最多可以减少3次由于定时器操作产生的VM exit。
可见,本实施例通过使用共享页面写入定时器的设置信息,可以减少定时器操作产生的VM exit,从而能够减少VM exit的开销,优化了VCPU的idle状态切换过程,提升了虚拟化环境中idle敏感型程序的性能。比如对于图1所示的两个VCPU相互依赖的场景,由于再每次VCPU进入、退出ilde状态的过程中都减少了VM exit,因此将不会导致程序的性能严重下降。
本实施例中,虚拟机可以分配一个页面与VMM共享,不同虚拟机的共享页面可以不同。虚拟机写入定时器的设置信息时,可以按照预定格式写入共享页面,当存在VM exit时,VMM检测共享页面并处理定时器的设置信息。
本实施例中,虚拟机可以在共享页面的预定位置写入定时器的设置信息,VMM在VMexit后检测共享页面中的预定位置即可得到定时器的设置信息。
本实施例中,定时器的设置信息可以包括:对定时器本身的操作比如启动或停止某个定时器;定时器的设置信息还可以包括:定时器要设置的值,也就是定时长度,或称为失效时间(expire time)。
一种实现方式中,所述当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还可以包括:
所述虚拟机执行暂停hlt操作退出。
本实现方式中,可以但不限于当VCPU的运行队列中无程序可以运行时,判断VCPU将进入睡眠状态。
本实现方式中,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置可以包括:
当虚拟机执行hlt指令退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
本实现方式中,停止(或者说取消)调度器定时器(scheduler timer)的方式可以但不限于包括停止嘀嗒定时器(tick timer)等。
本实现方式中,将定时器的值设置成第一定时长度可以表示,从定时器的设置时刻开始起算,到第一定时长度后的时刻,定时器的定时时间到达;比如第一定时长度是X毫秒,X为整数,则定时器设置后X毫秒时,该定时器的定时时间到达。
一种实现方式中,所述当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面可以包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:打开调度器定时器的指示、第二定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还可以包括:
所述虚拟机强制退出。
本实现方式中,可以但不限于当定时器的定时时间到达时,判断VCPU将退出idle状态。
本实现方式中,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置可以包括:
当虚拟机强制退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
本实现方式中,启动(或者说恢复)调度器定时器(scheduler timer)的方式可以但不限于包括启动嘀嗒定时器(tick timer)。
本实现方式中,将定时器的值设置成第二定时长度可以表示,从定时器的设置时刻开始起算,到第二定时长度后的时刻,定时器的定时时间到达。
一种实现方式中,所述方法还可以包括:
打开半虚拟化定时器(pvtimer)模式。
当VCPU进行睡眠状态切换时,先判断pvtimer模式是否打开,如果打开,则执行步骤S110~S120;如果没有打开,则按照现有技术进行处理。
本实现方式中,可以通过打开、关闭pvtimer模式来启用或停用本实施例的方法。
本实现方式中,半虚拟化(pv)是指需要对客户机操作系统做修改或者需要客户机操作系统配合完成的一些虚拟化特性。半虚拟化定时器模式是指不通过VM exit,而是通过共享页面设置定时器的模式。
本实现方式中,可以通过对某个参数的值进行设置来打开或关闭半虚拟化定时器模式。
其它实现方式中,也可以默认为采用本实施例的方法,而不再通过模式的打开、关闭来选择是否采用本实施例的方法。
一种实现方式中当VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内事件到来则VCPU不进入睡眠状态;如果所述预定时间长度内没有事件到来则进行所述将定时器的设置信息写入共享页面的操作。
本实现方式中,如果事件(比如IPI信号)在执行完hlt指令后马上到来,那么需要马上做VM entry。由于VM exit和VM entry存在一定的开销,必然导致事件的处理引入额外的延迟。如果虚拟机已经完成对hlt的模拟,那么还将引入额外的VCPU的调度开销。针对这种情况,本实施例通过在进入idle状态前先poll一段时间来解决这个问题。若poll过程中事件到来,则不进入idle状态,转而处理事件,如果事件未到来,则在共享页面中写入定时器的设置信息,并执行hlt指令;这种优化减少了VM exit和VM entry的开销,从而提升该场景下的性能。
本实现方式中,所述预定时间长度可以初始化为0;所述方法还可以包括:通过以下方式调整预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
本实现方式中,轮询的预定时间长度是可以自适应调整的,该方式可称为智能(smart)poll模式。
本实现方式中,预设阈值可以根据经验值或试验值设置;预设长度可以根据VCPU的型号、频率等参数,结合经验值或试验值进行设置。
本实现方式中,hlt操作前后的时间间隔是指:执行hlt指令的时刻(可以是发出hlt指令的时刻、或者执行hlt指令之前的某个预设时间点的时刻等),与执行hlt指令后的VM entry时刻之间的间隔。
本实现方式中,当预定时间长度为0时,相当于在执行hlt指令前不进行轮询,直接进入idle状态;当预定时间长度不为0时,则是先在预定时间长度内轮询。
其中,所述加大预定时间长度可以包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值可以但不限于为2.5。
其它实现方式中,也可以采用其它方式调整预设时间长度。
其它实现方式中,还可以采用预设的判断条件来决定是否进入smart poll模式,比如:如果n次hlt操作前后的时间间隔中,有m次小于预设阈值则进入smart poll模式,t次大于预设阈值则退出smart poll模式;或者连续s次小于则进入smart poll模式,连续r次大于则退出smart poll模式。其中,m、n、t、r、s均为正整数,n≥m、n≥t。
下面用一个例子说明本实施例的方案。
本例子中的流程如图3所示,包括步骤101~103:
101、当VCPU在运行(running)中将进入idle状态时,虚拟机判断pvtimer是否打开,若打开则将定时器信息写入到共享页面中;若未打开则按照原有的方式进行定时器操作;
102、执行hlt操作,发生VM exit;
103、当VCPU将退出idle状态时,判断pvtimer模式是否打开,若打开则将定时器信息写入到共享页面中,强制触发VM exit;若未打开则按照原有方式进行定时器操作。
本例子中可以采用smart poll模式进行优化,一般情况下,当VCPU空闲并进入idle状态、执行hlt指令的时间会比较久。如果VCPU没有进入idle状态或者进入不久就被事件打断,将会导致VM entry,即hlt操作前后的时间间隔较短,说明VCPU进入idle状态并不是必要的。
smart poll模式改变了idle处理流程,在进入idle状态之前,先轮询一段时间,查看等到的事件是否到来。若在预定时间长度内事件到来,则不再进入idle状态。若在预定时间长度内事件未到来,则在pvtimer模式打开的情况下,将定时器的设置信息写入到共享页面中,执行hlt指令。
预定时间长度PT可以按照下述方法确定。
根据预设阈值ET来判断hlt开销是长是短,假设上一次hlt操作前后的时间间隔为A;根据VCPU的型号和频率确定的预设长度是B;PT初始化时为0;PT计算方法如下:
若PT=0,A<ET;PT=B。
若PT不等于0,PT内事件到来,或者PT内事件未到来且(PT+A)<ET,则PT=PT×2;PT最大值不超过ET。
若PT不等于0,PT内事件未到来且(PT+A)>ET,则进一步比较PT/2.5和B,如果PT/2.5大于B,则PT=PT/2.5;如果PT/2.5小于B,则PT=0;这种情况表示,并未处于需要优化的场景,不应该继续poll较长时间,这样会浪费CPU资源,因此将PT减少,以便将CPU资源让给宿主机中其他程序使用。
实施例二、一种虚拟化环境中的睡眠状态切换方法,如图4所示,包括步骤S210~S220:
S210、当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息用于供VMM设置定时器;
S220、所述虚拟机退出。
一种实现方式中,当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面可以包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机退出可以包括:
所述虚拟机执行暂停hlt操作退出。
本实现方式中,当虚拟机退出后,VMM可以根据共享页面中的定时器的设置信息,停止调度器定时器,将调度器定时器的值设置成所述第一定时长度。
一种实现方式中,所述当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面可以包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:打开调度器定时器的指示、第二定时长度;
所述虚拟机退出可以包括:
所述虚拟机强制退出。
本实现方式中,当虚拟机退出后,VMM可以根据共享页面中的定时器的设置信息,打开调度器定时器,将调度器定时器的值设置成所述第二定时长度。
一种实现方式中,当VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内事件到来则VCPU不进入睡眠状态;如果所述预定时间长度内没有事件到来则进行所述将定时器的设置信息写入共享页面的操作。
本实现方式中,所述预定时间长度可以初始化为0;所述方法还可以包括:通过以下方式调整预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
本实现方式中,所述加大预定时间长度可以包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
本实施例中虚拟机的其它操作细节可参见实施例一。
本实施例的方法可以对应于实施例一中虚拟机部分的操作,其它实施细节可参见实施例一。
实施例三、一种虚拟化环境中的睡眠状态切换方法,如图5所示,包括步骤S310~S320:
S310、VMM当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
S320、所述VMM根据所述定时器的设置信息进行设置。
一种实现方式中,所述定时器的设置信息可以由所述虚拟机当VCPU将进入睡眠状态时写入共享页面,可以包含:停止调度器定时器的指示、第一定时长度;
所述VMM根据所述定时器的设置信息进行设置可以包括:
所述根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
一种实现方式中,所述定时器的设置信息可以由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,可以包含:打开调度器定时器的指示、第二定时长度;
所述VMM根据所述定时器的设置信息进行设置可以包括:
所述VMM根据所述定时器的设置信息打开调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
本实施例中VMM的其它操作细节可参见实施例一。
本实施例的方法可以对应于实施例一中VMM部分的操作,其它实施细节可参见实施例一。
实施例四、一种虚拟化环境中的睡眠状态切换装置,如图6所示,包括:
操作模块41,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;
监视模块42,用于当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
本实施例中,所述操作模块41可以但不限于设置于虚拟机中,所述监视模块42可以但不限于设置于VMM中。
本实施例中,所述操作模块41是上述装置中负责写入定时器的设置信息的部分,可以是软件、硬件或两者的结合。
本实施例中,所述监视模块42是上述装置中负责读取定时器的设置信息并进行相应设置的部分,可以是软件、硬件或两者的结合。
一种实现方式中,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面可以包括:
所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,控制所述虚拟机执行暂停hlt指令退出。
本实现方式中,所述监视模块当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置可以包括:
所述监视模块当虚拟机的虚拟机执行hlt指令退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
一种实现方式中,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面可以包括:
所述操作模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,强制所述虚拟机退出。
本实现方式中,所述监视模块当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置可以包括:
所述监视模块当所述虚拟机强制退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
一种实现方式中,所述的睡眠状态切换装置还可以包括:
轮询模块,用于在所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前,进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则指示所述操作模块将定时器的设置信息写入共享页面。
本实现方式中,所述预定时间长度初始化可以为0;所述装置还可以包括:调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
其中,所述加大预定时间长度可以包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
本实施例的睡眠状态切换装置的各模块的操作分别对应于实施例一中的步骤S110~S120,各模块操作的其它实现细节可参见实施例一。
实施例五、一种虚拟化环境中的睡眠状态切换装置,如图7所示,包括:
写入模块51,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;
执行模块52,用于将所述虚拟机退出。
本实施例中,所述写入模块51是上述装置中负责写入定时器的设置信息的部分,可以是软件、硬件或两者的结合。
本实施例中,所述执行模块52是上述装置中负责退出虚拟机的部分,可以是软件、硬件或两者的结合。
一种实现方式中,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面可以包括:
所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块执行暂停hlt操作使所述虚拟机退出。
一种实现方式中,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面可以包括:
所述写入模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块强制所述虚拟机退出。
一种实现方式中,所述的睡眠状态切换装置还可以包括:
轮询模块,用于当所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则指示所述写入模块将定时器的设置信息写入共享页面。
本实现方式中,所述预定时间长度初始化可以为0;所述装置还可以包括:调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0。
其中,所述加大预定时间长度可以包括:
将预定时间长度乘以2作为新的预定时间长度;
所述预定值为2.5。
本实施例的睡眠状态切换装置的各模块的操作分别对应于实施例二中的步骤S210~S220,各模块操作的其它实现细节可参见实施例二。
实施例六、一种虚拟化环境中的睡眠状态切换装置,如图8所示,包括:
读取模块61,用于当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
设置模块62,用于根据所述定时器的设置信息进行设置。
本实施例中,所述读取模块61是上述装置中负责读取定时器的设置信息的部分,可以是软件、硬件或两者的结合。
本实施例中,所述设置模块62是上述装置中负责根据定时器的设置信息进行相应设置的部分,可以是软件、硬件或两者的结合。
一种实现方式中,所述定时器的设置信息可以由所述虚拟机当虚拟中央处理器VCPU将进入睡眠状态时写入共享页面,可以包含:停止调度器定时器的指示、第一定时长度;
所述设置模块根据所述定时器的设置信息进行设置可以包括:
所述设置模块根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
一种实现方式中,所述定时器的设置信息可以由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,可以包含:启动调度器定时器的指示、第二定时长度;
所述设置模块根据所述定时器的设置信息进行设置可以包括:
所述设置模块根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
本实施例的睡眠状态切换装置的各模块的操作分别对应于实施例三中的步骤S310~S320,各模块操作的其它实现细节可参见实施例三。
实施例七、一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第一处理器和第一存储器;
所述第一存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第一处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;
当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
本实施例中,用于进行睡眠状态切换的程序在被第一处理器读取执行时,所执行的操作对应于实施例一中的步骤S110~S120;该程序所执行的操作的其它细节可参见实施例一。
本实施例中,用于进行睡眠状态切换的程序可以包含两部分,一部分可以在虚拟机中运行,所执行的操作对应于实施例一中的步骤S110;另一部分可以在VMM中运行,所执行的操作对应于实施例一中的步骤S120。
实施例八、一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第二处理器和第二存储器;
所述第二存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第二处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;退出所述虚拟机。
本实施例中,用于进行睡眠状态切换的程序在被第二处理器读取执行时,所执行的操作对应于实施例二中的步骤S210~S220;该程序所执行的操作的其它细节可参见实施例二。
实施例九、一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第三处理器和第三存储器;
所述第三存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第三处理器读取执行时,执行以下操作:
当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;
根据所述定时器的设置信息进行设置。
本实施例中,用于进行睡眠状态切换的程序在被第三处理器读取执行时,所执行的操作对应于实施例三中的步骤S310~S320;该程序所执行的操作的其它细节可参见实施例三。
在既使用实施例八的电子设备,又使用实施例九的电子设备的情况下,这两个电子设备有可能复用硬件,比如第二存储器和第三存储器可以复用同一个存储器,第二处理器和第三处理器也可以复用同一个处理器。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (37)
1.一种虚拟化环境中的睡眠状态切换方法,包括:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
当所述虚拟机退出后,虚拟机监视器VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
2.如权利要求1所述的睡眠状态切换方法,其特征在于,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还包括:
所述虚拟机执行暂停hlt操作退出。
3.如权利要求2所述的睡眠状态切换方法,其特征在于,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
当所述虚拟机执行hlt指令退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
4.如权利要求1所述的睡眠状态切换方法,其特征在于,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述虚拟机将定时器的设置信息写入共享页面后还包括:
所述虚拟机强制退出。
5.如权利要求4所述的睡眠状态切换方法,其特征在于,所述VMM当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
当所述虚拟机强制退出后,VMM从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
6.如权利要求2所述的睡眠状态切换方法,其特征在于,当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则进行所述将定时器的设置信息写入共享页面的操作。
7.如权利要求6所述的睡眠状态切换方法,其特征在于,所述预定时间长度初始化为0;所述方法还包括:通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0;
其中,所述预设长度根据虚拟机的VCPU的型号和频率确定,所述预定值为2.5。
8.如权利要求7所述的睡眠状态切换方法,其特征在于,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度。
9.一种虚拟化环境中的睡眠状态切换方法,包括:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
所述虚拟机退出。
10.如权利要求9所述的睡眠状态切换方法,其特征在于,所述当虚拟机的VCPU进行睡眠状态切换时,虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述虚拟机退出包括:
所述虚拟机执行暂停hlt操作退出。
11.如权利要求9所述的睡眠状态切换方法,其特征在于,所述当虚拟机的VCPU进行睡眠状态切换时,所述虚拟机将定时器的设置信息写入共享页面包括:
当虚拟机的VCPU将退出睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述虚拟机退出包括:
所述虚拟机强制退出。
12.如权利要求10所述的睡眠状态切换方法,其特征在于,当虚拟机的VCPU将进入睡眠状态时,所述虚拟机将定时器的设置信息写入共享页面前还包括:
进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来则将定时器的设置信息写入共享页面。
13.如权利要求12所述的睡眠状态切换方法,其特征在于,所述预定时间长度初始化为0;所述方法还包括:通过以下方式调整预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0;
其中,所述预设长度根据虚拟机的VCPU的型号和频率确定,所述预定值为2.5。
14.如权利要求13所述的睡眠状态切换方法,其特征在于,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度。
15.一种虚拟化环境中的睡眠状态切换方法,包括:
虚拟机监视器VMM当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
所述VMM根据所述定时器的设置信息进行设置。
16.如权利要求15所述的睡眠状态切换方法,其特征在于:
所述定时器的设置信息由所述虚拟机当虚拟中央处理器VCPU将进入睡眠状态时写入共享页面,包含:停止调度器定时器的指示、第一定时长度;
所述VMM根据所述定时器的设置信息进行设置包括:
所述VMM根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
17.如权利要求15所述的睡眠状态切换方法,其特征在于:
所述定时器的设置信息由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,包含:启动调度器定时器的指示、第二定时长度;
所述VMM根据所述定时器的设置信息进行设置包括:
所述VMM根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
18.一种虚拟化环境中的睡眠状态切换装置,其特征在于,包括:
操作模块,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
监视模块,用于当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
19.如权利要求18所述的睡眠状态切换装置,其特征在于,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,控制所述虚拟机执行暂停hlt指令退出。
20.如权利要求19所述的睡眠状态切换装置,其特征在于,所述监视模块当虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
所述监视模块当虚拟机的虚拟机执行hlt指令退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
21.如权利要求18所述的睡眠状态切换装置,其特征在于,所述操作模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述操作模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述操作模块还用于在将定时器的设置信息写入共享页面后,强制所述虚拟机退出。
22.如权利要求21所述的睡眠状态切换装置,其特征在于,所述监视模块当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置包括:
所述监视模块当所述虚拟机强制退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
23.如权利要求19所述的睡眠状态切换装置,其特征在于,还包括:
轮询模块,用于在所述操作模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前,进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来,则指示所述操作模块将定时器的设置信息写入共享页面。
24.如权利要求23所述的睡眠状态切换装置,其特征在于,所述预定时间长度初始化为0;所述装置还包括:
调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0;
其中,所述预设长度根据虚拟机的VCPU的型号和频率确定,所述预定值为2.5。
25.如权利要求24所述的睡眠状态切换装置,其特征在于,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度。
26.一种虚拟化环境中的睡眠状态切换装置,其特征在于,包括:
写入模块,用于当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
执行模块,用于将所述虚拟机退出。
27.如权利要求26所述的睡眠状态切换装置,其特征在于,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块执行暂停hlt操作使所述虚拟机退出。
28.如权利要求26所述的睡眠状态切换装置,其特征在于,所述写入模块当虚拟机的VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面包括:
所述写入模块当虚拟机的VCPU将退出睡眠状态时,将定时器的设置信息写入共享页面;所述定时器的设置信息包含:启动调度器定时器的指示、第二定时长度;
所述执行模块将虚拟机退出包括:
所述执行模块强制所述虚拟机退出。
29.如权利要求27所述的睡眠状态切换装置,其特征在于,还包括:
轮询模块,用于当所述写入模块当虚拟机的VCPU将进入睡眠状态时,将定时器的设置信息写入共享页面前进行预定时间长度的轮询,如果所述预定时间长度内没有事件到来,则指示所述写入模块将定时器的设置信息写入共享页面。
30.如权利要求29所述的睡眠状态切换装置,其特征在于,所述预定时间长度初始化为0;所述装置还包括:
调整模块,用于通过以下方式调整所述预定时间长度:
如果预定时间长度为0,且上一次hlt操作前后的时间间隔小于预设阈值,则将预定时间长度设定为预设长度;
当预定时间长度不为0,如果上一次轮询时,预定时间长度内事件到来,或事件未到来且预定时间长度与上一次hlt操作前后的时间间隔之和小于所述预设阈值,则加大所述预定时间长度;加大后的预定时间长度如果大于所述预设阈值,则将预定时间长度更新成等于所述预设阈值;
当预定时间长度不为0,如果上一次轮询时预定时间长度内事件未到来,且预定时间长度与上一次hlt操作前后的时间间隔之和大于所述预设阈值,则将预定时间长度除以预定值后与所述预设长度进行比较;如果大于所述预设长度则将预定时间长度除以预定值作为新的预定时间长度,如果小于所述预设长度则将预定时间长度设置为0;
其中,所述预设长度根据虚拟机的VCPU的型号和频率确定,所述预定值为2.5。
31.如权利要求30所述的睡眠状态切换装置,其特征在于,所述加大预定时间长度包括:
将预定时间长度乘以2作为新的预定时间长度。
32.一种虚拟化环境中的睡眠状态切换装置,其特征在于,包括:
读取模块,用于当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
设置模块,用于根据所述定时器的设置信息进行设置。
33.如权利要求32所述的睡眠状态切换装置,其特征在于:
所述定时器的设置信息由所述虚拟机当虚拟中央处理器VCPU将进入睡眠状态时写入共享页面,包含:停止调度器定时器的指示、第一定时长度;
所述设置模块根据所述定时器的设置信息进行设置包括:
所述设置模块根据所述定时器的设置信息停止调度器定时器,并将调度器定时器的值设置成所述第一定时长度。
34.如权利要求32所述的睡眠状态切换装置,其特征在于:
所述定时器的设置信息由所述虚拟机当VCPU将退出睡眠状态时写入共享页面,包含:启动调度器定时器的指示、第二定时长度;
所述设置模块根据所述定时器的设置信息进行设置包括:
所述设置模块根据所述定时器的设置信息启动调度器定时器,并将调度器定时器的值设置成所述第二定时长度。
35.一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第一处理器和第一存储器;
其特征在于:
所述第一存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第一处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
当所述虚拟机退出后,从所述共享页面中读取所述定时器的设置信息,根据所述定时器的设置信息进行设置。
36.一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第二处理器和第二存储器;
其特征在于:
所述第二存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第二处理器读取执行时,执行以下操作:
当虚拟机的虚拟中央处理器VCPU进行睡眠状态切换时,将定时器的设置信息写入共享页面;所述定时器的设置信息用于供虚拟机监视器设置定时器;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;退出所述虚拟机。
37.一种虚拟化环境中进行睡眠状态切换的电子设备,包括:
第三处理器和第三存储器;
其特征在于:
所述第三存储器用于保存进行睡眠状态切换的程序;所述进行睡眠状态切换的程序当被所述第三处理器读取执行时,执行以下操作:
当虚拟机退出后,从共享页面中读取所述虚拟机当虚拟中央处理器VCPU进行睡眠状态切换时写入的定时器的设置信息;其中,所述定时器的设置信息包含:停止调度器定时器的指示、第一定时长度,或者启动调度器定时器的指示、第二定时长度;
根据所述定时器的设置信息进行设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611228779.8A CN108241522B (zh) | 2016-12-27 | 2016-12-27 | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611228779.8A CN108241522B (zh) | 2016-12-27 | 2016-12-27 | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108241522A CN108241522A (zh) | 2018-07-03 |
CN108241522B true CN108241522B (zh) | 2022-05-17 |
Family
ID=62701712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611228779.8A Active CN108241522B (zh) | 2016-12-27 | 2016-12-27 | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108241522B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800073B (zh) * | 2019-01-28 | 2021-06-18 | Oppo广东移动通信有限公司 | 实时进程的调度方法、装置、终端及存储介质 |
CN112559117A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 定时器处理方法、装置、电子设备及计算机存储介质 |
CN112817701B (zh) * | 2021-02-25 | 2024-03-12 | 北京火山引擎科技有限公司 | 定时器处理方法、装置、电子设备和计算机可读介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008903A (zh) * | 2006-01-23 | 2007-08-01 | 联想(北京)有限公司 | 一种虚拟机系统及其设备访问方法 |
CN101044458A (zh) * | 2004-10-29 | 2007-09-26 | 英特尔公司 | 虚拟机环境中的定时器偏移机制 |
CN101788926A (zh) * | 2009-12-28 | 2010-07-28 | 中兴通讯股份有限公司 | J2me应用前台切换的资源调配方法及装置 |
CN103049332A (zh) * | 2012-12-06 | 2013-04-17 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
CN103793274A (zh) * | 2014-02-19 | 2014-05-14 | 上海交通大学 | 一种credit调度器中增量时间片调整架构及方法 |
CN105005506A (zh) * | 2015-07-17 | 2015-10-28 | 中国人民解放军国防科学技术大学 | 一种虚拟化云中容错资源供给方法 |
CN105022659A (zh) * | 2014-04-30 | 2015-11-04 | 中国电信股份有限公司 | 虚拟机状态控制方法与系统 |
WO2015184913A1 (zh) * | 2014-06-04 | 2015-12-10 | 华为技术有限公司 | 中断信息的处理方法、虚拟机监控器及中断控制器 |
US9411630B1 (en) * | 2015-03-10 | 2016-08-09 | International Business Machines Corporation | Reducing virtual machine pre-emption in virtualized environment |
WO2016131247A1 (zh) * | 2015-07-30 | 2016-08-25 | 中兴通讯股份有限公司 | 一种用于虚拟机的高性能定时器实现方法、虚拟机 |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8006043B2 (en) * | 2008-10-06 | 2011-08-23 | Vmware, Inc. | System and method for maintaining memory page sharing in a virtual environment |
US8392917B2 (en) * | 2009-03-30 | 2013-03-05 | Microsoft Corporation | Timer access from user mode through a shared memory page |
US20110153909A1 (en) * | 2009-12-22 | 2011-06-23 | Yao Zu Dong | Efficient Nested Virtualization |
US9280379B2 (en) * | 2012-02-28 | 2016-03-08 | Red Hat Israel, Ltd. | Hibernation via paravirtualization |
US9639393B2 (en) * | 2014-05-20 | 2017-05-02 | Red Hat Isreal, Ltd. | Virtual processor state management based on time values |
CN104899098B (zh) * | 2015-05-08 | 2019-02-01 | 中国科学院计算技术研究所 | 一种基于共享I/O虚拟化环境的vCPU调度方法 |
-
2016
- 2016-12-27 CN CN201611228779.8A patent/CN108241522B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101044458A (zh) * | 2004-10-29 | 2007-09-26 | 英特尔公司 | 虚拟机环境中的定时器偏移机制 |
CN101008903A (zh) * | 2006-01-23 | 2007-08-01 | 联想(北京)有限公司 | 一种虚拟机系统及其设备访问方法 |
CN101788926A (zh) * | 2009-12-28 | 2010-07-28 | 中兴通讯股份有限公司 | J2me应用前台切换的资源调配方法及装置 |
CN103049332A (zh) * | 2012-12-06 | 2013-04-17 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
CN103793274A (zh) * | 2014-02-19 | 2014-05-14 | 上海交通大学 | 一种credit调度器中增量时间片调整架构及方法 |
CN105022659A (zh) * | 2014-04-30 | 2015-11-04 | 中国电信股份有限公司 | 虚拟机状态控制方法与系统 |
WO2015184913A1 (zh) * | 2014-06-04 | 2015-12-10 | 华为技术有限公司 | 中断信息的处理方法、虚拟机监控器及中断控制器 |
US9411630B1 (en) * | 2015-03-10 | 2016-08-09 | International Business Machines Corporation | Reducing virtual machine pre-emption in virtualized environment |
CN105005506A (zh) * | 2015-07-17 | 2015-10-28 | 中国人民解放军国防科学技术大学 | 一种虚拟化云中容错资源供给方法 |
WO2016131247A1 (zh) * | 2015-07-30 | 2016-08-25 | 中兴通讯股份有限公司 | 一种用于虚拟机的高性能定时器实现方法、虚拟机 |
CN106095578A (zh) * | 2016-06-14 | 2016-11-09 | 上海交通大学 | 基于硬件辅助技术和虚拟cpu运行状态的直接中断递交方法 |
Non-Patent Citations (3)
Title |
---|
Virtual-CPU Scheduling in the Quest Operating System;Matthew Danish 等;《2011 17th IEEE Real-Time and Embedded Technology and Applications Symposium》;20110414;169-179 * |
一种灵活高效的虚拟CPU调度算法;刘珂男 等;《软件学报》;20160504;第28卷(第2期);398-410 * |
基于Intel VT硬件虚拟机内核研究与实现;高小明;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110515(第5期);I137-16 * |
Also Published As
Publication number | Publication date |
---|---|
CN108241522A (zh) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101864980B1 (ko) | 가상 머신 전력 관리 | |
US10521265B2 (en) | Coalescing periodic timer expiration in guest operating systems in a virtualized environment | |
US7904903B2 (en) | Selective register save and restore upon context switch using trap | |
CN108958157B (zh) | 控制程序控制调度方法、装置、计算机设备以及存储介质 | |
KR101825561B1 (ko) | 다중 운영 체제 디바이스에 대한 동적 재할당 | |
US9715403B2 (en) | Optimized extended context management for virtual machines | |
CN108241522B (zh) | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 | |
CN111324432A (zh) | 处理器调度方法、装置、服务器及存储介质 | |
US9639393B2 (en) | Virtual processor state management based on time values | |
US9606825B2 (en) | Memory monitor emulation for virtual machines | |
CN109918145B (zh) | 一种应用程序冷启动的加速方法、装置、电子设备 | |
US10310890B2 (en) | Control method for virtual machine system, and virtual machine system | |
US10891171B2 (en) | Method, apparatus and device for transitioning between data and control core and migrating clock task from data core to control core | |
EP3025230A1 (en) | Operating system switching method and apparatus | |
CN105474174B (zh) | 控制时间密集的指令 | |
US20170185435A1 (en) | Fast switching between virtual machines without interrupt virtualization for high-performance, secure trusted-execution enviornment | |
US11249777B2 (en) | Virtual machine context management | |
US11169857B2 (en) | System and method for reserving a portion of CPU time for host execution | |
CN108196934B (zh) | 一种定时器的定时设置方法、装置和虚拟化设备 | |
CN110647401B (zh) | 调频方法、调频装置、存储介质与电子设备 | |
US10936357B2 (en) | Semiconductor device | |
CN112416536A (zh) | 提取处理器执行上下文的方法及处理器 | |
Joe et al. | Effects of dynamic isolation for full virtualized RTOS and GPOS guests | |
US20240086220A1 (en) | Delaying interrupts for virtual machines | |
CN111158863B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230613 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |