一种数据处理方法及装置的制造方法

文档序号:9910847阅读:268来源:国知局
一种数据处理方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及通信技术领域,具体涉及一种数据处理方法及装置。
【背景技术】
[0002]随着计算机技术的飞速发展,越来越多的公司和研究机构开始关注计算机的能耗和资源利用率,而云计算则是其中关键的计算模式。云计算将所有的计算机抽象成特定的计算资源,然后将这些计算资源提供给用户,而不是直接提供一台或多台计算机。这种模式最大的好处就是用户可以根据自己的实际需要来申请资源,避免不必要的资源的浪费,提高资源利用率。
[0003]服务器虚拟化技术是云计算中基于基础设施层的关键技术,通过对物理服务器进行虚拟化,实现在单台物理节点上部署多台虚拟机,并在虚拟机的内部部署业务,从而提高物理服务器的资源利用率,降低使用成本。但是,由于服务器虚拟化技术是基于虚拟机监视器(英文全称:virtual machine monitor,缩写:VMM)模块,在硬件平台和客户操作系统中加入了一层抽象硬件层,所以不可避免的会带来一定的性能开销。对于大部分的应用来说,虚拟化引入的性能开销是可以接受的,但是对于信息技术(英文全称:Informat1nTechnology,缩写:IT)等关键应用来说,对于性能的需求比较严苟S虚拟化引入的性能开销可能会对用户体验起到严重的影响。例如,对于虚拟化高级特性热迀移和热备,内存标脏(dirty logging)的效率直接影响热迀移时长、业务中断时间和虚拟机内部的业务性能,特别是在热备中,由于需要不断地获取内存脏页信息来进行内存同步,影响巨大。因此,内存标脏的效率是保障在热迀移和热备过程中虚拟机业务性能不受影响以及降低业务中断时间的关键指标,直接影响用户体验。
[0004]在没有引入硬件来辅助内存标脏之前,业界使用纯软件技术,如图1所示,S卩:当快速计算仿真器(英文全称:Quick EMUlator,缩写:QEMU)通知虚拟机管理程序(Hypervisor)需要进行内存标脏时,Hypervisor设置虚拟机的内存写保护,当虚拟机进行内存写操作时,就会产生异常退出到Hypervisor ,Hypervisor截获到该写异常后,根据写的内存地址,标记该内存页为脏页,然后再返回虚拟机。
[0005]由于虚拟机频繁退出到Hypervisor,严重影响虚拟机内部业务性能。当虚拟机退出到Hypervisor时,虚拟机的内部业务是中断的,直到Hypervisor返回虚拟机,虚拟机内部业务才得以继续进行。

【发明内容】

