一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

内存回收方法及装置与流程

2022-11-02 08:28:21 来源:中国专利 TAG:


1.本技术涉及云计算(cloud computing)技术领域,特别涉及一种内存回收方法及装置。


背景技术:

2.在云场景下,内存存在分配率高但实际利用率低的情况,即大量内存分配后存在长时间闲置的情况。为了提高内存的分配率,可以把当前虚拟机不使用的内存给其他虚拟机使用,在其需要使用时归还,以降低客户单位内存成本。但虚拟机的业务负载是波动的,会存在业务突发的情况,被闲时共享的内存可能又被虚拟机申请使用,出现内存热点瓶颈,此时需要执行一些策略解决该内存热点瓶颈,以保证虚拟机的业务质量。
3.在相关技术中,可以将虚拟机迁移至云场景中的其他主机上,使该虚拟机使用该其他主机上的空闲内存,并将该虚拟机在原来主机上使用的内存回收,以解决内存热点问题。
4.但是,该方案中需要等待完成虚拟机的迁移后才能释放内存,存在时延较大的问题,导致需要使用被释放的内存的虚拟机的业务质量仍然会受到影响。


技术实现要素:

5.本技术提供了一种内存回收方法及装置。本技术减小了对待迁移虚拟机使用的内存空间进行回收的时延,能够较快速的将回收的内存空间提供给源主机上的其他虚拟机使用。本技术提供的技术方案如下:
6.第一方面,本技术提供了一种内存回收方法,该内存回收方法应用于源主机,源主机上运行有待迁移虚拟机,该内存回收方法包括:源主机将源主机的内存空间提供给待迁移虚拟机,内存空间中记录有待迁移虚拟机的数据,且内存空间设置为多个内存页;源主机向目的主机发送多个内存页中的第一部分内存页记录的数据;源主机将第一部分内存页对应的第一部分内存空间回收。
7.在该内存回收方法中,在需要将源主机上待迁移虚拟机迁移至目的主机上时,所述源主机通过向目的主机发送提供给待迁移虚拟机的多个内存页中的第一部分内存页记录的数据,并将所述第一部分内存页对应的第一部分内存空间回收,能够在向目的主机发送提供给待迁移虚拟机的部分内存页中记录的数据后,就将该部分内存页对应的内存空间回收,无需等到将提供给该待迁移虚拟机的所有内存页记录的数据全部都发送至目的主机,才对提供给该待迁移虚拟机的所有内存页对应的内存空间回收,减小了对待迁移虚拟机使用的内存空间进行回收的时延,能够更快速的将回收的内存空间提供给源主机上的其他虚拟机使用,有助于保证需要使用被回收的内存空间的其他虚拟机的业务质量。
8.在一种可实现方式中,该内存回收方法还包括:源主机向目的主机发送多个内存页中的第二部分内存页记录的数据以及第二部分内存页的内存页地址信息;源主机将第二部分内存页对应的第二部分内存空间回收,其中,内存空间包括第一部分内存空间和第二
部分内存空间。
9.由于源主机向待迁移虚拟机提供的内存空间设置为多个内存页,当向目的主机发送该多个内存页中的第一部分内存页记录的数据后,源主机可以继续向目的主机发送该多个内存页中的第二部分内存页,直至将该多个内存页记录的数据全部发送至目的主机。
10.为便于迁移后虚拟机能够使用源主机发送的待迁移虚拟机的内存数据,源主机在向目的主机发送待迁移虚拟机的内存数据时,还需要向目的主机发送记录该内存数据的内存页的内存页地址。相应的,源主机向目的主机发送多个内存页中的第一部分内存页记录的数据,具体包括:源主机向目的主机发送多个内存页中的第一部分内存页记录的数据和第一部分内存页的内存页地址信息。
11.可选的,该内存回收方法还包括:源主机获取多个内存页中各个内存页的访问频率;源主机按照访问频率由高到低的顺序,在多个内存页中确认第一部分内存页。
12.通过根据访问频率在多个内存页中确定第一部分内存页,使得能够优先发送访问概率较高的数据,后发送访问概率较低的数据,减小因数据未拷贝至目的主机造成无法访问数据的概率,从而减小因无法访问数据对虚拟机业务造成的影响。
13.可选地,目的主机可以向源主机发送携带有内存页地址信息的数据发送请求,源主机可以根据该数据发送请求,向目的主机发送该内存也地址信息指示的内存页记录的数据。相应的,源主机向目的主机发送多个内存页中的第一部分内存页记录的数据,具体包括:源主机接收目的主机发送的第一部分内存页的内存页地址信息;源主机根据第一部分内存页的内存页地址信息,获取第一部分内存页记录的数据,向目的主机发送第一部分内存页记录的数据。作为一种可实现方式,该内存回收方法还包括:源主机向目的主机发送多个内存页中的第一部分内存页记录的数据之后,源主机对第一部分内存页进行标记。相应的,源主机将第一部分内存页对应的第一部分内存空间回收,具体包括:源主机根据标记确定第一部分内存页,将第一部分内存页对应的第一部分内存空间回收。
14.可选的,源主机将第一部分内存页对应的第一部分内存空间回收,具体包括:源主机接收目的主机发送的指示已接收到第一部分内存页记录的数据的接收通知;源主机根据接收通知,将第一部分内存页对应的第一部分内存空间回收。
15.可选的,该内存回收方法还包括:源主机将回收后的内存空间提供给其他虚拟机使用。
16.由于该内存回收方法能够减小对待迁移虚拟机使用的内存空间进行回收的时延,能够在不中断虚拟机业务的情况下,实现虚拟机使用的内存的快速释放,使得能够快速地将回收的内存空间提供给其他虚拟机使用。
17.第二方面,本技术提供了一种内存回收装置,该内存回收装置应用于源主机,源主机上运行有待迁移虚拟机,该内存回收装置包括:提供模块,用于将源主机的内存空间提供给待迁移虚拟机,内存空间中记录有待迁移虚拟机的数据,且内存空间设置为多个内存页;发送模块,用于向目的主机发送多个内存页中的第一部分内存页记录的数据;回收模块,用于将第一部分内存页对应的第一部分内存空间回收。
18.可选的,发送模块,还用于向目的主机发送多个内存页中的第二部分内存页记录的数据以及第二部分内存页的内存页地址信息;回收模块,还用于将第二部分内存页对应的第二部分内存空间回收,其中,内存空间包括第一部分内存空间和第二部分内存空间。
19.可选的,发送模块,具体用于:向目的主机发送多个内存页中的第一部分内存页记录的数据和第一部分内存页的内存页地址信息。
20.可选的,该内存回收装置还包括:获取模块,用于获取多个内存页中各个内存页的访问频率;确定模块,用于按照访问频率由高到低的顺序,在多个内存页中确认第一部分内存页。
21.可选的,发送模块,具体用于:接收目的主机发送的第一部分内存页的内存页地址信息;根据第一部分内存页的内存页地址信息,获取第一部分内存页记录的数据,向目的主机发送第一部分内存页记录的数据。
22.可选的,该内存回收装置还包括:标记模块,用于在发送模块向目的主机发送多个内存页中的第一部分内存页记录的数据之后,对第一部分内存页进行标记;回收模块,具体用于:根据标记确定第一部分内存页,将第一部分内存页对应的第一部分内存空间回收。
23.可选的,回收模块,具体用于:接收目的主机发送的指示已接收到第一部分内存页记录的数据的接收通知;根据接收通知,将第一部分内存页对应的第一部分内存空间回收。
24.可选的,提供模块还用于:将回收后的内存空间提供给其他虚拟机使用。
25.第三方面,本技术提供了一种计算机设备,包括存储器和处理器,存储器存储有程序指令,处理器运行程序指令以执行本技术第一方面以及其任一种可能的实现方式中提供的方法。
26.第四方面,本技术提供了一种计算机可读存储介质,该计算机可读存储介质为非易失性计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在计算机设备上运行时,使得计算机设备执行本技术第一方面以及其任一种可能的实现方式中提供的方法。
27.第五方面,本技术提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本技术第一方面以及其任一种可能的实现方式中提供的方法。
附图说明
28.图1是本技术实施例提供的一种内存回收方法涉及的应用场景的示意图;
29.图2是本技术实施例提供的一种内存回收方法的流程图;
30.图3是本技术实施例提供的一种内存回收方法实现过程的示意图;
31.图4是本技术实施例提供的一种内存回收装置的结构示意图;
32.图5是本技术实施例提供的另一种内存回收装置的结构示意图;
33.图6是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
34.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
35.为便于理解,下面先对本技术实施例中涉及的一些概念进行解释。
36.虚拟化(virtualization)是一种资源管理技术,是将主机的各种实体资源,如服务器、网络资源、内存及存储资源等,予以抽象、转换后呈现出来,打破主机的实体结构间的
不可切割的障碍,使用户可以采用比原本的组态更好的方式来应用这些资源。通过虚拟化使用的资源称为虚拟化资源,虚拟化资源不受现有资源的架设方式、地域或物理组态所限制。一般地,虚拟化资源包括计算资源和存储资源。
37.虚拟机(virtual machine,vm):指通过虚拟化技术模拟得到的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整的计算机系统。虚拟机的部分指令子集可以在宿主(host)机中处理,其它部分指令可以以仿真的方式执行。用户可以通过租用虚拟机的形式购买云服务。
38.主机(也称物理机):用于承载虚拟化技术的物理资源(如虚拟机或物理机)。通常的,用于部署虚拟机的主机通常为物理服务器。
39.内存(memory):也可以称为内存储器或者主存储器,其作用是暂时存放中央处理器(central processing unit,cpu)中的运算数据,以及与硬盘等外部存储器交换的数据。
40.本技术实施例提供了一种内存回收方法。该内存回收方法应用于源主机。源主机上能够运行有一个或多个虚拟机,源主机能够将该源主机的内存空间提供给该一个或多个虚拟机使用。其中,提供给任一虚拟机使用的内存空间中记录有该任一虚拟机的数据,且该内存空间设置为多个内存页。该一个或多个虚拟机包括需要被迁移到其他主机上的待迁移虚拟机。例如,在内存存在超分配的应用场景中,当源主机出现内存热点时,可以通过热迁移的方式,将源主机上的虚拟机迁移至其他主机上,并将原本提供给需要迁移的虚拟机的内存空间提供给其他虚拟机使用,以解决源主机的内存热点问题,该需要迁移的虚拟机即为待迁移虚拟机。
41.在该内存回收方法中,在需要将源主机上待迁移虚拟机迁移至目的主机上时,源主机通过向目的主机发送提供给待迁移虚拟机的多个内存页中的第一部分内存页记录的数据,并将第一部分内存页对应的第一部分内存空间回收,能够在每次向目的主机发送提供给待迁移虚拟机的部分内存页中记录的数据后,就将该部分内存页对应的内存空间回收,无需等到将提供给该待迁移虚拟机的所有内存页记录的数据全部都发送至目的主机,才对提供给该待迁移虚拟机的所有内存页对应的内存空间回收,减小了对待迁移虚拟机使用的内存空间进行回收的时延,能够更快速的将已回收的内存空间提供给源主机上的其他虚拟机使用,有助于保证需要使用被回收的内存空间的其他虚拟机的业务质量。其中,将内存页对应的内存空间回收是指回收内存页对应的地址段,并清除该地址段上存储的数据。
42.图1是本技术实施例提供的一种内存回收方法涉及的实施场景的示意图。如图1所示,该实施场景包括:源主机10和目的主机20。源主机10与目的主机20之间建立有通信连接。该源主机10和目的主机20上能够运行虚拟机,虚拟机能够为用户提供服务。例如:虚拟机可以向用户提供语言识别服务、视频审核服务或图像渲染服务等。
43.在该实施场景中,源主机10上运行有待迁移虚拟机,该待迁移虚拟机需要迁移至目的主机20上,迁移至目的主机20上的虚拟机(为便于描述,下文称其为迁移后虚拟机)用于继续提供该待迁移虚拟机提供的业务。并且,为了保证迁移后虚拟机的业务质量,需要将提供给待迁移虚拟机使用的内存页记录的数据(为便于描述,下文称为待迁移虚拟机的内存数据)发送至目的主机20上,以供迁移后虚拟机基于该内存数据提供业务。
44.在将待迁移虚拟机迁移至目的主机20的过程中,源主机10用于向目的主机20发送为待迁移虚拟机提供的多个内存页中的部分内存页记录的内存数据,并在发送完成后,将
该部分内存页对应的内存空间回收。目的主机20用于在接收到源主机10发送的内存数据后,将内存数据存储在为迁移后虚拟机提供的内存中,以供迁移后虚拟机使用。并且,在源主机10向目的主机20发送待迁移虚拟机的内存数据之前,该目的主机20可以预先根据待迁移虚拟机的配置信息和运行状态,在目标主机中拉起与待迁移虚拟机配置相同的迁移后虚拟机,并对迁移后虚拟机的状态进行状态同步。
45.可选地,该源主机10和目的主机20均可以通过物理服务器实现。并且,该源主机10和目的主机20均可以部署在云平台中。此时,该源主机10和目的主机20可以通过云平台中部署的物理服务器实现。其中,云平台中部署有云服务提供商拥有的大量基础资源,云平台可以利用该基础资源向用户提供云服务。该基础资源可以包括计算资源、存储资源和网络资源等,且该计算资源可以是大量的计算设备(例如物理服务器)。当用户购买云服务后,云平台可以利用物理服务器等基础资源为用户创建虚拟机,以使用创建的虚拟机向用户提供云服务。其中,该云平台可以是中心云的云平台、边缘云的云平台或包括中心云和边缘云的云平台,本技术实施例对其也不做具体限定。
46.需要说明的是,在本技术实施例提供的内存回收方法中,源主机10与目的主机20之间的交互可以是源主机10与目的主机20在主机层面上的交互。或者,可以是源主机10与目的主机20中虚拟机管理器(virtual machine monitor,vmm)之间的交互,例如,源主机10向目的主机20发送内存数据的过程,可以通过源主机10中虚拟机管理器向目的主机20中虚拟机管理器发送。或者,可以是源主机10与目的主机20中虚拟机模拟器(qemu)之间的交互,例如,源主机10向目的主机20发送内存数据的过程,可以通过源主机10中虚拟机模拟器向目的主机20中虚拟机模拟器发送。并且,在下面内容中,若无特别说明,源主机10与目的主机20之间的交互可以主机层面的交互、虚拟机管理器之间的交互和虚拟机模拟器之间的交互中的任意一种。
47.下面对本技术实施例提供的内存回收方法的实现过程进行说明。如图2所示,该内存回收方法的实现过程可以包括以下步骤:
48.步骤201、源主机将源主机的内存空间提供给待迁移虚拟机,内存空间中记录有待迁移虚拟机的数据,且内存空间设置为多个内存页。
49.其中,源主机上可以运行有一个或多个虚拟机,待迁移虚拟机为该一个或多个虚拟机中的一个。并且,当该源主机上运行有多个虚拟机时,源主机向待迁移虚拟机提供的内存空间为该源主机的部分内存空间。例如,如图3所示,源主机10的内存空间包括空闲内存、内存1、......、内存n,源主机10向虚拟机1提供了内存1对应的内存空间,向虚拟机n提供了内存n对应的内存空间。在待迁移虚拟机的运行过程中,待迁移虚拟机可以将其虚拟处理器中的运算数据等存储在向该待迁移虚拟机提供的内存空间中,以便于提高提供业务时的运算速度。
50.步骤202、源主机向目的主机发送多个内存页中的第一部分内存页记录的数据。
51.其中,第一部分内存页可以包括一个或多个内存页。
52.可选地,在需要将待迁移虚拟机迁移至目的主机上时,可以根据应用需求选择源主机向目的主机发送待迁移虚拟机的内存数据的时机,本技术实施例以以下几种可实现方式为例对其进行说明:
53.在一种可实现方式中,源主机可以主动地向目的主机发送待迁移虚拟机的内存数
据。
54.可选地,源主机可以在确定需要将待迁移虚拟机迁移至目的主机上后,主动地向目的主机发送该待迁移虚拟机的内存数据。并且,为便于迁移后虚拟机能够使用源主机发送的待迁移虚拟机的内存数据,源主机在向目的主机发送待迁移虚拟机的内存数据时,还需要向目的主机发送记录该内存数据的内存页的内存页地址。相应的,该步骤202的实现过程,具体包括:源主机主动地向目的主机发送多个内存页中的第一部分内存页记录的数据和第一部分内存页的内存页地址信息。
55.其中,由于迁移后虚拟机用于代替待迁移虚拟机继续实现该待迁移虚拟机的业务,因此,该目的主机存储接收到的内存数据时,需要保证迁移后虚拟机按照待迁移虚拟机访问数据的逻辑,能够成功访问到所需的数据。例如,目的主机为迁移后虚拟机分配内存空间时,分配的内存空间的大小应不小于源主机向待迁移虚拟机分配的内存空间的大小,且内存空间中内存页的大小应等于源主机向待迁移虚拟机分配的内存空间中内存页的大小,并建立向迁移后虚拟机提供的内存页与源主机向待迁移虚拟机提供的内存页之间的对应关系,在目的主机接收到任一内存页记录的待迁移虚拟机的内存数据和该任一内存页的内存页地址信息后,可以根据该对应关系,在向迁移后虚拟机提供的多个内存页中,确定该任一内存页对应的向迁移后虚拟机提供的内存页,并将接收任一内存页记录的待迁移虚拟机的内存数据存储在该对应的内存页中,使得迁移后虚拟机按照待迁移虚拟机访问数据的逻辑,能够成功访问到该任一内存页记录的待迁移虚拟机的内存数据。
56.并且,源主机在向目的主机发送该多个内存页中的第一部分内存页记录的数据之前,可以根据应用需求,在该多个内存页中确定该第一部分内存页。可选地,源主机获取多个内存页中各个内存页的访问频率,源主机按照访问频率由高到低的顺序,多个内存页中确认第一部分内存页。或者,源主机也可以按照其他策略在该多个内存页中缺地锅该第一部分内存页,该其他策略可以根据应用需求确定,此处对其不进行一一列举。
57.其中,访问频率较高的内存页可称为热内存页,访问频率较低的内存页可称为冷内存页。通过根据访问频率在多个内存页中确定第一部分内存页,使得能够优先发送访问概率较高的数据,后发送访问概率较低的数据,减小因数据未拷贝至目的主机造成无法访问数据的概率,从而减小因无法访问数据对虚拟机业务造成的影响。并且,当待迁移虚拟机的内存页还包括零内存页时,由于该零内存页是预留给待迁移虚拟机,但待迁移虚拟机实际没有使用的内存页,因此可以选择无需根据零内存页执行数据发送操作。
58.在另一种可实现方式中,源主机可以根据目的主机的请求,向目的主机发送待迁移主机的内存数据。
59.可选地,目的主机可以向源主机发送携带有内存页地址信息的数据发送请求,源主机可以根据该数据发送请求,向目的主机发送该内存也地址信息指示的内存页记录的数据。相应的,该步骤202的实现过程,具体包括:源主机接收目的主机发送的第一部分内存页的内存页地址信息,根据第一部分内存页的内存页地址信息,获取第一部分内存页记录的数据,向目的主机发送第一部分内存页记录的数据。需要说明的是,数据发送请求携带的内存页地址信息也可以为待迁移虚拟机提供的内存页的内存页地址信息。
60.一种可能的情况中,该携带有内存页地址信息的数据发送请求,可以在待迁移虚拟机对该内存页地址信息对应的内存页访问失败时发送。例如,迁移后虚拟机因业务需求
从目的主机为其分配的内存页a中读数据时,若读取失败则可以确定内存页a对应的为待迁移虚拟机分配的内存页记录的待迁移虚拟机的内存数据未发送至目的主机,然后目的主机根据向迁移后虚拟机提供的内存空间的地址与向待迁移虚拟机提供的内存空间的地址的对应关系,确定内存页a的内存地址对应的向待迁移虚拟机提供的内存空间的地址,该对应的向待迁移虚拟机提供的内存空间的地址即为数据发送请求携带的内存页地址信息。也即是,该数据发送请求可以是目的主机在对为迁移后虚拟机提供的内存页中与该第一部分内存页对应的内存页访问失败时发送的。
61.当数据发送请求携带为待迁移虚拟机提供的内存页的内存页地址信息时,该内存页地址信息对应的内存页指的是目的主机为迁移后虚拟机提供的多个内存页中,与为待迁移虚拟机提供的内存页具有对应关系的内存页。当数据发送请求携带为迁移后虚拟机提供的内存页的内存页地址信息时,该内存页地址信息对应的内存页指的是迁移后虚拟机提供的内存页的内存页地址信息,相应的,源主机接收到该数据发送请求后,需要根据该数据发送请求中携带的内存页地址信息和待迁移虚拟机和迁移后虚拟机的内存页之间的对应关系,在为待迁移虚拟机提供的内存页中,确定数据发送请求中携带的内存页地址信息对应的内存页,并向目的主机发送该数据发送请求中携带的内存页地址信息对应的内存页记录的数据。
62.或者,目的主机向源主机发送的数据发送请求中也可以不携带有内存页地址信息,此时,该数据发送请求用于请求源主机向目的主机发送待迁移虚拟机的全部内存数据。相应的,源主机可以基于该数据发送请求向目的主机发送该待迁移虚拟机的全部内存数据。并且,在发送该全部内存数据的过程中,源主机可以根据源主机与目的主机之间的带宽,决定是一次性向目的主机发送该全部内存数据,还是分多次向目的主机发送该全部内存数据。
63.一种可能的情况中,该用于请求源主机向目的主机发送待迁移虚拟机的全部内存数据的数据发送请求,可以在目的主机完成对迁移后虚拟机的资源配置后发送。
64.需要说明的是,源主机向目的主机发送内存页中记录的数据时,可以先对待发送的数据进行压缩,然后向目的主机发送压缩后的数据,以节省发送数据所需的带宽,减小将待迁移虚拟机的内存数据发送至目的主机耗费的总时长。
65.步骤203、源主机将第一部分内存页对应的第一部分内存空间回收。
66.源主机向目的主机发送多个内存页中的第一部分内存页记录的数据后,可以将该第一部分内存页对应的第一部分内存空间回收。其中,将内存页对应的内存空间回收是指回收内存页对应的地址段,并清除该地址段上存储的数据。
67.当该源主机判断是否完成数据发送的标准的不同时,源主机将第一部分内存空间回收的实现方式不同,下面以以下几种可实现方式为例对其进行说明:
68.在第一种可实现方式中,源主机可以在完成对第一部分内存页记录的数据的发送操作后,直接将第一部分内存页对应的内存空间进行回收。
69.在第二种可实现方式中,源主机在第一部分内存页的标记状态指示已向目的主机发送第一部分内存页记录的数据时,将第一部分内存页对应的内存空间进行回收。
70.第一部分内存页的标记状态由源主机执行对第一部分内存页记录的数据的发送操作后进行标记。此时,该内存回收方法还包括:源主机向目的主机发送多个内存页中的第
一部分内存页记录的数据之后,源主机对第一部分内存页进行标记。相应的,该步骤203的实现过程,具体包括:源主机根据对第一部分内存页标记,确定第一部分内存页,将第一部分内存页对应的第一部分内存空间回收。
71.或者,第一部分内存页的标记状态由源主机接收到指示目的主机已接收到第一部分内存页记录的数据的接收通知后进行标记。在一种可实现方式中,目的主机可以在执行对第一部分内存页记录的数据的接收操作后发送该接收通知。在另一种可实现方式中,目的主机可以在执行对第一部分内存页记录的数据的接收操作,并根据该接收操作在目的主机中将第一部分内存页的标记状态,标记为指示已接收第一部分内存页记录的数据后,发送该接收通知。此时,该内存回收方法还包括:源主机接收目的主机发送的接收通知,根据接收通知对第一部分内存页进行标记。相应的,该步骤203的实现过程,具体包括:源主机根据对第一部分内存页的标记,确定第一部分内存页,将第一部分内存页对应的第一部分内存空间回收。
72.可选的,源主机可以采用内存状态表记录该源主机管理的每个内存页的状态,该内存状态表的每个表项对应一个内存页,表项中的信息用于指示内存页的状态。并且,内存页的状态可以指示内存页是否被占用,和/或,内存页记录的数据是否被发送至其他主机。在内存页的实际状态发生变化时,源主机均可以根据该内存页变化后的状态对内存状态表记录的该内存页的状态进行更新。在一种可实现方式中,该内存状态表可以通过位图实现,位图包括多个单元,每个单元中记录的信息用于指示一个内存页的状态。
73.由上可知,接收通知可以由目的主机在目的主机中将第一部分内存页的标记状态,标记为指示已接收第一部分内存页记录的数据后发送,则目的主机中也可以设置有内存状态表。该目的主机中的内存状态表可以仅用于标记记录有待迁移虚拟机的内存数据的内存页的状态,也可以记录有目的主机中各个内存页的状态。并且,目的主机的内存状态表中可以直接记载记录有待迁移虚拟机的内存数据的内存页的状态。例如,目的主机的内存状态表中设置有为提供给待迁移虚拟机的多个内存页的表项,每个表项用于记载该多个内存页中一个内存页的状态。或者,目的主机的内存状态表可以通过记载该目的主机中内存页的状态,实现对记录有待迁移虚拟机的内存数据的内存页的状态的记载。例如,源主机向待迁移虚拟机提供的多个内存页与目的主机向迁移后虚拟机提供的多个内存页具有对应关系,目的主机中的内存状态表用于记载向迁移后虚拟机提供的多个内存页的状态,根据该内存状态表中记载的向迁移后虚拟机提供的内存页的状态和该对应关系,能够确定源主机向待迁移虚拟机提供的对应的内存页的状态。其中,该目的主机中内存状态表的实现方式可以参考源主机中内存状态表的实现方式。
74.在第三种可实现方式中,源主机可以基于接收到的目的主机发送的接收通知,将第一部分内存页对应的内存空间进行回收,该接收通知用于指示目的主机已接收到第一部分内存页记录的数据。也即是,该步骤203的具体实现方式,具体包括:源主机接收目的主机发送的指示已接收到第一部分内存页记录的数据的接收通知,源主机根据接收通知,将第一部分内存页对应的第一部分内存空间回收。其中,目的主机发送接收通知的实现过程,可以相应参考上述第二种实现方式中对接收通知实现过程的相关描述,此处不在赘述。
75.例如,如图3所示,假设待迁移虚拟机为虚拟机1,源主机10向该虚拟机1提供的内存空间为内存1对应的内存空间,在需要将虚拟机1迁移至目的主机20上时,可以将该内存1
对应的多个内存页中的第一部分内存页记录的数据发送至目的主机20,并将该第一部分内存页记录的数据发哦是那个之目的主机20后,将该第一部分内存页对应的第一内存空间进行回收。
76.步骤204、目的主机将接收到的第一部分内存页记录的数据存储在为迁移后虚拟机提供的内存空间中。
77.目标主机接收到源主机发送的第一部分内存页记录的数据后,可以根据第一部分内存页的内存页地址信息,在目标主机向迁移后虚拟机提供的多个内存页中,确定该第一部分内存页对应的内存页,并将该第一部分内存页中每个内存页记录的数据存储在其对应的内存页中,以便于迁移后虚拟机能够访问对应的内存数据。
78.其中,源主机向待迁移虚拟机提供的多个内存页与目的主机向迁移后虚拟机提供的多个内存页具有对应关系,对于第一部分内存页中的任一内存页,可以根据该对应关系在目的主机向迁移后虚拟机提供的多个内存页中,确定该任一内存页对应的内存页。例如,假设该对应关系为:源主机向待迁移虚拟机提供的n个内存页中的第i个内存页,与目标主机向迁移后虚拟机提供的n个内存页中的第i个内存页对应,则目的主机接收到源主机发送的源主机向待迁移虚拟机提供的n个内存页中第5个内存页记录的数据后,可以根据该对应关系,确定该第5个内存页对应的内存页为目的主机向迁移后虚拟机提供的n个内存页中第5个内存页。
79.步骤205、源主机向目的主机发送多个内存页中的第二部分内存页记录的数据以及第二部分内存页的内存页地址信息。
80.由于源主机向待迁移虚拟机提供的内存空间设置为多个内存页,当向目的主机发送该多个内存页中的第一部分内存页记录的数据后,源主机可以继续向目的主机发送该多个内存页中的第二部分内存页,直至将该多个内存页记录的数据全部发送至目的主机。该步骤205的实现过程请相应参考步骤202的实现过程,此处不再赘述。
81.步骤206、源主机将第二部分内存页对应的第二部分内存空间回收,其中,内存空间包括第一部分内存空间和第二部分内存空间。
82.完成第二部分内存页记录的数据的发送后,即可对该第二部分内存页对应的第二部分内存空间进行回收。其中,该步骤206的实现过程请相应参考步骤203的实现过程,此处不再赘述。
83.需要说明的是,当待迁移虚拟机的内存数据不止包括该第一部分内存页和第二部分内存页记录的数据时,源主机在发送完第二部分内存页记录的数据后,还可以继续剩余未发送的内存数据的发送过程,并在每次完成一部分内存页中记录的数据的发送后,将该部分内存页对应的内存空间回收,直至完成该待迁移虚拟机所有内存数据的发送和对应内存空间的回收。并且,该剩余未发送内存数据的发送过程和回收对应内存空间的实现过程均可以相应参考前述内容中的相关描述,此处不再赘述。
84.步骤207、目的主机将接收到的第二部分内存页记录的数据存储在为迁移后虚拟机提供的内存空间中。
85.该步骤207的实现过程请相应参考步骤204的实现过程,此处不再赘述。
86.步骤208、源主机将回收后的内存空间提供给其他虚拟机使用。
87.源主机每次完成内存空间的回收后,均可以将回收后的内存空间重新分配给其他
虚拟机使用,以保证其他虚拟机向用户提供的业务的业务质量。
88.由于该内存回收方法能够减小对待迁移虚拟机使用的内存空间进行回收的时延,能够在不中断虚拟机业务的情况下,实现虚拟机使用的内存的快速释放,使得能够快速地将回收的内存空间提供给其他虚拟机使用。例如,假设源主机与目的主机之间的网络传输速度为4吉比特每秒(gigabyte per second,gb/s),则源主机上每秒可以新增4gb的空闲内存,该空闲内存就能够被需要的虚拟机申请使用。这样一来,能够便于满足主机上虚拟机的突发内存申请使用诉求,满足业务量的突增诉求。
89.需要说明的是,在待迁移虚拟机的内存全部拷贝完后,源主机可以释放源主机向待迁移虚拟机提供的其他资源,以便于向其他虚拟机提供该其他资源。例如,当本技术实施例提供的内存回收方法中,源主机与目的主机之间的交互是源主机与目的主机中虚拟机模拟器之间的交互时,该其他资源包括虚拟机模拟器占用的内存等资源。
90.综上所述,在本技术实施例提供的内存回收方法中,在需要将源主机上待迁移虚拟机迁移至目的主机上时,源主机通过向目的主机发送提供给待迁移虚拟机的多个内存页中的第一部分内存页记录的数据,并将第一部分内存页对应的第一部分内存空间回收,能够在向目的主机发送提供给待迁移虚拟机的部分内存页中记录的数据后,就将该部分内存页对应的内存空间回收,无需等到将提供给该待迁移虚拟机的所有内存页记录的数据全部都发送至目的主机,才对提供给该待迁移虚拟机的所有内存页对应的内存空间回收,减小了对待迁移虚拟机使用的内存空间进行回收的时延,能够更快速的将回收的内存空间提供给源主机上的其他虚拟机使用,有助于保证需要使用被回收的内存空间的其他虚拟机的业务质量。
91.并且,由于该内存回收方法能够减小对待迁移虚拟机使用的内存空间进行回收的时延,能够在不中断虚拟机业务的情况下,实现虚拟机使用的内存的快速释放,使得能够快速地将回收的内存空间提供给其他虚拟机使用,以便于满足主机上虚拟机的突发内存申请使用诉求,满足业务量的突增诉求。
92.需要说明的是,本技术实施例提供的内存回收方法的步骤先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本技术的保护范围之内,因此不再赘述。
93.本技术实施例还提供了一种内存回收装置。该内存回收装置应用于源主机,源主机上运行有待迁移虚拟机。如图4所示,该内存回收装置40包括:
94.提供模块401,用于将源主机的内存空间提供给待迁移虚拟机,内存空间中记录有待迁移虚拟机的数据,且内存空间设置为多个内存页。该提供模块401的工作过程请相应参考步骤201的实现过程。
95.发送模块402,用于向目的主机发送多个内存页中的第一部分内存页记录的数据。该发送模块402的工作过程请相应参考步骤202的实现过程。
96.回收模块403,用于将第一部分内存页对应的第一部分内存空间回收。该回收模块403的工作过程请相应参考步骤203的实现过程。
97.可选的,发送模块402,还用于向目的主机发送多个内存页中的第二部分内存页记录的数据以及第二部分内存页的内存页地址信息。该发送模块402的工作过程请相应参考
步骤205的实现过程。
98.回收模块403,还用于将第二部分内存页对应的第二部分内存空间回收,其中,内存空间包括第一部分内存空间和第二部分内存空间。该回收模块403的工作过程请相应参考步骤206的实现过程。
99.可选的,发送模块402,具体用于:向目的主机发送多个内存页中的第一部分内存页记录的数据和第一部分内存页的内存页地址信息。
100.可选的,如图5所示,该内存回收装置40还包括:获取模块404,用于获取多个内存页中各个内存页的访问频率。
101.确定模块405,用于按照访问频率由高到低的顺序,在多个内存页中确认第一部分内存页。
102.可选的,发送模块402,具体用于:接收目的主机发送的第一部分内存页的内存页地址信息,根据第一部分内存页的内存页地址信息,获取第一部分内存页记录的数据,向目的主机发送第一部分内存页记录的数据。
103.可选的,如图5所示,该内存回收装置40还包括:标记模块406,用于在发送模块402向目的主机发送多个内存页中的第一部分内存页记录的数据之后,对第一部分内存页进行标记。
104.相应的,回收模块403,具体用于:根据标记确定第一部分内存页,将第一部分内存页对应的第一部分内存空间回收。
105.可选的,回收模块403,具体用于:接收目的主机发送的指示已接收到第一部分内存页记录的数据的接收通知,根据接收通知,将第一部分内存页对应的第一部分内存空间回收。
106.可选的,提供模块401还用于:将回收后的内存空间提供给其他虚拟机使用。该提供模块401的工作过程请相应参考步骤208的实现过程。
107.综上所述,在本技术实施例提供的内存回收装置中,在需要将源主机上待迁移虚拟机迁移至目的主机上时,发送模块通过向目的主机发送提供给待迁移虚拟机的多个内存页中的第一部分内存页记录的数据,回收模块将第一部分内存页对应的第一部分内存空间回收,能够在向目的主机发送提供给待迁移虚拟机的部分内存页中记录的数据后,就将该部分内存页对应的内存空间回收,无需等到将提供给该待迁移虚拟机的所有内存页记录的数据全部都发送至目的主机,才对提供给该待迁移虚拟机的所有内存页对应的内存空间回收,减小了对待迁移虚拟机使用的内存空间进行回收的时延,能够更快速的将回收的内存空间提供给源主机上的其他虚拟机使用,有助于保证需要使用被回收的内存空间的其他虚拟机的业务质量。
108.并且,由于该内存回收方法能够减小对待迁移虚拟机使用的内存空间进行回收的时延,能够在不中断虚拟机业务的情况下,实现虚拟机使用的内存的快速释放,使得提供给模块能够快速地将回收的内存空间提供给其他虚拟机使用,以便于满足主机上虚拟机的突发内存申请使用诉求,满足业务量的突增诉求。
109.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应内容,在此不再赘述。
110.本技术实施例提供了一种计算机设备。图6示例性的提供了计算机设备的一种可
能的架构图。如图6所示,该计算机设备60可以包括处理器601、存储器602、通信接口603和总线604。在计算机设备中,处理器601的数量可以是一个或多个,图6仅示意了其中一个处理器601。可选的,处理器601可以是中央处理器(central processing unit,cpu)。若计算机设备具有多个处理器601,多个处理器601的类型可以不同,或者可以相同。可选的,计算机设备的多个处理器还可以集成为多核处理器。
111.存储器602存储计算机指令和数据,存储器602可以存储实现本技术提供的内存回收方法所需的计算机指令和数据。存储器602可以是以下存储介质的任一种或任一种组合:非易失性存储器(如只读存储器(read-only memory,rom)、固态硬盘(solid state disk,ssd)、硬盘(hard disk drive,hdd)、光盘等、易失性存储器。
112.通信接口603可以是以下器件的任一种或任一种组合:网络接口(如以太网接口)、无线网卡等具有网络接入功能的器件。
113.通信接口603用于计算机设备与其他节点或者其他计算机设备进行数据通信。
114.图6还示例性地绘制出总线604。总线604可以将处理器601与存储器602、通信接口603连接。这样,通过总线604,处理器601可以访问存储器602,还可以利用通信接口603与其他节点或者其他计算机设备进行数据交互。
115.在本技术中,计算机设备执行存储器602中的计算机指令,可以实现本技术提供的内存回收方法。例如,将源主机的内存空间提供给待迁移虚拟机,内存空间中记录有待迁移虚拟机的数据,且内存空间设置为多个内存页;向目的主机发送多个内存页中的第一部分内存页记录的数据;将第一部分内存页对应的第一部分内存空间回收。并且,计算机设备通过执行存储器602中的计算机指令,执行本技术提供的内存回收方法的步骤的实现过程可以相应参考上述方法实施例中对应的描述。
116.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质为非易失性计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在计算机设备上运行时,使得计算机设备执行如本技术实施例提供的内存回收方法。
117.本技术实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本技术实施例提供的内存回收方法。
118.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
119.在本技术实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”是指一个或多个,术语“多个”指两个或两个以上,除非另有明确的限定。
120.本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
121.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献