虚拟机的休眠与唤醒方法及系统与流程

文档序号:11199046阅读:3364来源:国知局
虚拟机的休眠与唤醒方法及系统与流程

本发明涉及安卓系统虚拟机技术领域,具体而言,涉及一种虚拟机的休眠与唤醒方法及系统。



背景技术:

随着4g网络和智能手机的普及,移动办公应运而生,实现了企业所有员工的实时办公、同步办公、协同办公、交互办公,突破了空间和内网的限制,提升了办公效率,同时也带来了潜在的信息安全隐患,增加了敏感数据的泄露风险,严重影响移动办公的深度应用。为此,类似pc(personalcomputer,个人计算机)云桌面系统的android云桌面系统开始逐步应用。在android云桌面系统中,云端服务器上运行大量的虚拟机,在虚拟机中安装android操作系统。用户在手机中通过安装瘦客户端软件,远程登录云端的android虚拟机,远程操控云端android虚拟机中的应用软件,以此实现在用户手机上远程操作云端android系统中的各种应用。

现有技术的实现方法是在服务器上运行的若干个android虚拟机实例,都在服务器的物理内存中,现有技术的android虚拟机的休眠系统结构如图1所示,由于服务器物理配置是确定的,能容纳的android虚拟机实例个数有限,现有技术的最大瓶颈在于服务器物理内存和cpu(centralprocessingunit,中央处理器)的限制。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明的一个目的在于提出了一种虚拟机的休眠与唤醒方法。

本发明的另一个目的在于提出了一种虚拟机的休眠与唤醒系统。

有鉴于此,根据本发明的一个目的,提出了一种虚拟机的休眠与唤醒方法,包括:检测虚拟机的工作状态;当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,并对虚拟机进行休眠计时;根据唤醒请求或休眠时间,唤醒虚拟机。

本发明提供的虚拟机的休眠与唤醒方法,检测客户端与虚拟机长时间无网络连接或者客户端与虚拟机的网络连接长时间没有数据传输时,判断虚拟机的工作状态为空闲状态,此时开始记录虚拟机的空闲时间,并在空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,同时释放虚拟机的cpu资源,并开始记录虚拟机的休眠时间,当接收到唤醒请求或休眠时间达到一定阈值时,唤醒虚拟机,本发明在不影响用户体验的前提下,降低了服务器cpu和内存的占用,满足了使用有限的资源支持更多用户接入的需求,有效降低了用户投入成本。

根据本发明的上述虚拟机的休眠与唤醒方法,还可以具有以下技术特征:

在上述技术方案中,优选地,使虚拟机进入休眠状态的同时,还包括:切换虚拟机的内存至硬盘交换分区。

在该技术方案中,在使虚拟机进入休眠状态的同时,使虚拟机所使用的物理内存换出到硬盘交换分区上以释放物理内存资源,实现物理内存的合理及有效利用。

在上述技术方案中,优选地,根据唤醒请求或休眠时间,唤醒虚拟机,具体包括:接收唤醒请求;根据唤醒请求,唤醒虚拟机。

在该技术方案中,当用户使用客户端连接服务器时,接收到用户使用客户端连接服务器的请求时,虚拟机管理系统负责快速唤醒该安卓虚拟机,并且在安卓虚拟机唤醒运行后如无客户端连接或长时间无数据传输时,安卓虚拟机继续进入休眠流程,能够极大地增加服务器资源的使用效率。

在上述技术方案中,优选地,根据唤醒请求或休眠时间,唤醒虚拟机,具体包括:当休眠时间大于第二预设时间阈值时,唤醒虚拟机。

在该技术方案中,对于休眠的虚拟机,有定期唤醒机制,当虚拟机的休眠时间大于预设时间阈值时,唤醒虚拟机,确保用户在客户端能及时获取虚拟机内应用的通知信息,也满足了部分应用需要不断更新状态的需求,给用户带来良好的使用体验。

在上述技术方案中,优选地,唤醒虚拟机的同时,还包括:切换虚拟机的内存至物理内存。

