书签 分享 收藏 举报 版权申诉 / 41

虚拟机内存管理方法、物理主机、PCIE设备及其配置方法以及迁移管理设备.pdf

  • 上传人:1**
  • 文档编号:1664090
  • 上传时间:2018-07-03
  • 格式:PDF
  • 页数:41
  • 大小:2.66MB
  • 摘要
    申请专利号:

    CN201510041416.2

    申请日:

    2015.01.27

    公开号:

    CN104636186A

    公开日:

    2015.05.20

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20150127|||公开

    IPC分类号:

    G06F9/455; G06F12/06

    主分类号:

    G06F9/455

    申请人:

    华为技术有限公司

    发明人:

    卢胜文

    地址:

    518129广东省深圳市龙岗区坂田华为总部办公楼

    优先权:

    专利代理机构:

    北京三高永信知识产权代理有限责任公司11138

    代理人:

    罗振安

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种虚拟机内存管理方法、物理主机、PCIE设备及其配置方法以及迁移管理设备,属于虚拟机领域。所述方法包括:虚拟机为PCIE设备承载的至少一个业务分配内存,分配给每个业务的内存均包括多个内存块,多个内存块用于保存对应的业务的工作信息,每个内存块为一段客户机的物理地址连续的内存空间;虚拟机根据分配给每个业务的内存,生成基址表BAT和芯片逻辑地址表CLAT,BAT包括与每个业务对应的CLAT表项的基址,CLAT包括每个内存块的首地址;虚拟机将BAT的地址及虚拟机对应的功能号发送给PCIE设备,PCIE设备用于记录BAT的地址与功能号的对应关系,并根据BAT的地址与功能号的对应关系,从虚拟机中获取业务的工作信息。

    权利要求书

    权利要求书
    1.  一种虚拟机内存管理方法,其特征在于,所述虚拟机运行在物理主机上, 所述物理主机与快捷外围部件互连标准PCIE设备连接,所述PCIE设备为一个 支持单根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一 个物理功能PF以及至少一个虚拟功能VF,其中,每个PF和每个VF都配置有 唯一的功能号,所述方法包括:
    所述虚拟机为所述PCIE设备承载的至少一个业务分配内存,分配给每个业 务的内存均包括多个内存块,所述多个内存块用于保存对应的业务的工作信息, 每个内存块为一段客户机的物理地址连续的内存空间;
    所述虚拟机根据分配给所述每个业务的内存,生成基址表BAT和芯片逻辑 地址表CLAT,所述BAT包括与所述每个业务对应的所述CLAT表项的基址, 所述CLAT包括所述每个内存块的首地址;
    所述虚拟机将所述BAT的地址及所述虚拟机对应的功能号发送给所述 PCIE设备。

    2.  根据权利要求1所述的方法,其特征在于,所述至少一个业务包括待处 理业务,所述方法还包括:
    接收所述PCIE设备发送的用于获取所述待处理业务的工作信息的请求消 息,所述请求消息包括所述BAT的地址、所述待处理业务的业务类型及所述待 处理业务的业务编号;
    根据所述请求消息将所述待处理业务对应的内存块中的工作信息发送给所 述PCIE设备。

    3.  根据权利要求2所述的方法,其特征在于,所述根据所述请求消息将所 述待处理业务对应的内存块中的工作信息发送给所述PCIE设备,包括:
    获取所述BAT的地址对应的BAT;
    根据所述待处理业务的业务类型及所述BAT,确定所述业务类型对应的所 述CLAT表项的基址;
    根据所述待处理业务的业务编号确定表项偏移;
    根据所述CLAT表项的基址及所述表项偏移,获取所述待处理业务对应的 CLAT表项;
    将所述待处理业务对应的CLAT表项所对应的内存块中的工作信息发送给 所述PCIE设备。

    4.  根据权利要求3所述的方法,其特征在于,
    所述CLAT包括:单级CLAT或多级CLAT;所述多级CLAT包括N级CLAT, 其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级CLAT的每一条 表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1<N且n为整 数,第N级CLAT的每一条表项分别用于指示一个所述内存块的首地址。

    5.  根据权利要求4所述的方法,其特征在于,所述待处理业务所分配到的 所述多个内存块的大小相同;
    所述根据所述待处理业务的业务编号确定表项偏移,包括:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。

    6.  一种快捷外围部件互连标准PCIE设备配置方法,其特征在于,所述PCIE 设备与物理主机与连接,所述物理主机上运行有至少一个虚拟机,所述PCIE设 备为一个支持单根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE设备包 括至少一个物理功能PF以及至少一个虚拟功能VF,其中,每个PF和每个VF 都配置有唯一的功能号,每个所述虚拟机均包括基址表BAT,所述BAT是各自 所属的虚拟机根据分配给所述PCIE设备承载的至少一个业务的内存生成的,分 配给每个业务的内存均包括多个内存块,所述多个内存块用于保存对应的业务 的工作信息,每个内存块为一段客户机的物理地址连续的内存空间,所述BAT 包括与所述每个业务对应的芯片逻辑地址表CLAT表项的基址,所述CLAT包 括所述每个内存块的首地址,
    所述方法包括:
    所述PCIE设备接收各个虚拟机的基址表BAT的地址及所述各个虚拟机对 应的功能号;
    将所述BAT的地址与所述功能号的对应关系保存到虚拟机配置表VCT中。

    7.  根据权利要求6所述的方法,其特征在于,所述至少一个业务包括待处 理业务,所述方法还包括:
    根据所述待处理业务的业务信息及所述VCT,确定所述待处理业务对应的 BAT的地址;
    根据所述待处理业务对应的BAT的地址、所述待处理业务的业务类型及所 述待处理业务的业务编号,从所述待处理业务所对应的内存中获取所述待处理 业务的工作信息。

    8.  根据权利要求7所述的方法,其特征在于,所述根据所述待处理业务的 业务信息及所述VCT,确定所述待处理业务对应的BAT的地址,包括:
    接收主机侧或者网络侧发送的所述待处理业务的业务信息;
    根据所述主机侧发送的所述待处理业务的业务信息中的特征或者接收所述 主机侧传输所述待处理业务的业务信息时所用的PCIE接口确定所述待处理业务 对应的功能号,所述特征用于指示所述待处理业务对应的功能号;
    根据确定出的所述待处理业务对应的功能号和所述VCT,确定所述待处理 业务对应的功能号所对应的BAT的地址。

    9.  根据权利要求8所述的方法,其特征在于,所述根据所述待处理业务对 应的BAT的地址、所述待处理业务的业务类型及所述待处理业务的业务编号, 从所述待处理业务所对应的内存中获取所述待处理业务的工作信息,包括:
    向确定出的所述待处理业务对应的功能号所对应的虚拟机发送请求消息, 所述请求消息包括所述待处理业务对应的功能号所对应的BAT的地址、所述待 处理业务的业务类型及所述待处理业务的业务编号;
    接收所述待处理业务对应的功能号所对应的虚拟机发送的所述待处理业务 的工作信息,所述待处理业务的工作信息是所述待处理业务对应的功能号所对 应的虚拟机从所述请求消息对应的内存块中获取的。

    10.  根据权利要求7或8所述的方法,其特征在于,所述根据所述待处理 业务对应的BAT的地址、所述待处理业务的业务类型及所述待处理业务的业务 编号,从所述待处理业务所对应的内存中获取所述待处理业务的工作信息,包 括:
    采用所述待处理业务对应的BAT的地址读取所述待处理业务对应的BAT;
    根据所述待处理业务的业务类型,从所述待处理业务对应的BAT中确定所 述待处理业务的业务类型对应的CLAT表项的基址;
    采用所述待处理业务的业务编号确定表项偏移;
    读取所述待处理业务的业务类型对应的CLAT表项的基址及所述表项偏移 对应的CLAT表项;
    读取所述CLAT表项所对应的内存块中的工作信息。

    11.  根据权利要求10所述的方法,其特征在于,所述CLAT包括:单级CLAT 或多级CLAT;所述多级CLAT包括N级CLAT,其中,N≥2且N为整数,每 级CLAT均包括多条表项,第n级CLAT的每一条表项分别用于指示一个第n+1 级CLAT的地址,其中,2≤n<n+1<N且n为整数,第N级CLAT的每一条表 项分别用于指示一个所述内存块的首地址。

    12.  根据权利要求11所述的方法,其特征在于,所述待处理业务所分配到 的所述多个内存块的大小相同;
    所述采用所述待处理业务的业务编号确定表项偏移,包括:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。

    13.  一种虚拟机内存管理方法,其特征在于,所述方法包括:
    在热迁移时,目的物理主机中的迁移管理设备获取源物理主机中的虚拟机 的基址表BAT的地址,所述目的物理主机和所述源物理主机分别与不同的快捷 外围部件互连标准PCIE设备连接,所述PCIE设备为一个支持单根输入输出虚 拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一个物理功能PF以及 至少一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一的功能号;
    获取迁移后的虚拟机对应的所述功能号;
    将所述BAT的地址与所述功能号的对应关系配置到与所述目的物理主机连 接的PCIE设备中的虚拟机配置表VCT中。

    14.  一种物理主机,其特征在于,所述物理主机上运行有虚拟机,所述物 理主机与快捷外围部件互连标准PCIE设备连接,所述PCIE设备为一个支持单 根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一个物理 功能PF以及至少一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一的 功能号,所述虚拟机包括:
    分配模块,用于为所述PCIE设备承载的至少一个业务分配内存,分配给每 个业务的内存均包括多个内存块,所述多个内存块用于保存对应的业务的工作 信息,每个内存块为一段客户机的物理地址连续的内存空间;
    表项生成模块,用于根据分配给所述每个业务的内存,生成基址表BAT和 芯片逻辑地址表CLAT,所述BAT包括与所述每个业务对应的所述CLAT表项 的基址,所述CLAT包括所述每个内存块的首地址;
    发送模块,用于将所述BAT的地址及所述虚拟机对应的功能号发送给所述 PCIE设备。

    15.  根据权利要求14所述的物理主机,其特征在于,所述至少一个业务包 括待处理业务,所述虚拟机还包括:
    接收模块,用于接收所述PCIE设备发送的用于获取所述待处理业务的工作 信息的请求消息,所述请求消息包括所述BAT的地址、所述待处理业务的业务 类型及所述待处理业务的业务编号;
    所述发送模块,还用于根据所述请求消息将所述待处理业务对应的内存块 中的工作信息发送给所述PCIE设备。

    16.  根据权利要求15所述的物理主机,其特征在于,所述发送模块具体用 于:
    获取所述BAT的地址对应的BAT;根据所述待处理业务的业务类型及所述 BAT,确定所述业务类型对应的所述CLAT表项的基址;根据所述待处理业务的 业务编号确定表项偏移;根据所述CLAT表项的基址及所述表项偏移,获取所 述待处理业务对应的CLAT表项;将所述待处理业务对应的CLAT表项所对应 的内存块中的工作信息发送给所述PCIE设备。

    17.  根据权利要求16所述的物理主机,其特征在于,所述CLAT包括:单 级CLAT或多级CLAT;所述多级CLAT包括N级CLAT,其中,N≥2且N为 整数,每级CLAT均包括多条表项,第n级CLAT的每一条表项分别用于指示 一个第n+1级CLAT的地址,其中,2≤n<n+1<N且n为整数,第N级CLAT 的每一条表项分别用于指示一个所述内存块的首地址。

    18.  根据权利要求17所述的物理主机,其特征在于,所述待处理业务所分 配到的所述多个内存块的大小相同;
    所述发送模块具体用于:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。

    19.  一种PCIE设备,其特征在于,所述PCIE设备与物理主机连接,所述 物理主机上运行有至少一个虚拟机,所述PCIE设备为一个符合单根输入输出虚 拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一个物理功能PF以及 至少一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一的功能号,每 个所述虚拟机均包括基址表BAT,所述BAT是各自所属的虚拟机根据分配给所 述PCIE设备承载的至少一个业务的内存生成的,分配给每个业务的内存均包括 多个内存块,所述多个内存块用于保存对应的业务的工作信息,每个内存块为 一段客户机的物理地址连续的内存空间,所述BAT包括与所述每个业务对应的 芯片逻辑地址表CLAT表项的基址,所述CLAT包括所述每个内存块的首地址, 所述PCIE设备还包括:
    接收模块,用于接收各个虚拟机的基址表BAT的地址及所述各个虚拟机对 应的功能号;
    生成模块,用于将所述BAT的地址与所述功能号的对应关系保存到虚拟机 配置表VCT中。

    20.  根据权利要求19所述的PCIE设备,其特征在于,所述至少一个业务 包括待处理业务,所述PCIE设备还包括:
    确定模块,用于根据所述待处理业务的业务信息及所述VCT,确定所述待 处理业务对应的BAT的地址;
    获取模块,用于根据所述待处理业务对应的BAT的地址、所述待处理业务 的业务类型及所述待处理业务的业务编号,从所述待处理业务所对应的内存中 获取所述待处理业务的工作信息。

    21.  根据权利要求20所述的PCIE设备,其特征在于,
    所述接收模块,还用于主机侧或者网络侧发送的所述待处理业务的业务信 息;
    所述确定模块具体用于:
    根据所述主机侧发送的所述待处理业务的业务信息中的特征或者接收所述 主机侧传输所述待处理业务的业务信息时所用的PCIE接口确定待处理业务对应 的功能号,所述特征用于指示所述待处理业务对应的功能号;
    根据确定出的所述待处理业务对应的功能号和所述VCT,确定所述待处理 业务对应的功能号所对应的BAT的地址。

    22.  根据权利要求21所述的PCIE设备,其特征在于,所述获取模块具体 用于:
    向确定出的所述待处理业务对应的功能号所对应的虚拟机发送请求消息, 所述请求消息包括所述待处理业务对应的功能号所对应的BAT的地址、所述待 处理业务的业务类型及所述待处理业务的业务编号;接收所述待处理业务对应 的功能号所对应的虚拟机发送的所述待处理业务的工作信息,所述待处理业务 的工作信息是所述待处理业务对应的功能号所对应的虚拟机从所述请求消息对 应的内存块中获取的。

    23.  根据权利要求20或21所述的PCIE设备,其特征在于,所述获取模块 具体用于:
    采用所述待处理业务对应的BAT的地址读取所述待处理业务对应的BAT; 根据所述待处理业务的业务类型,从所述待处理业务对应的BAT中确定所述待 处理业务的业务类型对应的CLAT表项的基址;采用所述待处理业务的业务编 号确定表项偏移;读取所述待处理业务的业务类型对应的CLAT表项的基址及 所述表项偏移对应的CLAT表项;读取所述CLAT表项所对应的内存块中的工 作信息。

    24.  根据权利要求23所述的PCIE设备,其特征在于,所述CLAT包括: 单级CLAT或多级CLAT;所述多级CLAT包括N级CLAT,其中,N≥2且N 为整数,每级CLAT均包括多条表项,第n级CLAT的每一条表项分别用于指 示一个第n+1级CLAT的地址,其中,2≤n<n+1<N且n为整数,第N级CLAT 的每一条表项分别用于指示一个所述内存块的首地址。

    25.  根据权利要求24所述的PCIE设备,其特征在于,所述待处理业务所 分配到的所述多个内存块的大小相同;
    所述获取模块具体用于:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。

    26.  一种迁移管理设备,其特征在于,所述迁移管理设备设于目的物理主 机中,所述迁移管理设备包括:
    第一获取模块,用于在热迁移时,获取源物理主机中的虚拟机的基址表BAT 的地址,所述目的物理主机和所述源物理主机分别与不同的快捷外围部件互连 标准PCIE设备连接,所述PCIE设备为一个支持单根输入输出虚拟化SR-IOV 标准的硬件设备,所述PCIE设备包括至少一个物理功能PF以及至少一个虚拟 功能VF,其中,每个PF和每个VF都配置有唯一的功能号;
    第二获取模块,用于获取迁移后的虚拟机对应的所述功能号;
    配置模块,用于将所述BAT的地址与所述功能号的对应关系配置到与所述 目的物理主机连接的PCIE设备中的虚拟机配置表VCT中。

    说明书

    说明书虚拟机内存管理方法、物理主机、PCIE设备及其配置方法以及迁移管理设备
    技术领域
    本发明涉及虚拟机领域,特别涉及一种虚拟机内存管理方法、物理主机、 PCIE设备及其配置方法以及迁移管理设备。
    背景技术
    在典型的虚拟机应用架构中,一台物理主机上安装具有管理虚拟机功能的 虚拟机管理器(英文:Virtual Machine Manager,简称:VMM),由VMM管理 一个或多个虚拟机,每个虚拟机上可以运行操作系统(英文:Operating System, 简称:OS)以及各种应用。一般物理主机的硬件主要包括:一部分跟运行虚拟 机相关的硬件,例如中央处理器(英文:Central Processing Unit,简称:CPU)、 内存、硬盘等,以及一部分不直接用于运行虚拟机,而用于执行一些特定业务, 且功能相对独立的硬件,例如物理主机内的快捷外围部件互连标准(英文: Peripheral Component Interconnection Express,简称:PCIE)设备(如网卡适配 器、显卡等)。
    单根I/O虚拟化(英文:Single-Root I/O Virtualization,简称:SR-IOV)是 一种输入输出(英文:Input/output,简称:I/O)虚拟化技术,该技术可以在一 个物理PCIE适配器上虚拟化出多个虚拟的PCIE适配器,称之为虚拟功能(英 文:Virtual function,简称:VF)。以支持SR-IOV的网卡适配器为例,一块物 理网卡适配器可以虚拟出多个虚拟网卡适配器,每台虚拟机中的VF对应一块虚 拟网卡适配器。
    服务器在实现虚拟化后,可以方便地实现虚拟机热迁移。虚拟机热迁移技 术是指通过热迁移将虚拟机从一台物理主机中转移到另一台物理主机中,而该 迁移过程对业务处理的影响很小。
    在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
    在现有技术中,虚拟机热迁移时除了需要将内存中存储的数据迁移到目标 物理主机外,还需要将保存在PCIE适配器上的寄存器的状态迁移到目标物理主 机,这些寄存器通常是配置来记录PCIE适配器处理的业务的工作信息,该工作 信息用于业务的统计、控制和业务状态记录。但保存业务的工作信息的寄存器 非常分散,如果进行热迁移,这些寄存器状态的保存和恢复,需要逐个地独立 保存和恢复,非常麻烦。
    发明内容
    为了解决现有技术的问题,本发明实施例提供了一种虚拟机内存管理方法、 物理主机、PCIE设备及其配置方法以及迁移管理设备。所述技术方案如下:
    第一方面,本发明实施例提供了一种虚拟机内存管理方法,所述虚拟机运 行在物理主机上,所述物理主机与快捷外围部件互连标准PCIE设备连接,所述 PCIE设备为一个支持单根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE 设备包括至少一个物理功能PF以及至少一个虚拟功能VF,其中,每个PF和每 个VF都配置有唯一的功能号,所述方法包括:
    所述虚拟机为所述PCIE设备承载的至少一个业务分配内存,分配给每个业 务的内存均包括多个内存块,所述多个内存块用于保存对应的业务的工作信息, 每个内存块为一段客户机的物理地址连续的内存空间;
    所述虚拟机根据分配给所述每个业务的内存,生成基址表BAT和芯片逻辑 地址表CLAT,所述BAT包括与所述每个业务对应的所述CLAT表项的基址, 所述CLAT包括所述每个内存块的首地址;
    所述虚拟机将所述BAT的地址及所述虚拟机对应的功能号发送给所述 PCIE设备。
    在第一方面的第一种可能的实施方式中,所述至少一个业务包括待处理业 务,所述方法还包括:
    接收所述PCIE设备发送的用于获取所述待处理业务的工作信息的请求消 息,所述请求消息包括所述BAT的地址、所述待处理业务的业务类型及所述待 处理业务的业务编号;
    根据所述请求消息将所述待处理业务对应的内存块中的工作信息发送给所 述PCIE设备。
    根据第一方面的第一种可能的实施方式,所述根据所述请求消息将所述待 处理业务对应的内存块中的工作信息发送给所述PCIE设备,包括:
    获取所述BAT的地址对应的BAT;
    根据所述待处理业务的业务类型及所述BAT,确定所述业务类型对应的所 述CLAT表项的基址;
    根据所述待处理业务的业务编号确定表项偏移;
    根据所述CLAT表项的基址及所述表项偏移,获取所述待处理业务对应的 CLAT表项;
    将所述待处理业务对应的CLAT表项所对应的内存块中的工作信息发送给 所述PCIE设备。
    根据第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施 方式中,所述CLAT包括:单级CLAT或多级CLAT;所述多级CLAT包括N 级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级CLAT 的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1<N 且n为整数,第N级CLAT的每一条表项分别用于指示一个所述内存块的首地 址。
    根据第一方面的第三种可能的实施方式,在第一方面的第四种可能的实施 方式中,所述待处理业务所分配到的所述多个内存块的大小相同;
    所述根据所述待处理业务的业务编号确定表项偏移,包括:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。
    第二方面,本发明实施例还提供了一种快捷外围部件互连标准PCIE设备配 置方法,所述PCIE设备与物理主机与连接,所述物理主机上运行有至少一个虚 拟机,所述PCIE设备为一个支持单根输入输出虚拟化SR-IOV标准的硬件设备, 所述PCIE设备包括至少一个物理功能PF以及至少一个虚拟功能VF,其中,每 个PF和每个VF都配置有唯一的功能号,每个所述虚拟机均包括基址表BAT, 所述BAT是各自所属的虚拟机根据分配给所述PCIE设备承载的至少一个业务 的内存生成的,分配给每个业务的内存均包括多个内存块,所述多个内存块用 于保存对应的业务的工作信息,每个内存块为一段客户机的物理地址连续的内 存空间,所述BAT包括与所述每个业务对应的芯片逻辑地址表CLAT表项的基 址,所述CLAT包括所述每个内存块的首地址,
    所述方法包括:
    所述PCIE设备接收各个虚拟机的基址表BAT的地址及所述各个虚拟机对 应的功能号;
    将所述BAT的地址与所述功能号的对应关系保存到虚拟机配置表VCT中。
    在第二方面的第一种可能的实施方式中,所述至少一个业务包括待处理业 务,所述方法还包括:
    根据所述待处理业务的业务信息及所述VCT,确定所述待处理业务对应的 BAT的地址;
    根据所述待处理业务对应的BAT的地址、所述待处理业务的业务类型及所 述待处理业务的业务编号,从所述待处理业务所对应的内存中获取所述待处理 业务的工作信息。
    根据第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施 方式中,所述根据所述待处理业务的业务信息及所述VCT,确定所述待处理业 务对应的BAT的地址,包括:
    接收主机侧或者网络侧发送的所述待处理业务的业务信息;
    根据所述主机侧发送的所述待处理业务的业务信息中的特征或者接收所述 主机侧传输所述待处理业务的业务信息时所用的PCIE接口确定所述待处理业务 对应的功能号,所述特征用于指示所述待处理业务对应的功能号;
    根据确定出的所述待处理业务对应的功能号和所述VCT,确定所述待处理 业务对应的功能号所对应的BAT的地址。
    根据第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施 方式中,所述根据所述待处理业务对应的BAT的地址、所述待处理业务的业务 类型及所述待处理业务的业务编号,从所述待处理业务所对应的内存中获取所 述待处理业务的工作信息,包括:
    向确定出的所述待处理业务对应的功能号所对应的虚拟机发送请求消息, 所述请求消息包括所述待处理业务对应的功能号所对应的BAT的地址、所述待 处理业务的业务类型及所述待处理业务的业务编号;
    接收所述待处理业务对应的功能号所对应的虚拟机发送的所述待处理业务 的工作信息,所述待处理业务的工作信息是所述待处理业务对应的功能号所对 应的虚拟机从所述请求消息对应的内存块中获取的。
    根据第二方面的第一种或者二种可能的实施方式,在第二方面的第四种可 能的实施方式中,所述根据所述待处理业务对应的BAT的地址、所述待处理业 务的业务类型及所述待处理业务的业务编号,从所述待处理业务所对应的内存 中获取所述待处理业务的工作信息,包括:
    采用所述待处理业务对应的BAT的地址读取所述待处理业务对应的BAT;
    根据所述待处理业务的业务类型,从所述待处理业务对应的BAT中确定所 述待处理业务的业务类型对应的CLAT表项的基址;
    采用所述待处理业务的业务编号确定表项偏移;
    读取所述待处理业务的业务类型对应的CLAT表项的基址及所述表项偏移 对应的CLAT表项;
    读取所述CLAT表项所对应的内存块中的工作信息。
    根据第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施 方式中,所述CLAT包括:单级CLAT或多级CLAT;所述多级CLAT包括N 级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级CLAT 的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1<N 且n为整数,第N级CLAT的每一条表项分别用于指示一个所述内存块的首地 址。
    根据第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施 方式中,所述待处理业务所分配到的所述多个内存块的大小相同;
    所述采用所述待处理业务的业务编号确定表项偏移,包括:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。
    第三方面,本发明实施例还提供了一种虚拟机内存管理方法,所述方法包 括:
    在热迁移时,目的物理主机中的迁移管理设备获取源物理主机中的虚拟机 的基址表BAT的地址,所述目的物理主机和所述源物理主机分别与不同的快捷 外围部件互连标准PCIE设备连接,所述PCIE设备为一个支持单根输入输出虚 拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一个物理功能PF以及 至少一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一的功能号;
    获取迁移后的虚拟机对应的所述功能号;
    将所述BAT的地址与所述功能号的对应关系配置到与所述目的物理主机连 接的PCIE设备中的虚拟机配置表VCT中。
    第四方面,本发明实施例还提供了一种物理主机,所述物理主机上运行有 虚拟机,所述物理主机与快捷外围部件互连标准PCIE设备连接,所述PCIE设 备为一个支持单根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE设备包 括至少一个物理功能PF以及至少一个虚拟功能VF,其中,每个PF和每个VF 都配置有唯一的功能号,所述虚拟机包括:
    分配模块,用于为所述PCIE设备承载的至少一个业务分配内存,分配给每 个业务的内存均包括多个内存块,所述多个内存块用于保存对应的业务的工作 信息,每个内存块为一段客户机的物理地址连续的内存空间;
    表项生成模块,用于根据分配给所述每个业务的内存,生成基址表BAT和 芯片逻辑地址表CLAT,所述BAT包括与所述每个业务对应的所述CLAT表项 的基址,所述CLAT包括所述每个内存块的首地址;
    发送模块,用于将所述BAT的地址及所述虚拟机对应的功能号发送给所述 PCIE设备。
    在第四方面的第一种可能的实施方式中,所述至少一个业务包括待处理业 务,所述虚拟机还包括:
    接收模块,用于接收所述PCIE设备发送的用于获取所述待处理业务的工作 信息的请求消息,所述请求消息包括所述BAT的地址、所述待处理业务的业务 类型及所述待处理业务的业务编号;
    所述发送模块,还用于根据所述请求消息将所述待处理业务对应的内存块 中的工作信息发送给所述PCIE设备。
    根据第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施 方式中,所述发送模块具体用于:
    获取所述BAT的地址对应的BAT;根据所述待处理业务的业务类型及所述 BAT,确定所述业务类型对应的所述CLAT表项的基址;根据所述待处理业务的 业务编号确定表项偏移;根据所述CLAT表项的基址及所述表项偏移,获取所 述待处理业务对应的CLAT表项;将所述待处理业务对应的CLAT表项所对应 的内存块中的工作信息发送给所述PCIE设备。
    根据第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施 方式中,所述CLAT包括:单级CLAT或多级CLAT;所述多级CLAT包括N 级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级CLAT 的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1<N 且n为整数,第N级CLAT的每一条表项分别用于指示一个所述内存块的首地 址。
    根据第四方面的第三种可能的实施方式,在第四方面的第四种可能的实施 方式中,所述待处理业务所分配到的所述多个内存块的大小相同;
    所述发送模块具体用于:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。
    第五方面,本发明实施例还提供了一种PCIE设备,所述PCIE设备与物理 主机连接,所述物理主机上运行有至少一个虚拟机,所述PCIE设备为一个符合 单根输入输出虚拟化SR-IOV标准的硬件设备,所述PCIE设备包括至少一个物 理功能PF以及至少一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一 的功能号,每个所述虚拟机均包括基址表BAT,所述BAT是各自所属的虚拟机 根据分配给所述PCIE设备承载的至少一个业务的内存生成的,分配给每个业务 的内存均包括多个内存块,所述多个内存块用于保存对应的业务的工作信息, 每个内存块为一段客户机的物理地址连续的内存空间,所述BAT包括与所述每 个业务对应的芯片逻辑地址表CLAT表项的基址,所述CLAT包括所述每个内 存块的首地址,所述PCIE设备还包括:
    接收模块,用于接收各个虚拟机的基址表BAT的地址及所述各个虚拟机对 应的功能号;
    生成模块,用于将所述BAT的地址与所述功能号的对应关系保存到虚拟机 配置表VCT中。
    在第五方面的第一种可能的实施方式中,所述至少一个业务包括待处理业 务,所述PCIE设备还包括:
    确定模块,用于根据所述待处理业务的业务信息及所述VCT,确定所述待 处理业务对应的BAT的地址;
    获取模块,用于根据所述待处理业务对应的BAT的地址、所述待处理业务 的业务类型及所述待处理业务的业务编号,从所述待处理业务所对应的内存中 获取所述待处理业务的工作信息。
    根据第五方面的第一种可能的实施方式,在第五方面的第二种可能的实施 方式中,
    所述接收模块,还用于主机侧或者网络侧发送的所述待处理业务的业务信 息;
    所述确定模块具体用于:
    根据所述主机侧发送的所述待处理业务的业务信息中的特征或者接收所述 主机侧传输所述待处理业务的业务信息时所用的PCIE接口确定待处理业务对应 的功能号,所述特征用于指示所述待处理业务对应的功能号;
    根据确定出的所述待处理业务对应的功能号和所述VCT,确定所述待处理 业务对应的功能号所对应的BAT的地址。
    根据第五方面的第二种可能的实施方式,在第五方面的第三种可能的实施 方式中,所述获取模块具体用于:
    向确定出的所述待处理业务对应的功能号所对应的虚拟机发送请求消息, 所述请求消息包括所述待处理业务对应的功能号所对应的BAT的地址、所述待 处理业务的业务类型及所述待处理业务的业务编号;接收所述待处理业务对应 的功能号所对应的虚拟机发送的所述待处理业务的工作信息,所述待处理业务 的工作信息是所述待处理业务对应的功能号所对应的虚拟机从所述请求消息对 应的内存块中获取的。
    根据第五方面的第一种或第二种可能的实施方式,在第五方面的第四种可 能的实施方式中,所述获取模块具体用于:
    采用所述待处理业务对应的BAT的地址读取所述待处理业务对应的BAT; 根据所述待处理业务的业务类型,从所述待处理业务对应的BAT中确定所述待 处理业务的业务类型对应的CLAT表项的基址;采用所述待处理业务的业务编 号确定表项偏移;读取所述待处理业务的业务类型对应的CLAT表项的基址及 所述表项偏移对应的CLAT表项;读取所述CLAT表项所对应的内存块中的工 作信息。
    根据第五方面的第四种可能的实施方式,在第五方面的第五种可能的实施 方式中,所述CLAT包括:单级CLAT或多级CLAT;所述多级CLAT包括N 级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级CLAT 的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1<N 且n为整数,第N级CLAT的每一条表项分别用于指示一个所述内存块的首地 址。
    根据第五方面的第五种可能的实施方式,在第五方面的第六种可能的实施 方式中,所述待处理业务所分配到的所述多个内存块的大小相同;
    所述获取模块具体用于:
    当所述CLAT为单级CLAT时,将所述待处理业务的业务编号与所述待处 理业务的工作信息所用内存大小相乘,再将相乘的结果除以所述待处理业务所 分配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余 数大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余 数等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当所述CLAT为多级CLAT时,所述表项偏移包括所述每级CLAT的表项 偏移,采用下述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为所述待处理业务的工作 信息所用内存大小,B为所述待处理业务所分配到的内存块的大小,C为一张第 N级CLAT的表项的项数。
    第六方面,本发明实施例还提供了一种迁移管理设备,所述迁移管理设备 设于目的物理主机中,所述迁移管理设备包括:
    第一获取模块,用于在热迁移时,获取源物理主机中的虚拟机的基址表BAT 的地址,所述目的物理主机和所述源物理主机分别与不同的快捷外围部件互连 标准PCIE设备连接,所述PCIE设备为一个支持单根输入输出虚拟化SR-IOV 标准的硬件设备,所述PCIE设备包括至少一个物理功能PF以及至少一个虚拟 功能VF,其中,每个PF和每个VF都配置有唯一的功能号;
    第二获取模块,用于获取迁移后的虚拟机对应的所述功能号;
    配置模块,用于将所述BAT的地址与所述功能号的对应关系配置到与所述 目的物理主机连接的PCIE设备中的虚拟机配置表VCT中。
    第七方面,本发明实施例还提供了一种物理主机,所述物理主机包括:处 理器、存储器、输入输出单元和总线;所述存储器用于存储计算机执行指令, 所述处理器与所述存储器通过所述总线连接,当所述物理主机运行时,所述处 理器执行所述存储器存储的所述计算机执行指令,以使所述计算机执行前述第 一方面或第三方面提供的虚拟机内存管理方法。
    本发明实施例提供的技术方案带来的有益效果是:
    在业务处理时,通过业务报文的特征及业务编号查找内存块中的工作信息, 通过缓存进行读取,操作方便,且速度快;在虚拟机热迁移时,避免了对寄存 器的迁移带来的麻烦,VMM会自动将内存块、BAT和CLAT直接迁移目的虚拟 机上,只需将迁移后虚拟机对应的功能号与源物理主机中虚拟机的BAT首地址 的对应关系配置到迁移后的PCIE适配器的VCT中即可,实现方便、简单,大 大加快虚拟机热迁移的速度,缩短了停机的时间。
    附图说明
    为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
    图1是本发明实施例提供的应用场景图;
    图2是本发明实施例一提供的虚拟机内存管理方法流程图;
    图3是本发明实施例二提供的PCIE设备配置方法流程图;
    图4是本发明实施例三提供的虚拟机内存管理方法流程图;
    图5是本发明实施例四提供的虚拟机内存管理方法流程图;
    图6是本发明实施例四提供的单级CLAT示意图;
    图7是本发明实施例四提供的多级CLAT示意图;
    图8是本发明实施例五提供的物理主机的结构框图;
    图9是本发明实施例六提供的物理主机的结构框图;
    图10是本发明实施例七提供的PCIE设备的结构框图;
    图11是本发明实施例八提供的PCIE设备的结构框图;
    图12是本发明实施例九提供的迁移管理设备的结构框图。
    具体实施方式
    为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。
    为了便于实施例的描述,下面先简单介绍一下本发明实施例的应用场景。 参见图1,一台物理主机上运行有虚拟机管理器VMM和至少一个虚拟机,该 VMM可以管理一个或多个虚拟机,每个虚拟机上可以运行操作系统OS以及各 种应用。物理主机可以与PCIE设备连接,该PCIE设备为一个支持单根输入输 出虚拟化SR-IOV标准的硬件设备。PCIE设备包括至少一个物理功能(英文: Physical function,简称:PF)以及至少一个虚拟功能VF,其中,每个PF和每 个VF都配置有唯一的功能号。虚拟机通过PF或VF执行特定业务,每个PF或 VF与一个虚拟机相对应,PF或VF的功能号与虚拟机的对应关系可以保存在 PCIE设备中。
    物理主机包括跟运行虚拟机相关的硬件,例如CPU及至少一个计算机可读 存储介质的存储器(硬盘、内存等)。除此之外,该物理主机还可以包括通信单 元、输入单元、显示单元等。前述PCIE设备可以是PCIE适配器,例如网卡适 配器、显卡等。
    物理主机还可以包括迁移管理设备,在虚拟机热迁移时,由源物理主机上 的迁移管理设备将内存中存储的数据迁移到目标物理主机中。在一种实现方式 中,迁移管理设备可以由前述VMM实现。
    需要说明的是,以上所述的设备种类及连接方式仅为举例,本发明对此不 作限制。
    实施例一
    本发明实施例提供了一种虚拟机内存管理方法,该方法由前述至少一个虚 拟机中的一个来执行,参见图2,该方法包括:
    步骤101:虚拟机为PCIE设备承载的至少一个业务分配内存,分配给每个 业务的内存均包括多个内存块,前述多个内存块用于保存对应的业务的工作信 息,每个内存块为一段客户机的物理地址连续的内存空间。
    步骤102:虚拟机根据分配给每个业务的内存,生成基址表(英文:Base  Address Table,简称:BAT)和芯片逻辑地址表(英文:Chip Logic Address Table, 简称:CLAT),该BAT包括与每个业务对应的CLAT表项的基址,该CLAT包 括每个内存块的首地址。
    步骤103:虚拟机将BAT的地址及虚拟机对应的功能号发送给PCIE设备, 该PCIE设备用于记录BAT的地址与功能号的对应关系,并根据BAT的地址与 功能号的对应关系,从虚拟机中获取业务的工作信息。
    其中,该BAT的地址与功能号的对应关系可以保存在虚拟机配置表(英文: VM Configuration Table,简称:VCT)中。
    在本发明实施例中,虚拟机为PCIE设备承载的至少一个业务分配内存,然 后根据分配给每个业务的内存生成BAT和CLAT,再将BAT的地址及功能号发 送给PCIE设备,使得PCIE设备可以记录BAT的地址与功能号的对应关系,在 业务处理时,PCIE设备根据BAT的地址与功能号的对应关系,从虚拟机中获取 业务的工作信息,操作方便,且速度快;在虚拟机热迁移时,避免了对寄存器 的迁移带来的麻烦,只需将内存块、BAT和CLAT直接迁移到目的物理机上, 再将迁移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关 系配置到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟 机热迁移的速度,缩短了停机的时间。
    实施例二
    本发明实施例提供了一种PCIE设备配置方法,该方法由前述PCIE设备执 行,参见图3,该方法包括:
    步骤201:PCIE设备接收各个虚拟机的BAT的地址及各个虚拟机对应的功 能号,每个上述虚拟机均包括基址表BAT,该BAT是各自所属的虚拟机根据分 配给PCIE设备承载的至少一个业务的内存生成的,分配给每个业务的内存均包 括多个内存块,前述多个内存块用于保存对应的业务的工作信息,每个内存块 为一段客户机的物理地址连续的内存空间,该BAT包括与每个业务对应的CLAT 表项的基址,该CLAT包括每个内存块的首地址。
    步骤202:将BAT的地址与功能号的对应关系保存到虚拟机配置表VCT中, 该VCT包括功能号与BAT的地址的对应关系。
    在本发明实施例中,PCIE设备接收BAT的地址及功能号,并将BAT的地 址与功能号的对应关系保存到虚拟机配置表VCT中,在业务处理时,PCIE设备 根据BAT的地址与功能号的对应关系,从虚拟机中获取业务的工作信息,操作 方便,且速度快;在虚拟机热迁移时,避免了对寄存器的迁移带来的麻烦,只 需将内存块、BAT和CLAT直接迁移到目的物理主机上,再将迁移后虚拟机对 应的功能号与源物理主机中虚拟机的BAT的地址的对应关系配置到迁移后的 PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟机热迁移的速度,缩 短了停机的时间。
    实施例三
    本发明实施例提供了一种虚拟机内存管理方法,该方法由前述迁移管理设 备执行,参见图4,该方法包括:
    步骤301:在热迁移时,目的物理主机中的迁移管理设备获取源物理主机中 的虚拟机的基址表BAT的地址,前述目的物理主机和源物理主机分别与不同的 快捷外围部件互连标准PCIE设备连接,该PCIE设备为一个支持单根输入输出 虚拟化SR-IOV标准的硬件设备,PCIE设备包括至少一个物理功能PF以及至少 一个虚拟功能VF,其中,每个PF和每个VF都配置有唯一的功能号。
    本实施例中迁移管理设备可以为VMM。
    步骤302:迁移管理设备获取迁移后的虚拟机对应的功能号。
    步骤303:迁移管理设备将BAT的地址与功能号的对应关系配置到与目的 物理主机连接的PCIE设备中的虚拟机配置表VCT中。
    本发明实施例在进行虚拟机热迁移时,避免了对寄存器的迁移带来的麻烦, 在迁移过程中自动将内存块、BAT和CLAT直接迁移到目的物理机上,再将迁 移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关系配置 到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟机热迁 移的速度,缩短了停机的时间。
    实施例四
    本发明实施例提供了一种虚拟机内存管理方法,参见图5,该方法包括:
    步骤401:虚拟机为PCIE设备承载的至少一个业务分配内存,分配给每个 业务的内存均包括多个内存块,前述多个内存块用于保存对应的业务的工作信 息,每个内存块为一段客户机的物理地址(英文:Guest Physical Address,简称: GPA)连续的内存空间。
    在虚拟机启动时,虚拟机为PCIE设备申请物理主机的内存,然后将申请到 的内存分配给业务。具体地,在接到虚拟机的申请后,物理主机中的PCIE设备 驱动为虚拟机分配内存,其中,物理主机中的PCIE设备驱动是指在安装在物理 主机的硬盘内用于驱动PCIE设备工作的驱动程序。
    在本实施例中,业务的工作信息可以为配置信息、上下文表、业务资源或 者环境表。其中,上下文表记录了该业务的各种状态,如运行状态、列队状态、 定时器状态和统计状态等。
    在本实施例中,虚拟机为每个业务分配的内存块的大小固定且GPA连续, 即每个业务所分配到的多个内存块的大小相同。具体地,一个业务可以单独占 用一个内存块,也可以由多个业务共同占用一个内存块。另外,在本实施例中, 内存块的大小最小为内存页大小,通常是4K。
    步骤402:虚拟机根据分配给每个业务的内存,生成基址表BAT和芯片逻 辑地址表CLAT,该BAT包括与每个业务对应的CLAT表项的基址,该CLAT 包括每个内存块的首地址。
    在CLAT中,如果存在多个相同业务类型的业务时,为了对同一业务类型 的多个业务进行区分,可以为每个业务分配一个业务编号。该业务编号可以用 来进行CLAT表项偏移的计算,具体见后文。
    这里的业务类型为PCIE设备可执行的业务的类型,例如在网卡适配器内执 行的卸载业务、分段业务及校验业务等。
    进一步地,在步骤401中为业务分配内存时,还可以为BAT和CLAT分配 内存块。内存块的首地址的位数是固定的,因此,内存块的首地址的字节数也 是固定的。例如内存块的首地址的位数为64位,每个内存块的首地址占用的字 节数为8B,因此如果分配给CLAT的内存的大小为4K时,每张CLAT的项数 的最大值为4K/8=512。当一张CLAT的项数不够用时,则需要通过构建多级 CLAT来实现内存块的首地址的存储。即CLAT可以包括:单级CLAT或多级 CLAT。其中,多级CLAT包括N级CLAT,其中,N≥2且N为整数,每级CLAT 均包括多条表项,第n级CLAT的每一条表项分别用于指示一个第n+1级CLAT 的地址,其中,2≤n<n+1<N且n为整数,第N级CLAT的每一条表项分别用 于指示一个内存块的首地址。
    如图6所示,在前述单级CLAT中,CLAT的每一项对应一个内存块。
    如图7所示,在前述多级CLAT中,以二级CLAT为例,一级CLAT的一 项对应二级CLAT的多个项,二级CLAT的一项对应一个内存块。
    因此,前述BAT还可以包括CLAT表项大小(即分配给CLAT的内存块的 大小)、内存块的大小以及CLAT的级数等。
    步骤403:虚拟机将BAT的地址及该虚拟机对应的功能号发送给PCIE设备。
    其中,该BAT的地址可以为BAT的首地址。该功能号为虚拟机对应的PF 或者VF的功能号。
    具体地,虚拟机对应的PF或者VF的功能号可以由虚拟机自行指定,也可 以由VMM为其指定。因此,步骤403也可以由VMM执行。
    进一步地,在本实施例中,虚拟机还可以将BAT的地址与功能号的对应关 系保存起来,供后续使用。
    步骤404:PCIE设备接收各个虚拟机的BAT的地址及各个虚拟机对应的功 能号,将BAT的地址与功能号的对应关系保存到虚拟机配置表VCT中,VCT 包括功能号与BAT的地址的对应关系。
    其中,VCT保存在PCIE设备(如网卡适配器)之中,BAT和CLAT保存 在虚拟机之中。具体地,该VCT可以是事先生成的,PCIE设备在接收到BAT 的地址及功能号后,将BAT的地址及功能号写入其中。更具体地,VCT可以由 VMM或者PCIE生成。
    具体地,前述BAT的地址既可以是物理主机的物理地址(也称主机的物理 地址,英文:Host Physical Address,简称HPA),也可以是虚拟机的物理地址(也 称GPA),如果是GPA的话,PCIE设备访问该地址时,需要先使用CPU的VT-D (Intel公司的技术)或IOMMU(AMD公司的技术),或者其它的能够自动实 现GPA到HPA地址转换的技术,实现GPA到HPA的转换。
    步骤405:PCIE设备根据待处理业务的业务信息及VCT,确定待处理业务 对应的BAT的地址,前述至少一个业务包括待处理业务。
    其中,该待处理业务的业务信息包括主机侧发送的业务信息或网络侧发送 的业务信息。主机侧发送的业务信息通常为业务数据,网络侧发送的业务信息 通常为业务报文。
    具体地,步骤405可以采用下述方式实现:
    接收主机侧或者网络侧发送待处理业务的业务信息。
    根据主机侧发送的待处理业务的业务信息中的特征或者接收主机侧传输待 处理业务的业务信息时所用的PCIE接口确定待处理业务的对应的功能号,该特 征用于指示待处理业务所对应的功能号。
    根据确定出的待处理业务对应的功能号和VCT,确定待处理业务对应的功 能号所对应的BAT的地址。
    在本实施例中,网络侧发送的业务报文中的特征可以是业务报文中的一个 字段,根据PCIE设备的类型不同,可以采用不同的字段作为此处的特征。例如, PCIE设备为网卡适配器时,可以采用目的介质访问控制(英文:Media Access  Control,简称:MAC)地址作为特征,即在接收到业务报文时,网卡适配器可 以根据业务报文中的目的MAC地址确定对应的功能号。而对于主机侧发送业务 数据,根据接收主机侧传输的业务数据时所用的PCIE接口即可确定。
    其中,主机侧是指物理主机中CPU、内存和硬盘组成的系统。网络侧是指 物理主机所连接的外部网络侧。
    步骤406:PCIE设备根据待处理业务对应的BAT的地址、待处理业务的业 务类型及待处理业务的业务编号,从待处理业务所对应的内存中获取待处理业 务的工作信息。
    在本实施例中,步骤406可以采用下述两种方式实现:
    第一种实现方式:
    第一步,PCIE设备向确定出的待处理业务对应的功能号所对应的虚拟机发 送请求消息,请求消息包括待处理业务对应的功能号所对应的BAT的地址、待 处理业务的业务类型及待处理业务的业务编号。业务类型为PCIE设备接收到的 业务报文或业务数据所对应的业务的类型。其中,业务报文所对应的业务即是 该业务报文所承载的业务,业务数据所对应的业务是PCIE设备对该业务数据进 行处理后得到的业务报文承载的业务。
    第二步,虚拟机接收PCIE设备发送的用于获取待处理业务的工作信息的请 求消息。
    第三步,虚拟机根据请求消息将待处理业务对应的内存块中的工作信息发 送给PCIE设备。
    具体地,该步骤可以包括:
    步骤一、虚拟机获取BAT的地址对应的BAT。
    进一步地,请求消息中还可以不包括BAT的地址,只需携带功能号即可, 虚拟机根据功能号及自身存储的BAT的地址与功能号的对应关系,获取BAT。
    步骤二、虚拟机根据待处理业务的业务类型及BAT,确定业务类型对应的 CLAT表项的基址。
    步骤三、虚拟机根据待处理业务的业务编号确定表项偏移。
    具体地,待处理业务所分配到的多个内存块的大小相同,虚拟机采用以下 方式计算表项偏移:当CLAT为单级CLAT时,将待处理业务的业务编号与待 处理业务的工作信息所用内存大小相乘,再将相乘的结果除以待处理业务所分 配到的内存块的大小,得到单级CLAT的商和余数,当所述单级CLAT的余数 大于0时,所述表项偏移等于所述单级CLAT的商,当所述单级CLAT的余数 等于0时,所述表项偏移等于所述单级CLAT的商减1;
    当CLAT为多级CLAT时,表项偏移包括每级CLAT的表项偏移,采用下 述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为待处理业务的工作信息 所用内存大小,B为待处理业务所分配到的内存块的大小,C为一张第N级CLAT 的表项的项数。
    当第x级CLAT的表项偏移为0时,表示对应的为第x级CLAT中的第1 个表项,当第x级CLAT的表项偏移为1时,表示对应的为第x级CLAT中的 第2个表项,……依此类推。
    需要说明的是,第N级(即最后一级CLAT)CLAT的余数用于指示确定出 的内存块中的与该业务编号对应的工作信息。当第N项CLAT的余数等于0时, 该业务编号对应的工作信息为确定出的内存块中的最后一个工作信息,当第N 项CLAT的余数大于0时,该业务编号对应的工作信息为确定出的内存块中的 第m个工作信息,m等于第N项CLAT的余数。
    下面通过举例对表项偏移的计算进行说明:例如,每个所用内存大小为1KB, 内存块的大小为4KB,内存块的首地址的位数为64位,分配给CLAT的内存块 的大小也是4KB。
    对于单级CLAT而言:假设虚拟机中有2K个业务,在步骤401中为这2K 个业务分配了512个4K大小的内存块。在一张CLAT中存放这512个内存块的 首地址。当接收到的请求消息中的业务编号为100时,计算表项偏移:100× 1K/4K=25,商为25,余数为0,则表项偏移为24,业务编号为100的业务对应 的工作信息为第25个表项对应的内存块中的最后一个工作信息。
    对于多级CLAT而言:假设虚拟机中有16K个业务,2级CLAT可以支持 512*512*4=1M个业务。因此,如果要支持16K个业务,使用2级CLAT时, 第1级CLAT只需要有8个表项即可。虚拟机启动时,这16K个业务分配了4K 个4K大小的内存块,然后采用1个4K大小的内存块生成第1级CLAT,8个 4K大小的内存块生成第2级CLAT。
    当接收到的请求消息中的业务编号为2054时,计算第1级CLAT的表项偏 移:2054*1024/4096/5122-1=1余6,则第1级CLAT的表项偏移为1,即确定出 第1级CLAT的表项为第2项,计算第2级CLAT的表项偏移:6*1024/4096/5122-2= 1余2,则第2级CLAT的表项偏移为1。则业务编号为2054的业务对应的工作 信息为第2级CLAT中第2个表项对应的内存块中的第2个工作信息。
    其中,业务编号是每个业务开始时分配好的,例如,在传输控制协议(英 文:Transmission Control Protocol,简称:TCP)业务中,在TCP连接建立时, 即为该业务分配好业务编号,业务编号可以从1或0开始按序分配。前述公式 按照业务编号从1开始按需分配计算,当业务编号从0开始分配时,需要在业 务编号的基础上加1然后再计算。在本步骤前,主机侧将业务数据发送至PCIE 设备时,将该业务数据对应的业务编号发送给PCIE设备。而业务报文的业务编 号,在该业务建立时已经确定,PCIE设备可以将其保存起来使用。
    步骤四、虚拟机根据CLAT表项的基址及表项偏移,获取待处理业务对应 的CLAT表项。
    步骤五、虚拟机将待处理业务对应的CLAT表项所对应的内存块中的工作 信息发送给PCIE设备。
    进一步地,在本步骤中,虚拟机将该内存块中的工作信息写入PCIE设备的 缓存中,PCIE设备从缓存中读取该内存块中的工作信息。从而可以加快数据的 读取效率,从而提高业务处理速度。
    进一步地,虚拟机在发送BAT以及CLAT表项给PCIE设备时,也可以将 BAT以及CLAT表项写入PCIE设备的缓存中,从而方便后续PCIE设备的使用。
    第四步,PCIE设备接收虚拟机发送的工作信息,该工作信息是虚拟机从请 求消息对应的内存块中获取的。
    第二种实现方式:
    第一步,PCIE设备采用待处理业务对应的BAT的地址读取待处理业务对应 的BAT。
    第二步,PCIE设备根据待处理业务的业务类型,从待处理业务对应的BAT 中确定待处理业务的业务类型对应的CLAT表项的基址。
    第三步,PCIE设备采用待处理业务的业务编号确定表项偏移。
    本步骤中表项偏移的确定方式可以与第一种实现方式相同,这里不再赘述。
    第四步,PCIE设备读取待处理业务的业务类型对应的CLAT表项的基址及 表项偏移对应的CLAT表项。
    第五步,PCIE设备读取CLAT表项所对应的内存块中的工作信息。
    在本步骤中,PCIE设备可将该内存块中的工作信息读到PCIE设备的缓存 中,方便后续使用,从而提高业务处理速度。
    在本发明实施例中,第二种实现方式可以由PCIE设备中的直接内存访问(英 文:Direct Memory Access,简称:DMA)读写模块执行。
    步骤407:PCIE设备根据该工作信息对业务信息进行处理。
    具体地,在进行报文处理时,由前述功能号对应的VF来执行处理。
    步骤408:在进行热迁移时,源物理主机上的迁移管理设备将源物理主机中 内存块、BAT和CLAT直接迁移到目的物理上。
    目的物理主机和源物理主机分别与不同的快捷外围部件互连标准PCIE设备 连接,PCIE设备为一个支持单根输入输出虚拟化SR-IOV标准的硬件设备,PCIE 设备包括至少一个物理功能PF以及至少一个虚拟功能VF,其中,每个PF和每 个VF都配置有唯一的功能号。
    进一步地,源物理主机上的迁移管理设备还将与源物理主机连接的PCIE设 备缓存中的数据写入目的物理主机的内存之中。
    步骤409:目的物理主机上的迁移管理设备将源物理主机中的虚拟机的基址 表BAT的地址与迁移后虚拟机对应的功能号的对应关系,配置到目的物理主机 连接的PCIE设备中的虚拟机配置表VCT中。
    具体地,目的物理主机中的迁移管理设备获取源物理主机中的虚拟机的基 址表BAT的地址以及迁移后目的虚拟机对应的功能号(该功能号可以由虚拟机 自己指定,也可以由VMM为其分配);目的物理主机中的迁移管理设备将BAT 的地址以及迁移后目的虚拟机对应的功能号发送给PCIE设备;与目的物理主机 连接的PCIE设备将BAT的地址与功能号的对应关系保存到虚拟机配置表VCT 中。
    在本实施例中,该迁移管理设备可以为VMM。
    在本发明实施例中,虚拟机为PCIE设备承载的至少一个业务分配内存,然 后根据分配给每个业务的内存生成BAT和CLAT,再将BAT的地址及功能号发 送给PCIE设备,使得PCIE设备可以记录BAT的地址与功能号的对应关系,在 业务处理时,PCIE设备根据BAT的地址与功能号的对应关系,从虚拟机中获取 业务的工作信息,操作方便,且速度快;在虚拟机热迁移时,避免了对寄存器 的迁移带来的麻烦,只需将内存块、BAT和CLAT直接迁移到目的物理机上, 再将迁移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关 系配置到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟 机热迁移的速度,缩短了停机的时间。
    实施例五
    本发明实施例提供了一种物理主机,适用于实施例一中提供的方法,参见 图8,该物理主机51上运行有虚拟机510,物理主机51与快捷外围部件互连标 准PCIE设备52连接,该PCIE设备52为一个支持单根输入输出虚拟化SR-IOV 标准的硬件设备,PCIE设备52包括至少一个物理功能PF 521以及至少一个虚 拟功能VF 522,每个PF 521和VF 522都配置有唯一的功能号,前述虚拟机510 包括:
    分配模块511,用于为PCIE设备承载的至少一个业务分配内存,分配给每 个业务的内存均包括多个内存块,前述多个内存块用于保存对应的业务的工作 信息,每个内存块为一段客户机的物理地址连续的内存空间。
    表项生成模块512,用于根据分配给每个业务的内存,生成基址表BAT和 芯片逻辑地址表CLAT,BAT包括与每个业务对应的CLAT表项的基址,CLAT 包括每个内存块的首地址。
    发送模块513,用于将BAT的地址及虚拟机对应的功能号发送给PCIE设备, PCIE设备用于记录BAT的地址与功能号的对应关系,并根据BAT的地址与功 能号的对应关系,从虚拟机中获取业务的工作信息。
    在本发明实施例中,虚拟机为PCIE设备承载的至少一个业务分配内存,然 后根据分配给每个业务的内存生成BAT和CLAT,再将BAT的地址及功能号发 送给PCIE设备,使得PCIE设备可以记录BAT的地址与功能号的对应关系,在 业务处理时,PCIE设备根据BAT的地址与功能号的对应关系,从虚拟机中获取 业务的工作信息,操作方便,且速度快;在虚拟机热迁移时,避免了对寄存器 的迁移带来的麻烦,只需将内存块、BAT和CLAT直接迁移到目的物理机上, 再将迁移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关 系配置到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟 机热迁移的速度,缩短了停机的时间。
    实施例六
    本发明实施例提供了一种物理主机,适用于实施例四中提供的方法,参见 图9,该物理主机61上运有虚拟机610,物理主机61与快捷外围部件互连标准 PCIE设备62连接,该PCIE设备62为一个支持单根输入输出虚拟化SR-IOV 标准的硬件设备,PCIE设备62包括至少一个物理功能PF 621以及至少一个虚 拟功能VF 622,每个PF 621和VF 622都配置有唯一的功能号,前述虚拟机610 包括:
    分配模块611,用于为PCIE设备承载的至少一个业务分配内存,分配给每 个业务的内存均包括多个内存块,前述多个内存块用于保存对应的业务的工作 信息,每个内存块为一段客户机的物理地址连续的内存空间。
    在虚拟机610启动时,虚拟机610为PCIE设备62申请物理主机的内存, 然后将申请到的内存分配给业务。具体地,在接到虚拟机的申请后,物理主机 61中的PCIE设备驱动为虚拟机分配内存,其中,物理主机61中的PCIE设备 驱动是指在安装在物理主机的硬盘内用于驱动PCIE设备工作的驱动程序。
    在本实施例中,业务的工作信息可以为配置信息、上下文表、业务资源或 者环境表。其中,上下文表记录了该业务的各种状态,如运行状态、列队状态、 定时器状态和统计状态等。
    在本实施例中,虚拟机610为每个业务分配的内存块的大小固定且GPA连 续,即每个业务所分配到的多个内存块的大小相同。具体地,一个业务可以单 独占用一个内存块,也可以由多个业务共同占用一个内存块。另外,在本实施 例中,内存块的大小最小为内存页大小,通常是4K。
    表项生成模块612,用于根据分配给每个业务的内存,生成基址表BAT和 芯片逻辑地址表CLAT,BAT包括与每个业务对应的CLAT表项的基址,CLAT 包括每个内存块的首地址。具体地,BAT的首地址既可以是物理主机的物理地 址(HPA),也可以是虚拟机的物理地址(GPA),如果是GPA的话,PCIE适配 器访问该地址时,需要先使用CPU的VT-D(Intel公司的技术)或IOMMU(AMD 公司的技术),或者其它的能够自动实现GPA到HPA地址转换的技术,实现GPA 到HPA的转换。
    在CLAT中,如果存在多个相同业务类型的业务时,为了对同一业务类型 的多个业务进行区分,可以为每个业务分配一个业务编号。该业务编号可以用 来进行CLAT表项偏移的计算,具体见后文。
    这里的业务类型为PCIE设备62可执行的业务的类型,例如在网卡适配器 内执行的卸载业务、分段业务及校验业务等。
    进一步地,分配模块611还可以为BAT和CLAT分配内存块。内存块的首 地址的位数是固定的,因此,内存块的首地址的字节数也是固定的。例如内存 块的首地址的位数为64位,每个内存块的首地址占用的字节数为8B,因此如果 分配给CLAT的内存的大小为4K时,每张CLAT的项数的最大值为4K/8=512。 当一张CLAT的项数不够用时,则需要通过构建多级CLAT来实现内存块的首 地址的存储。即CLAT可以包括:单级CLAT或多级CLAT。其中,多级CLAT 包括N级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n 级CLAT的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n <n+1<N且n为整数,第N级CLAT的每一条表项分别用于指示一个内存块的 首地址。
    如图6所示,在前述单级CLAT中,CLAT的每一项对应一个内存块。
    如图7所示,在前述多级CLAT中,以二级CLAT为例,一级CLAT的一 项对应二级CLAT的多个项,二级CLAT的一项对应一个内存块。
    因此,前述BAT还可以包括CLAT表项大小(分配给CLAT的内存块的大 小)、内存块的大小以及CLAT的级数等。
    发送模块613,用于将BAT的地址及虚拟机对应的功能号发送给PCIE设备, PCIE设备用于记录BAT的地址与功能号的对应关系,并根据BAT的地址与功 能号的对应关系,从虚拟机中获取业务的工作信息。
    其中,该BAT的地址可以为BAT的首地址。该功能号为虚拟机对应的PF 或者VF的功能号。虚拟机对应的PF或者VF的功能号可以由虚拟机自行指定, 也可以由VMM为其指定。
    进一步地,该虚拟机610还可以包括:
    接收模块614,用于接收PCIE设备发送的用于获取待处理业务的工作信息 的请求消息,请求消息包括BAT的地址、待处理业务的业务类型及待处理业务 的业务编号;
    发送模块613,还用于根据请求消息将待处理业务对应的内存块中的工作信 息发送给PCIE设备。
    在本实施例中,上述发送模块613具体可用于:
    获取BAT的地址对应的BAT;根据待处理业务的业务类型及BAT,确定业 务类型对应的CLAT表项的基址;根据待处理业务的业务编号确定表项偏移; 根据CLAT表项的基址及表项偏移,获取待处理业务对应的CLAT表项;将待 处理业务对应的CLAT表项所对应的内存块中的工作信息发送给PCIE设备。
    进一步地,虚拟机610将该内存块中的工作信息写入PCIE设备的缓存中, PCIE设备从缓存中读取该内存块中的工作信息。从而可以加快数据的读取效率, 从而提高业务处理速度。
    进一步地,虚拟机610在发送BAT以及CLAT表项给PCIE设备时,也可 以将BAT以及CLAT表项写入PCIE设备的缓存中,从而方便后续PCIE设备的 使用。
    进一步地,待处理业务所分配到的多个内存块的大小相同;
    上述发送模块具体可用于:
    当CLAT为单级CLAT时,将待处理业务的业务编号与待处理业务的工作 信息所用内存大小相乘,再将相乘的结果除以待处理业务所分配到的内存块的 大小,得到单级CLAT的商和余数,当所述单级CLAT的余数大于0时,所述 表项偏移等于所述单级CLAT的商,当所述单级CLAT的余数等于0时,所述 表项偏移等于所述单级CLAT的商减1;
    当CLAT为多级CLAT时,表项偏移包括每级CLAT的表项偏移,采用下 述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为待处理业务的工作信息 所用内存大小,B为待处理业务所分配到的内存块的大小,C为一张第N级CLAT 的表项的项数。
    当第x级CLAT的表项偏移为0时,表示对应的为第x级CLAT中的第1 个表项,当第x级CLAT的表项偏移为1时,表示对应的为第x级CLAT中的 第2个表项,……依此类推。
    需要说明的是,第N级(即最后一级CLAT)CLAT的余数用于指示确定出 的内存块中的与该业务编号对应的工作信息。当第N项CLAT的余数等于0时, 该业务编号对应的工作信息为确定出的内存块中的最后一个工作信息,当第N 项CLAT的余数大于0时,该业务编号对应的工作信息为确定出的内存块中的 第m个工作信息,m等于第N项CLAT的余数。
    具体例子参见实施例四步骤406,在此省略详细描述。
    在本发明实施例中,虚拟机为PCIE设备承载的至少一个业务分配内存,然 后根据分配给每个业务的内存生成BAT和CLAT,再将BAT的地址及功能号发 送给PCIE设备,使得PCIE设备可以记录BAT的地址与功能号的对应关系,在 业务处理时,PCIE设备根据BAT的地址与功能号的对应关系,从虚拟机中获取 业务的工作信息,操作方便,且速度快;在虚拟机热迁移时,避免了对寄存器 的迁移带来的麻烦,只需将内存块、BAT和CLAT直接迁移到目的物理机上, 再将迁移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关 系配置到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟 机热迁移的速度,缩短了停机的时间。
    实施例七
    本发明实施例提供了一种PCIE适配器,适用于实施例二中提供的方法,参 见图10,该PCIE设备71与物理主机72连接,该物理主机72上运行有至少一 个虚拟机720,PCIE设备为一个符合单根输入输出虚拟化SR-IOV标准的硬件 设备,PCIE设备71包括至少一个物理功能PF 711以及至少一个虚拟功能VF 712,每个PF 711和VF 712都配置有唯一的功能号,每个虚拟机720均包括基 址表BAT,BAT是各自所属的虚拟机根据分配给PCIE设备承载的至少一个业 务的内存生成的,分配给每个业务的内存均包括多个内存块,前述多个内存块 用于保存对应的业务的工作信息,每个内存块为一段客户机的物理地址连续的 内存空间,BAT包括与每个业务对应的CLAT表项的基址,CLAT包括每个内存 块的首地址,该PCIE设备71还包括:
    接收模块713,用于接收各个虚拟机的基址表BAT的地址及各个虚拟机对 应的功能号。
    生成模块714,用于将BAT的地址与功能号的对应关系保存到虚拟机配置 表VCT中,VCT包括功能号与BAT的地址的对应关系。
    在本发明实施例中,PCIE设备接收BAT的地址及功能号,并将BAT的地 址与功能号的对应关系保存到虚拟机配置表VCT中,在业务处理时,PCIE设备 根据BAT的地址与功能号的对应关系,从虚拟机中获取业务的工作信息,操作 方便,且速度快;在虚拟机热迁移时,避免了对寄存器的迁移带来的麻烦,只 需将内存块、BAT和CLAT直接迁移到目的物理主机上,再将迁移后虚拟机对 应的功能号与源物理主机中虚拟机的BAT的地址的对应关系配置到迁移后的 PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟机热迁移的速度,缩 短了停机的时间。
    实施例八
    本发明实施例提供了一种PCIE适配器,适用于实施例四中提供的方法,参 见图11,该PCIE设备81与物理主机82连接,该物理主机82上运行有至少一 个虚拟机820,PCIE设备为一个符合单根输入输出虚拟化SR-IOV标准的硬件 设备,PCIE设备81包括至少一个物理功能PF 811以及至少一个虚拟功能VF 812,每个PF 811和VF 812都配置有唯一的功能号,每个虚拟机820均包括基 址表BAT,BAT是各自所属的虚拟机根据分配给PCIE设备承载的至少一个业 务的内存生成的,分配给每个业务的内存均包括多个内存块,前述多个内存块 用于保存对应的业务的工作信息,每个内存块为一段客户机的物理地址连续的 内存空间,BAT包括与每个业务对应的CLAT表项的基址,CLAT包括每个内存 块的首地址,该PCIE设备81还包括:
    接收模块813,用于接收各个虚拟机的基址表BAT的地址及各个虚拟机对 应的功能号。
    生成模块814,用于将BAT的地址与功能号的对应关系保存到虚拟机配置 表VCT中,VCT包括功能号与BAT的地址的对应关系。
    其中,VCT保存在PCIE设备(如网卡适配器)之中,BAT和CLAT保存 在虚拟机之中。具体地,该VCT可以是事先生成的,PCIE设备在接收到BAT 的地址及功能号后,将BAT的地址及功能号写入其中。更具体地,VCT可以由 VMM或者PCIE生成。
    具体地,前述BAT的地址既可以是HPA,也可以是GPA,如果是GPA的 话,PCIE设备访问该地址时,需要先使用CPU的VT-D(Intel公司的技术)或 IOMMU(AMD公司的技术),或者其它的能够自动实现GPA到HPA地址转换 的技术,实现GPA到HPA的转换。
    进一步地,PCIE设备81还可以包括:
    确定模块815,用于根据待处理业务的业务信息及VCT,确定待处理业务 对应的BAT的地址。
    其中,该业务信息包括主机侧发送的业务信息或网络侧发送的业务信息。 主机侧发送的业务信息通常为业务数据,网络侧发送的业务信息通常为业务报 文。
    获取模块816,用于根据待处理业务对应的BAT的地址、待处理业务的业 务类型及待处理业务的业务编号,从待处理业务所对应的内存中获取待处理业 务的工作信息。
    在本发明实施例中,上述接收模块813,还可用于主机侧或者网络侧发送的 业务信息;
    上述确定模块815具体可用于:
    根据主机侧发送的待处理业务的业务信息中的特征或者接收主机侧传输待 处理业务的业务信息时所用的PCIE接口确定待处理业务的对应的功能号,该特 征用于指示待处理业务所对应的功能号;
    根据确定出的待处理业务对应的功能号和VCT,确定待处理业务对应的功 能号所对应的BAT的地址。
    在本实施例中,网络侧发送的业务报文中的特征可以是业务报文中的一个 字段,根据PCIE设备的类型不同,可以采用不同的字段作为此处的特征。例如, PCIE设备为网卡适配器时,可以采用目的MAC地址作为特征,即在接收到业 务报文时,网卡适配器可以根据业务报文中的目的MAC地址确定对应的功能 号。而对于主机侧发送业务数据,根据接收主机侧传输的业务数据时所用的PCIE 接口即可确定。
    其中,主机侧是指物理主机中CPU、内存和硬盘组成的系统。网络侧是指 物理主机所连接的外部网络侧。
    在本发明实施例的一种实现方式中,上述获取模块816具体可用于:
    向确定出的待处理业务对应的功能号所对应的虚拟机发送请求消息,请求 消息包括待处理业务对应的功能号所对应的BAT的地址、待处理业务的业务类 型及待处理业务的业务编号;接收待处理业务对应的功能号所对应的虚拟机发 送的待处理业务的工作信息,待处理业务的工作信息是待处理业务对应的功能 号所对应的虚拟机从请求消息对应的内存块中获取的。
    业务类型为PCIE设备接收到的业务报文或业务数据所对应的业务的类型。 其中,业务报文所对应的业务即是该业务报文所承载的业务,业务数据所对应 的业务是PCIE设备对该业务数据进行处理后得到的业务报文承载的业务。
    在本发明实施例的另一种实现方式中,上述获取模块816具体可用于:
    采用待处理业务对应的BAT的地址读取待处理业务对应的BAT;根据待处 理业务的业务类型,从待处理业务对应的BAT中确定待处理业务的业务类型对 应的CLAT表项的基址;采用待处理业务的业务编号确定表项偏移;读取待处 理业务的业务类型对应的CLAT表项的基址及表项偏移对应的CLAT表项;读 取CLAT表项所对应的内存块中的工作信息。
    在本发明实施例中,CLAT包括:单级CLAT或多级CLAT;多级CLAT包 括N级CLAT,其中,N≥2且N为整数,每级CLAT均包括多条表项,第n级 CLAT的每一条表项分别用于指示一个第n+1级CLAT的地址,其中,2≤n<n+1 <N且n为整数,第N级CLAT的每一条表项分别用于指示一个内存块的首地 址。
    在本发明实施例中,待处理业务所分配到的多个内存块的大小相同;
    上述获取模块816具体可以用于:
    当CLAT为单级CLAT时,将待处理业务的业务编号与待处理业务的工作 信息所用内存大小相乘,再将相乘的结果除以待处理业务所分配到的内存块的 大小,得到单级CLAT的商和余数,当所述单级CLAT的余数大于0时,所述 表项偏移等于所述单级CLAT的商,当所述单级CLAT的余数等于0时,所述 表项偏移等于所述单级CLAT的商减1;
    当CLAT为多级CLAT时,表项偏移包括每级CLAT的表项偏移,采用下 述方式计算第x级CLAT的表项偏移:

    当所述第x级CLAT的余数大于0时,所述第x级CLAT的表项偏移等于 所述第x级CLAT的商,当所述第x级CLAT的余数等于0时,所述第x级CLAT 的表项偏移等于所述第x级CLAT的商减1,其中,A为待处理业务的工作信息 所用内存大小,B为待处理业务所分配到的内存块的大小,C为一张第N级CLAT 的表项的项数。
    当第x级CLAT的表项偏移为0时,表示对应的为第x级CLAT中的第1 个表项,当第x级CLAT的表项偏移为1时,表示对应的为第x级CLAT中的 第2个表项,……依此类推。
    需要说明的是,第N级(即最后一级CLAT)CLAT的余数用于指示确定出 的内存块中的与该业务编号对应的工作信息。当第N项CLAT的余数等于0时, 该业务编号对应的工作信息为确定出的内存块中的最后一个工作信息,当第N 项CLAT的余数大于0时,该业务编号对应的工作信息为确定出的内存块中的 第m个工作信息,m等于第N项CLAT的余数。
    下面通过举例对表项偏移的计算进行说明:例如,每个所用内存大小为1KB, 内存块的大小为4KB,内存块的首地址的位数为64位,分配给CLAT的内存块 的大小也是4KB。
    具体例子参见实施例四步骤406,在此省略详细描述。
    在本发明实施例中,PCIE设备接收BAT的地址及功能号,并将BAT的地 址与功能号的对应关系保存到虚拟机配置表VCT中,在业务处理时,PCIE设备 根据BAT的地址与功能号的对应关系,从虚拟机中获取业务的工作信息,操作 方便,且速度快;在虚拟机热迁移时,避免了对寄存器的迁移带来的麻烦,只 需将内存块、BAT和CLAT直接迁移到目的物理主机上,再将迁移后虚拟机对 应的功能号与源物理主机中虚拟机的BAT的地址的对应关系配置到迁移后的 PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟机热迁移的速度,缩 短了停机的时间。
    实施例九
    本发明实施例提供了一种迁移管理设备,该迁移管理设备设于目的物理主 机中,适用于实施例三中提供的方法,参见图12,该迁移管理设备包括:
    第一获取模块901,用于在热迁移时,获取源物理主机中的虚拟机的基址表 BAT的地址,目的物理主机和源物理主机分别与不同的快捷外围部件互连标准 PCIE设备连接,PCIE设备为一个支持单根输入输出虚拟化SR-IOV标准的硬件 设备,PCIE设备包括至少一个物理功能PF以及至少一个虚拟功能VF,其中, 每个PF和每个VF都配置有唯一的功能号;
    第二获取模块902,用于获取迁移后的虚拟机对应的功能号;
    配置模块903,用于将BAT的地址与功能号的对应关系配置到与目的物理 主机连接的PCIE设备中的虚拟机配置表VCT中。
    本发明实施例在进行虚拟机热迁移时,避免了对寄存器的迁移带来的麻烦, 在迁移过程中自动将内存块、BAT和CLAT直接迁移到目的物理机上,再将迁 移后虚拟机对应的功能号与源物理主机中虚拟机的BAT的地址的对应关系配置 到迁移后的PCIE设备的VCT中即可,实现方便、简单,大大加快虚拟机热迁 移的速度,缩短了停机的时间。
    需要说明的是:上述实施例提供的虚拟机在进行虚拟机内存管理时,仅以 上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功 能分配由不同的功能模块完成,或者将其中一个功能分配由更多的模块完成, 或者将其中多个功能分配由同一个模块完成,即将设备的内部结构划分成不同 的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的 物理主机与虚拟机内存管理方法实施例属于同一构思,其具体实现过程详见方 法实施例,这里不再赘述。
    上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
    本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过 硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于 一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或 光盘等。
    以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的 精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。

    关 键  词:
    虚拟机 内存 管理 方法 物理 主机 PCIE 设备 及其 配置 以及 迁移
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:虚拟机内存管理方法、物理主机、PCIE设备及其配置方法以及迁移管理设备.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1664090.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1