[0006]本发明实施例提供了一种数据处理方法及装置,用于解决现有技术中虚拟机进行内存标脏时,频繁退出到Hypervi sor而导致虚拟机的内部业务中断的问题。
[0007]本发明第一方面提供一种数据处理方法,所述方法应用于虚拟机系统中的第一物理机,所述第一物理机上运行第一虚拟机,所述虚拟机系统还包括第二物理机,所述第二物理机上运行第二虚拟机,其中,所述第一物理机包括中央处理器CHJ和虚拟机管理程序Hypervisor,所述方法包括:
[0008]在预设条件下,当所述第一虚拟机进行内存写操作时,获取第一地址和第二地址,其中,所述第一地址为所述第一虚拟机进行内存写操作的地址,所述第二地址为存储在第一寄存器的标脏位图的地址,所述第一地址和所述第二地址对应的标脏位图之间存在映射关系;
[0009]根据所述映射关系确定所述第一地址在所述第二地址对应的标脏位图中对应的比特bit位,并将所述对应的bit位置位,其中,所述第一寄存器为所述CPU上的至少一个寄存器。
[0010]该预设条件一般为需要将虚拟机的脏页进行备份或者拷贝,例如:热迀移或者热备等条件下。其中,热迀移是指将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上,恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异,例如:源虚拟机从一台物理机迀移至另一台物理机上。而热备是指一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(SPStandby状态),例如:避免主虚拟机所在的物理机发生故障而导致数据流失,主虚拟机上的数据与备虚拟机上的数据同步。
[0011]在本发明实施例中,CPU根据所述映射关系确定所述第一地址在所述第二地址对应的标脏位图中对应的比特bit位,并将所述对应的bit位置位,即完成内存标脏,例如:在热迀移或者是热备的条件下,当第一虚拟机的内存中的记录页内容被修改时,称该被修改的页为脏页。而CHJ完成该内存标脏主要是记录该脏页信息,QEMU通过接口获取该脏页信息,并把该脏页信息发送至第二虚拟机。
[0012]可见,在预设条件下(例如:热迀移或者热备),当第一虚拟机进行内存写操作时,CPU获取第一地址和第二地址,根据第一地址和所述第二地址对应的标脏位图之间的映射关系确定该第一地址在第二地址对应的标脏位图中对应的bit位,并将所述对应的bit位置位,其中,第一寄存器为所述CPU上的至少一个寄存器,可见通过CPU进行内存标脏,无需虚拟机退出到Hypervisor,消除虚拟机由于频繁退出到Hypervisor所导致的虚拟机的内部业务中断的问题,从而提高内存标脏的效率。
[0013]结合第一方面,在一些可能的实现方式中,在获取第一地址和第二地址之前,所述方法还包括:
[0014]检测到所述Hypervisor在所述第一寄存器上的第一写操作,所述第一写操作用于指示所述第一寄存器保存所述第二地址。
[0015]在另一些可能的实现方式中,所述在检测到所述Hypervisor在所述第一寄存器上的第一写操作的之后或者同时,所述方法还包括:
[0016]检测到所述Hypervisor在第二寄存器上的第二写操作,所述第二写操作用于指示所述CPU进行内存标脏,其中,所述第二寄存器为所述CPU上的至少一个寄存器。
[0017]在另一些可能的实现方式中,在将所述对应的bit位置位之后,所述方法还包括:
[0018]将所述置位后的标脏位图传输给所述Hypervisor,所述置位后的标脏位图所对应的脏页信息用于发送给所述第二虚拟机,使得所述第二虚拟机同步所述第一虚拟机进行内存写操作的脏页信息。
[0019]在另一些可能的实现方式中,所述将所述置位后的标脏位图发送给所述Hypervisor之后,所述方法还包括:
[0020]将所述CPU的运行状态恢复至初始状态。
[0021]本发明第二方面提供一种数据处理装置,所述装置应用于虚拟机系统中的第一物理机,所述第一物理机上运行第一虚拟机,所述虚拟机系统还包括第二物理机,所述第二物理机上运行第二虚拟机,其中,所述第一物理机包括中央处理器CHJ和虚拟机管理程序Hypervisor,所述装置包括:
[0022]获取模块,用于在预设条件下,当所述第一虚拟机进行内存写操作时,获取第一地址和第二地址,其中,所述第一地址为所述第一虚拟机进行内存写操作的地址,所述第二地址为存储在第一寄存器的标脏位图的地址,所述第一地址和所述第二地址对应的标脏位图之间存在映射关系;
[0023]处理模块,用于根据所述映射关系确定所述第一地址在所述第二地址对应的标脏位图中对应的比特bit位,并将所述对应的bit位置位,其中,所述第一寄存器为所述CPU上的至少一个寄存器。
[0024]可见,在预设条件下(例如:热迀移或者热备),当第一虚拟机进行内存写操作时,获取模块获取第一地址和第二地址,处理模块根据第一地址和所述第二地址对应的标脏位图之间的映射关系确定第一地址在所述第二地址对应的标脏位图中对应的bit位,并将所述对应的bit位置位,其中,第一寄存器为所述CPU上的至少一个寄存器,可见通过处理模块进行内存标脏,无需虚拟机退出到Hyperv i sor,消除虚拟机由于频繁退出到Hyperv i sor所导致的虚拟机的内部业务中断的问题,从而提高内存标脏的效率。
[0025]在一些可能的实现方式中,
[0026]所述处理模块,还用于在所述获取模块获取第一地址和第二地址之前,检测到所述Hypervisor在所述第一寄存器上的第一写操作,所述第一写操作用于指示所述第一寄存器保存所述第二地址。
[0027]在另一些可能的实现方式中,
[0028]所述处理模块,还用于在检测到所述Hypervisor在所述第一寄存器上的第一
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1