在该技术方案中,安卓虚拟机正常运行后系统会自动将使用的内存数据从交换分区交换到物理内存中,实现内存资源的合理及有效利用。

在上述技术方案中,优选地,检测虚拟机的工作状态之前,还包括:通过控制组将程序按虚拟机进行分组;移植linux容器,通过linux容器运行多个虚拟机。

在该技术方案中,通过控制组将程序按虚拟机进行分组,并移植linux容器,通过linux容器运行多程序,能够在服务器创建更多的安卓虚拟机,支持更多的用户登录云端安卓虚拟机系统,在服务器配置一定的情况下,支持的用户数大大增加。

根据本发明的另一个目的,提出了一种虚拟机的休眠与唤醒系统,包括:检测单元,用于检测虚拟机的工作状态;计时单元,用于当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;控制单元,用于当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态;以及根据唤醒请求或休眠时间,唤醒虚拟机;计时单元,还用于对虚拟机进行休眠计时。

本发明提供的虚拟机的休眠与唤醒系统,检测单元检测客户端与虚拟机长时间无网络连接或者客户端与虚拟机的网络连接长时间没有数据传输时,判断虚拟机的工作状态为空闲状态,此时计时单元开始记录虚拟机的空闲时间,并在空闲时间大于第一预设时间阈值时,控制单元使虚拟机进入休眠状态,同时释放虚拟机的cpu资源,由计时单元开始记录虚拟机的休眠时间,控制单元在接收到唤醒请求或休眠时间达到一定阈值时,唤醒虚拟机,本发明在不影响用户体验的前提下,降低了服务器cpu和内存的占用,满足了使用有限的资源支持更多用户接入的需求,有效降低了用户投入成本。

根据本发明的上述虚拟机的休眠与唤醒系统,还可以具有以下技术特征:

在上述技术方案中,优选地,控制单元,还用于:切换虚拟机的内存至硬盘交换分区。

在该技术方案中,控制单元在使虚拟机进入休眠状态的同时,使虚拟机所使用的物理内存换出到硬盘交换分区上以释放物理内存资源,实现物理内存的合理及有效利用。

在上述技术方案中,优选地,控制单元,还用于:接收唤醒请求;根据唤醒请求,唤醒虚拟机。

在该技术方案中,当用户使用客户端连接服务器时,控制单元接收到用户使用客户端连接服务器的请求时,快速唤醒该安卓虚拟机,并且在安卓虚拟机唤醒运行后如无客户端连接或长时间无数据传输时,安卓虚拟机继续进入休眠流程,能够极大地增加服务器资源的使用效率。

在上述技术方案中,优选地,控制单元,还用于:当休眠时间大于第二预设时间阈值时,唤醒虚拟机。

在该技术方案中,对于休眠的虚拟机,有定期唤醒机制,当虚拟机的休眠时间大于预设时间阈值时,控制单元唤醒虚拟机,确保用户在客户端能及时获取虚拟机内应用的通知信息,也满足了部分应用需要不断更新状态的需求,给用户带来良好的使用体验。

在上述技术方案中,优选地,控制单元,还用于:切换虚拟机的内存至物理内存。

在该技术方案中,安卓虚拟机正常运行后控制单元会自动将使用的内存数据从交换分区交换到物理内存中,实现内存资源的合理及有效利用。

在上述技术方案中,优选地,还包括:预处理单元,用于通过控制组将程序按虚拟机进行分组;以及移植linux容器,通过linux容器运行多个虚拟机。

在该技术方案中,由预处理单元通过控制组将程序按虚拟机进行分组,并移植linux容器,通过linux容器运行多个安卓虚拟机,能够在服务器创建更多的安卓虚拟机,支持更多的用户登录云端安卓虚拟机系统,在服务器配置一定的情况下,支持的用户数大大增加。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了现有技术中android虚拟机的休眠系统结构示意框图;

图2示出了本发明的一个实施例的虚拟机的休眠与唤醒方法的流程示意图;

图3示出了本发明的一个实施例的虚拟机的休眠与唤醒系统的示意框图;

图4示出了本发明的一个具体实施例的android虚拟机的休眠系统结构示意框图;

图5示出了本发明的一个具体实施例的系统分组的逻辑结构示意框图;

图6示出了本发明的一个具体实施例的android虚拟机的休眠流程示意图;

图7示出了本发明的一个具体实施例的android虚拟机的请求唤醒流程示意图;

图8示出了本发明的一个具体实施例的android虚拟机的定期唤醒流程示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。

本发明第一方面的实施例,提出一种虚拟机的休眠与唤醒方法,图2示出了本发明的一个实施例的虚拟机的休眠与唤醒方法的流程示意图。其中,该方法包括:

步骤200,检测虚拟机的工作状态;

步骤202,当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;

步骤204,判断空闲时间是否大于第一预设时间阈值;

步骤206,当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,切换虚拟机的内存至硬盘交换分区,并对虚拟机进行休眠计时;

步骤208,根据唤醒请求或休眠时间,唤醒虚拟机。

本发明提供的虚拟机的休眠与唤醒方法,检测客户端与虚拟机长时间无网络连接或者客户端与虚拟机的网络连接长时间没有数据传输时,判断虚拟机的工作状态为空闲状态,此时开始记录虚拟机的空闲时间,并在空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,同时释放虚拟机的cpu资源,并开始记录虚拟机的休眠时间,当接收到唤醒请求或休眠时间达到一定阈值时,唤醒虚拟机,本发明在不影响用户体验的前提下,降低了服务器cpu和内存的占用,满足了使用有限的资源支持更多用户接入的需求,有效降低了用户投入成本。在使虚拟机进入休眠状态的同时,使虚拟机所使用的物理内存换出到硬盘交换分区上以释放物理内存资源,实现物理内存的合理及有效利用。

在本发明的一个实施例中,如图2所示,优选地,该方法包括:

步骤200,检测虚拟机的工作状态;

步骤202,当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;

步骤204,判断空闲时间是否大于第一预设时间阈值;

步骤206,当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,切换虚拟机的内存至硬盘交换分区,并对虚拟机进行休眠计时;

步骤2082,接收唤醒请求;

步骤2084,根据唤醒请求,唤醒虚拟机。

在该实施例中,当用户使用客户端连接服务器时,接收到用户使用客户端连接服务器的请求时,虚拟机管理系统负责快速唤醒该安卓虚拟机,并且在安卓虚拟机唤醒运行后如无客户端连接或长时间无数据传输时,安卓虚拟机继续进入休眠流程,能够极大地增加服务器资源的使用效率。

在本发明的一个实施例中,优选地,该方法包括:

步骤200,检测虚拟机的工作状态;

步骤202,当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;

步骤204,判断空闲时间是否大于第一预设时间阈值;

步骤206,当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态,切换虚拟机的内存至硬盘交换分区,并对虚拟机进行休眠计时;

步骤2082,接收唤醒请求;

步骤2084,根据唤醒请求,唤醒虚拟机;

步骤2086,判断休眠时间是否大于第二预设时间阈值;

步骤2088,当休眠时间大于第二预设时间阈值时,唤醒虚拟机。

在该实施例中,对于休眠的虚拟机,有定期唤醒机制,当虚拟机的休眠时间大于预设时间阈值时,唤醒虚拟机,确保用户在客户端能及时获取虚拟机内应用的通知信息,也满足了部分应用需要不断更新状态的需求,给用户带来良好的使用体验。

在本发明的一个实施例中,优选地,唤醒虚拟机的同时,还包括:切换虚拟机的内存至物理内存。

在该实施例中,安卓虚拟机正常运行后系统会自动将使用的内存数据从交换分区交换到物理内存中,实现内存资源的合理及有效利用。

在本发明的一个实施例中,优选地,检测虚拟机的工作状态之前,还包括:通过控制组将程序按虚拟机进行分组;移植linux容器,通过linux容器运行多个虚拟机。

在该实施例中,通过控制组将程序按虚拟机进行分组,并移植linux容器,通过linux容器运行多程序,能够在服务器创建更多的安卓虚拟机,支持更多的用户登录云端安卓虚拟机系统,在服务器配置一定的情况下,支持的用户数大大增加。

本发明第二方面的实施例,提出一种虚拟机的休眠与唤醒系统300,图3示出了本发明的一个实施例的虚拟机的休眠与唤醒系统300的示意框图。其中,该系统包括:

检测单元302,用于检测虚拟机的工作状态;

计时单元304,用于当虚拟机的工作状态为空闲状态时,对虚拟机进行空闲计时;

控制单元306,用于当空闲时间大于第一预设时间阈值时,使虚拟机进入休眠状态;以及根据唤醒请求或休眠时间,唤醒虚拟机;

计时单元304,还用于对虚拟机进行休眠计时。

本发明提供的虚拟机的休眠与唤醒系统300,检测单元302检测客户端与虚拟机长时间无网络连接或者客户端与虚拟机的网络连接长时间没有数据传输时,判断虚拟机的工作状态为空闲状态,此时计时单元304开始记录虚拟机的空闲时间,并在空闲时间大于第一预设时间阈值时,控制单元306使虚拟机进入休眠状态,同时释放虚拟机的cpu资源,由计时单元304开始记录虚拟机的休眠时间,控制单元306在接收到唤醒请求或休眠时间达到一定阈值时,唤醒虚拟机,本发明在不影响用户体验的前提下,降低了服务器cpu和内存的占用,满足了使用有限的资源支持更多用户接入的需求,有效降低了用户投入成本。

在本发明的一个实施例中,优选地,控制单元306,还用于:切换虚拟机的内存至硬盘交换分区。

在该实施例中,控制单元306在使虚拟机进入休眠状态的同时,使虚拟机所使用的物理内存换出到硬盘交换分区上以释放物理内存资源,实现物理内存的合理及有效利用。

在本发明的一个实施例中,优选地,控制单元306,还用于:接收唤醒请求;根据唤醒请求,唤醒虚拟机。

在该实施例中,当用户使用客户端连接服务器时,控制单元306接收到用户使用客户端连接服务器的请求时,快速唤醒该安卓虚拟机,并且在安卓虚拟机唤醒运行后如无客户端连接或长时间无数据传输时,安卓虚拟机继续进入休眠流程,能够极大地增加服务器资源的使用效率。

在本发明的一个实施例中,优选地,控制单元306,还用于:当休眠时间大于第二预设时间阈值时,唤醒虚拟机。

在该实施例中,对于休眠的虚拟机,有定期唤醒机制,当虚拟机的休眠时间大于预设时间阈值时,控制单元306唤醒虚拟机,确保用户在客户端能及时获取虚拟机内应用的通知信息,也满足了部分应用需要不断更新状态的需求,给用户带来良好的使用体验。

在本发明的一个实施例中,优选地,控制单元306,还用于:切换虚拟机的内存至物理内存。

在该实施例中,安卓虚拟机正常运行后控制单元306会自动将使用的内存数据从交换分区交换到物理内存中,实现内存资源的合理及有效利用。

在本发明的一个实施例中,如图3所示,优选地,还包括:预处理单元308,用于通过控制组将程序按虚拟机进行分组;以及移植linux容器,通过linux容器运行多个虚拟机。

在该实施例中,由预处理单元308通过控制组将程序按虚拟机进行分组,并移植linux容器,通过linux容器运行多个虚拟机,能够在服务器创建更多的安卓虚拟机,支持更多的用户登录云端安卓虚拟机系统,在服务器配置一定的情况下,支持的用户数大大增加。

本发明使用操作系统中的cgroup子系统来使不活跃的android虚拟机处于休眠状态或者近乎休眠状态以释放cpu资源,同时将不活跃的android虚拟机所使用的物理内存换出到swap分区上(硬盘)以释放物理内存资源。能够在服务器上创建更多的android虚拟机,大大增加了服务器资源的使用效率和服务器能容纳用户接入的数量,系统结构如图4所示,具体实现方法如下:

(1)android系统启用cgroup子系统

cgroup子系统提供的一种可以限制、记录、隔离进程组所使用的物理资源(如:cpu,memory,io等等)的机制,cgroup子系统是将任意进程进行分组化管理的linux内核功能。cgroup子系统本身是提供将进程进行分组化管理的功能和接口的基础结构,i/o或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。在android系统源码中修改./arch/x86/configs/android-x86_64_defconfig文件内容,重新编译源码使该模块在系统中可用。cgroup子系统作为系统核心的一部分,将系统资源隔离分组,使多组任务,利用cgroup子系统进行系统分组的逻辑结构如图5所示,运行独立的android操作系统可看作逻辑上的一个任务,系统内核通过cgroup子系统机制将任务分组,每个android操作系统工作在一个cgroup子系统分组中,彼此之间相互独立,达到了多android虚拟系统同时运行的目的。

(2)lxc容器移植进android系统并进行适配

在采用容器技术的服务器虚拟化实现中,要求被虚拟化实现的系统能够多实例运行,而android系统原生不支持这种运行方式,需要修改如下子系统以适配多实例运行:framebuffer、input、binder。具体实现方法是使用namespace命名空间对这三个子系统进行隔离,每个android运行实例对应一个命名空间,这三个子系统运行在当前实例的命名空间中。

(3)android虚拟机休眠唤醒调度

1)android虚拟机休眠

如图6所示,步骤602,android虚拟机管理系统启动android虚拟机后,android虚拟机记录客户端的连接状态,每次状态变化都要上报给android虚拟机管理系统。步骤604,android虚拟机检测到客户端和虚拟机长时间无网络连接或者客户端和虚拟机的网络连接长时间没有数据传输,则系统认为该虚拟机为空闲状态。android虚拟机将该状态上报android虚拟机管理系统。步骤606,android虚拟机管理系统对空闲的android虚拟机进行计时,当达到管理员设置的空闲时间阈值时,则使android虚拟机进入休眠状态。休眠android虚拟机时调用“lxc_cgroup-nnamecpu.shares1”命令释放cpu资源,调用“lxc_cgroup-nnamememory.force_empty1”将虚拟机使用的内存切换到硬盘swap分区以释放物理内存。

2)android虚拟机唤醒

android虚拟机唤醒分为两种情况:有客户端请求时快速唤醒android虚拟机、定期唤醒休眠的android虚拟机。

有客户端请求时快速唤醒android虚拟机:如图7所示,步骤702,用户对应的虚拟机处于休眠状态,步骤704,用户使用客户端连接服务器,步骤706,android虚拟机管理系统负责快速唤醒该android虚拟机,调用命令“lxc_cgroup-nnamecpu.shares1024”取消对该android虚拟机的cpu使用限制,android虚拟机正常运行后系统会自动将使用的内存数据从swap分区交换到物理内存中。唤醒运行后的android虚拟机如无客户端连接或长时间无数据传输,则进入休眠流程。

定期唤醒休眠的android虚拟机:对于长时间休眠的虚拟机,有定期唤醒机制,唤醒虚拟机定期运行内部应用,确保用户在客户端能及时获取虚拟机内应用的通知信息,也满足了部分应用需要不断更新状态的需求,给用户带来良好的体验。如图8所示,android虚拟机管理系统对处于休眠状态的android虚拟机进行管理,步骤802,android虚拟机处于休眠状态,步骤804,当虚拟机休眠时间达到管理员设置的休眠时间阈值,步骤806,android虚拟机管理系统需要唤醒android虚拟机,调用命令“lxc_cgroup-nnamecpu.shares1024”取消对该android虚拟机的cpu使用限制,android虚拟机正常运行后系统会自动将使用的内存数据从swap分区交换到物理内存中。唤醒运行后的android虚拟机如无客户端连接或长时间无数据传输,则进入休眠流程。

本发明在不影响用户体验的前提下,降低了cpu和内存的占用,满足了使用有限的资源支持更多用户接入的需求,有效降低了用户投入成本。

在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1