CN105159841A - 一种内存迁移方法及装置 - Google Patents
一种内存迁移方法及装置 Download PDFInfo
- Publication number
- CN105159841A CN105159841A CN201410265874.XA CN201410265874A CN105159841A CN 105159841 A CN105159841 A CN 105159841A CN 201410265874 A CN201410265874 A CN 201410265874A CN 105159841 A CN105159841 A CN 105159841A
- Authority
- CN
- China
- Prior art keywords
- memory block
- migration
- migrated
- destination node
- district
- 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.)
- Granted
Links
Landscapes
- Memory System (AREA)
Abstract
一种内存迁移方法及装置。该方法包括:当接收到存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将待迁移数据按内存块进行划分,确定待迁移数据划分后所占用的源节点的内存块数;获取存储系统中的目的节点上与待迁移数据划分后所占用的源节点的内存块数一致的内存块;将待迁移数据按划分后的内存块迁移到目的节点上的内存块中。还公开了相应的装置。本发明实施例通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种内存迁移方法及装置。
背景技术
在非一致性内存访问(Non-UniformMemoryAccess,NUMA)架构中,系统分为多个节点(Node),每个节点有自己的中央处理器(CentralProcessingUnit,CPU)和内存,节点和节点之间通过互联模块进行连接和通信,如图1所示的NUMA架构的全互联示意图。故对每个节点内的CPU而言,它访问的内存就存在两种距离:一种是本节点内的内存,即近端内存;另一种就是其他节点内的内存,即远端内存。拿NUMA架构全互联机器的两个节点的连接和交互来看,如图2所示的NUMA架构上两个节点的连接示意图,节点1上的CPU访问节点2上的内存(远端访问)时,需要通过互联模块进行传输,而访问节点1自己内存(近端访问)则只需要通过内存通道进行访问,两者访问时间明显不同。
对于全互联的NUMA架构,其访存只存在上述两种距离。而对非全互联的情况而言,其访存就会多出很多距离,就是远端访问的距离有不同,如跨越2个互联模块到达目的结点内存的。一般的,NUMA架构的节点分为三类,如下:
本地结点(LocalNode):对于一个节点内的所有CPU而言,此节点称为本地节点;
邻居结点(BuddyNode):与本地节点直接通过互联模块相连的节点;
远端结点(RemoteNode):与本地节点间接相连、需要跨多个互联模块的节点。
一般情况下,访存开销的关系为:本地节点<邻居节点<远端节点。
在多核处理器中,为进行内核的负载均衡,需要将某些处理上过多的进程迁移到运行队列较短的处理器上,对大型应用特别是联机事务处理系统(On-LineTransactionProcessing,OLTP)而言,因为进程/线程数多,且运行的时间不同,内核的负载均衡会使很多进程/线程在不同的处理器上切换,与一开始分配到处理器处于不同的位置上。特别是NUMA架构的系统,当进程/线程因为负载均衡的原因在不同节点进行切换时,会促使进程/线程进行大量的远端访问,增加了访问延时,如图3所示的示例的NUMA架构的负载均衡引起的远端访问示意图;在进行内存热移除时,也需要将热移除内存上的内存页搬迁到其它节点上。
但不管是进程的内存迁移还是内存热移除,在搬迁页时,都是一页一页的搬迁,利用内核页迁移触发多次上下文切换,不仅大大占用了CPU利用率,同时还由于频繁的切换导致申请的目的内存不够连续,降低了命中率。
综上所述,需要提供一种内存迁移方法及装置,减少迁移时的上下文切换,提高内存迁移的效率。
发明内容
本发明实施例提供一种内存迁移方法及装置,以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
第一方面,提供了一种内存迁移方法,包括:
当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
在第一种可能的实现方式中,所述将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中,具体为:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点,包括:
根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数;
获取所述BE的至少一个区中每个区的工作状态;
将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,还包括:
将所述数据迁移请求划分为一个迁移任务;
当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
第二方面,提供了一种内存迁移方法,包括:
当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
在第一种可能的实现方式中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE;
所述当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中,包括:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点,包括:
当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述至少一个区的最后一块标识的内存块迁移完成后,所述BE通过基本输入输出系统BIOS发送迁移完成通知。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,包括:
根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,所述BE将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
第三方面,提供了一种内存迁移装置,包括:
第一确定单元,用于当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
第一获取单元,用于获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
迁移单元,用于将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
在第一种可能的实现方式中,所述迁移单元具体用于:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述迁移单元包括:
生成单元,用于根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
第一写入单元,用于将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
接收单元,用于当所述BE中具有所述最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第一写入单元包括:
第二确定单元,用于根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数;
第二获取单元,用于获取所述BE的至少一个区中每个区的工作状态;
第二写入单元,用于将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
结合第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:
划分单元,用于将所述数据迁移请求划分为一个迁移任务;
所述迁移单元用于当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
第四方面,提供了一种内存迁移装置,所述内存迁移装置位于存储系统中,所述存储系统包括至少一个节点,所述装置包括:
确定单元,用于当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
保留单元,用于接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
迁移单元,用于当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
在第一种可能的实现方式中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个硬件加速引擎BE;
所述迁移单元为所述BE,所述BE用于当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述BE用于:
当接收到至少一个迁移信息的写入指令时,将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;以及
根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;以及
当所述BE中具有所述最后一块的标识的内存块迁移完成后,通过基本输入输出系统BIOS发送迁移完成通知。
可见,采用本发明实施例提供的一种内存迁移方法及装置的技术方案,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为非一致性内存访问NUMA架构的全互联示意图;
图2为NUMA架构上两个节点的连接示意图;
图3为示例的NUMA架构的负载均衡引起的远端访问示意图;
图4为本发明实施例提供的一种内存迁移方法的流程图;
图5为本发明实施例提供的另一种内存迁移方法的流程图;
图6为对图5所示的步骤S203进一步细化的实施例的流程图;
图7为本发明实施例提供的又一种内存迁移方法的流程图;
图8为硬件加速引擎BE单任务管理流程图;
图9为BE的多任务管理示意图;
图10为本发明实施例提供的又一种内存迁移方法的流程图;
图11为本发明实施例提供的又一种内存迁移方法的流程图;
图12为对图11所示的步骤S503的进一步细化的实施例的流程图;
图13为本发明实施例提供的又一种内存迁移方法的流程图;
图14为本发明实施例提供的一种内存迁移装置的结构示意图;
图15为本发明实施例提供的另一种内存迁移装置的结构示意图;
图16为本发明实施例提供的又一种内存迁移装置的结构示意图;
图17为本发明实施例提供的又一种内存迁移装置的结构示意图;
图18为本发明实施例提供的一种存储系统的结构示意图;
图19为本发明实施例提供的一种内存迁移设备的结构示意图;
图20为本发明实施例提供的另一种内存迁移设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图4,为本发明实施例提供的一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S101,当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
在存储系统例如NUMA架构的存储系统中,包括若干个节点,每个节点有自己的CPU和内存,在内存中,存储的最小单位是页,多个页构成一个内存块。当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,例如内存数据迁移请求是进程的内存迁移或内存热移除引起的,由于待迁移数据是以页为单位存储的,在本实施例中,根据待迁移数据的物理地址的连续性,将待迁移数据按内存块进行划分,例如,如果当前页的物理地址与上一页的物理地址是连续的,则将当前页加入内存块中,块长度增加,合并内存页;如果当前页的物理地址与上一页的物理地址是不连续的,在新生成一个内存块,记录块的起始地址。划分后的每个内存块中页的物理地址是连续的。划分后,确定待迁移数据所占用的源节点的内存块数。
步骤S102,获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
根据内存数据迁移请求指示的目的节点,在该目的节点上申请与步骤S101确定的内存块数和大小一致的空闲内存块。此时,操作系统不对该目的节点上已申请的内存块进行操作,存储系统保留该目的节点上已申请的内存块,暂时不进行数据操作。
步骤S103,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
经过步骤S101和步骤S102的准备工作后,将源节点中的待迁移数据按划分后的内存块迁移到目的节点上申请的内存块中,即按块进行迁移,而不是按页进行迁移,每次迁移的是一个内存块中的数据。由于按块进行迁移,减少了迁移时的上下文切换,提高了内存迁移的效率。
迁移数据的控制可以由存储系统集中控制,也可以由连接源节点和目的节点的互联模块上的硬件加速引擎控制。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
请参阅图5,为本发明实施例提供的另一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S201,当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
步骤S202,获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
步骤S201和步骤S202分别与图4所示实施例的步骤S101和步骤S102相同,在此不再赘述。与前述实施例不同之处在于步骤S203:
步骤S203,当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
本实施例以NUMA存储系统为例,该存储系统包含至少两个NUMA节点,对于全互联的NUMA架构,每个NUMA节点通过互联模块连接,对于非全互联的NUMA架构,一个NUMA节点跨越若干个互联模块与另一个NUMA节点连接。在该存储系统中每个互联模块中设置一个BE,由源节点和目的节点之间的BE控制数据的迁移。BE根据待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,控制待迁移数据按块进行迁移,直至最后一个内存块完成数据迁移。由于使用BE控制迁移,而不是由整个存储系统的CPU来控制迁移,大幅降低了CPU占用率,释放CPU进行其他业务。
而对于BE的选择,选择与源节点连接的BE或与目的节点连接的BE去迁移都是可行的,考虑到一个迁移任务从源节点迁移到多个目的节点时使用源端BE只能串行,而使用目的端BE可以并行,本实施例优选采用目的端BE进行内存数据迁移。
本实施例可以通过软件、硬件或软件与硬件的结合来实现,硬件可以是整个存储系统的CPU,也可以是一个单独的硬件,软件上是由操作系统(OperatingSystem,OS)通过高级配置和电源管理接口(AdvancedConfigurationandPowerManagementInterface,ACPI)驱动以及基本输入输出系统(BasicInputOutputSystem,BIOS)层来与BE进行交互。
下面对步骤S203的实施进行进一步的说明:
请参阅图6,为对图5所示的步骤S203进一步细化的实施例的流程图,该步骤S203包括:
步骤S2031,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
首先,了解一下BE的内部结构:在NUMA架构的存储系统上,互联模块可为互联芯片、线缆等。本发明实施例提供在互联模块上的硬件加速引擎BE,该引擎可以由多组寄存器构成,每组寄存器可搬迁一块连续的内存。为了并发,在一个BE硬件上划分两个或两个以上的区,每个区有若干组寄存器,以下表1示例的一个BE硬件有2个区,每个区有n个块,每块有若干个寄存器:
表1BE硬件的分区和每个区的块分布
在对待迁移数据划分为多个内存块后,可以知道每一块的起始地址、每一块的长度,申请了目的节点的内存块后,也可以知道每一块的起始地址,由于源节点和目的节点的内存块是一一映射的,因此目的节点的每一块的长度是与源节点对应的,以及可以知道源节点或目的节点中的哪一块是待迁移的内存块中的最后一块,对是否是最后一块进行标识。
步骤S2032,将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中。
将步骤S2031中生成的这些迁移信息写入BE中的各个区的各个内存块,BE根据其区中的每一块中的迁移信息,控制将待迁移数据依次迁移到目的节点上的内存块中。
步骤S2033,当所述BE中具有最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
BE控制将待迁移数据依次迁移到目的节点上的内存块中,当具有最后一块的标识的内存块迁移完成后,BE通过BIOS发送迁移完成通知,BIOS再通过ACPI驱动转发给OS,OS接收到迁移完成通知后,进行相应的处理。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图7,为本发明实施例提供的又一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S301,当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
步骤S302,获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
对于一个迁移任务,其需要搬迁数据所在的NUMA节点为源节点,其搬迁的目的地NUMA节点为目的节点。一开始迁移任务的搬迁数据只以不连续的页的形式存在,我们通过页的物理地址是否连续生成了若干内存块,每个内存块内页的物理地址连续,内存块之间的页的物理地址不连续,由此一个迁移任务的搬迁数据以不连续的页的形式变为若干内存块的形式。接下来,我们根据生成的每一内存块的大小(连续页的数量)在目的节点上申请相应大小的空闲内存块,由此在源节点的内存块都是需要搬迁的数据,而在目的节点的内存块都是空白的,都是源节点相应内存块要搬迁的目的地。
步骤S303,将所述数据迁移请求划分为一个迁移任务。
由于OS可能同时接收到多个数据迁移请求,需要频繁的对存储系统进行操作,在本实施例中,将一个数据迁移请求划分为一个迁移任务,多个数据迁移请求对应多个迁移任务。以下针对每个数据迁移请求进行处理:
步骤S304,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
当在目的节点申请完相应的内存块以后,我们需要根据源节点和目的节点的内存块信息生成BE迁移所需要的迁移信息,这些迁移信息是用来配置BE的若干寄存器的。迁移信息的块信息包括源块起始地址、目的块起始地址、块长度、是否是最后一块标识等信息,这样一个迁移任务就生成了若干迁移信息存放到相应的BE队列中。
步骤S305,根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数。
步骤S306,获取所述BE的至少一个区中每个区的工作状态。
步骤S307,将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
步骤S308,当所述BE中具有最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
对每个BE而言,每个BE有若干区,每个区有若干个块寄存器,每个块寄存器和迁移信息的块信息一致,包括源块起始地址、目的块起始地址、块长度、是否是该区的最后一块标识等寄存器组。每个BE的每个区不可同时工作,只可串行迁移内存,但多个BE可以并行工作。每个区的工作状态有空闲、忙碌、正在配置寄存器、寄存器配置完成正在等待启动迁移等这几个状态。
BE在工作时至多1个区处于busy状态,其他区的状态可以并发。假设一个BE划分为2个区,那至多1个区为busy,剩下一个区可以为其他3种状态。当一个区的busy结束时,BE会轮询其他区是否有wait状态,有则启动该区迁移,置为busy状态。
对一个迁移任务来说,其生成的迁移信息,根据BE的区的个数以及每个区的内存块个数来确定使用几个区或者多次使用几个区来完成迁移。
当迁移任务生成迁移信息之后,发现选择的BE是忙碌的,则把生成的迁移信息加入该BE的队列队尾中,等待被迁移;当迁移任务生成迁移信息之后,发现选择的BE是空闲的,把生成的迁移信息加入该BE的队列队首中,然后按照迁移信息依次配置BE的若干区并依次启动区来迁移内存,当该任务结束时,BE硬件会上报一个中断给OS,OS接收到中断后,判断这个迁移任务已结束,通知迁移任务从队列中删除,然后通知队列中的下一个任务进行迁移。
步骤S309,当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
在内存数据迁移过程中,有两种实现。一种是单任务管理,虽然系统有多个BE,但是每次只能有一个任务在使用BE进行迁移,这种设计比较简单,不用考虑多个任务的并发,如图8所示的BE单任务管理流程图。
另一种为多任务管理,系统中触发内存迁移的任务可以并发执行,但是每个BE每次只能迁移一个任务,当有多个任务都需要同一个BE来进行迁移时,就需要进入BE的排队队列中等待,如图9所示的BE的多任务管理示意图。每个BE有一个运行队列,初始化为空,当有任务需要该BE进行内存迁移时,首先要判断该BE的运行队列是否为空,如果为空则发送数据到ACPI层进行迁移,如果不为空,则需要插入到该BE的运行队列的队尾。当BE迁移完一个任务时需要检查其所属的运行队列是否为空,若为空则退出,否则取出队列的队首任务进行内存迁移。
事实上,不论是单任务管理还是多任务管理,针对依次或同时进行迁移的多个迁移任务中的每个迁移任务,各个BE中都设置有一个迁移排队队列,将每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,以使将每个迁移任务等待其所在队列的所属BE进行迁移。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图10,为本发明实施例提供的又一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S401,当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
在存储系统例如NUMA架构的存储系统中,包括若干个节点,每个节点有自己的CPU和内存,在内存中,存储的最小单位是页,多个页构成一个内存块。当OS接收到对存储系统中的任意一个源节点的内存数据迁移请求时,例如内存数据迁移请求是进程的内存迁移或内存热移除引起的,由于待迁移数据是以页为单位存储的,在本实施例中,OS向存储系统发送对待迁移数据进行划分的指令,存储系统中的内存迁移装置根据待迁移数据的物理地址的连续性,将待迁移数据按内存块进行划分,例如,如果当前页的物理地址与上一页的物理地址是连续的,则将当前页加入内存块中,块长度增加,合并内存页;如果当前页的物理地址与上一页的物理地址是不连续的,在新生成一个内存块,记录块的起始地址。划分后的每个内存块中页的物理地址是连续的。划分后,确定待迁移数据所占用的源节点的内存块数。
步骤S402,接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
根据内存数据迁移请求指示的目的节点,OS在该目的节点上申请与源节点划分确定的内存块数和大小一致的空闲内存块。当接收到目的节点的内存块的获取指令时,在目的节点上保留与源节点划分确定的内存块数和大小一致的空闲内存块,即不接收操作系统对该目的节点上已申请的内存块的操作,存储系统保留该目的节点上已申请的内存块,暂时不进行数据操作。
步骤S403,当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
当接收到内存迁移指令时,将源节点中的待迁移数据按划分后的内存块迁移到目的节点上申请的内存块中,即按块进行迁移,而不是按页进行迁移,每次迁移的是一个内存块中的数据。由于按块进行迁移,减少了迁移时的上下文切换,提高了内存迁移的效率。
迁移数据的控制可以由存储系统集中控制,也可以由连接源节点和目的节点的互联模块上的硬件加速引擎控制。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
请参阅图11,为本发明实施例提供的又一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S501,当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
步骤S502,接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
步骤S501和步骤S502分别与图10所示实施例的步骤S401和步骤S402相同,在此不再赘述。与前述实施例不同之处在于步骤S503:
步骤S503,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE,当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
本实施例以NUMA存储系统为例,该存储系统包含至少两个NUMA节点,对于全互联的NUMA架构,每个NUMA节点通过互联模块连接,对于非全互联的NUMA架构,一个NUMA节点跨越若干个互联模块与另一个NUMA节点连接。在该存储系统中每个互联模块中设置一个BE,由源节点和目的节点之间的BE控制数据的迁移。BE根据待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,控制待迁移数据按块进行迁移,直至最后一个内存块完成数据迁移。由于使用BE控制迁移,而不是由整个存储系统的CPU来控制迁移,大幅降低了CPU占用率,释放CPU进行其他业务。
而对于BE的选择,选择与源节点连接的BE或与目的节点连接的BE去迁移都是可行的,考虑到一个迁移任务从源节点迁移到多个目的节点时使用源端BE只能串行,而使用目的端BE可以并行,本实施例优选采用目的端BE进行内存数据迁移。
本实施例可以通过软件、硬件或软件与硬件的结合来实现,硬件可以是整个存储系统的CPU,也可以是一个单独的硬件,软件上是由操作系统(OperatingSystem,OS)通过高级配置和电源管理接口(AdvancedConfigurationandPowerManagementInterface,ACPI)驱动以及基本输入输出系统(BasicInputOutputSystem,BIOS)层来与BE进行交互。
下面对步骤S503的实施进行进一步的说明:
请参阅图12,为对图11所示的步骤S503的进一步细化的实施例的流程图,该步骤S503包括:
步骤S5031,当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
步骤S5032,所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中。
首先,了解一下BE的内部结构:在NUMA架构的存储系统上,互联模块可为互联芯片、线缆等。本发明实施例提供在互联模块上的硬件加速引擎BE,该引擎可以由多组寄存器构成,每组寄存器可搬迁一块连续的内存。为了并发,在一个BE硬件上划分两个或两个以上的区,每个区有若干组寄存器,如表1示例的一个BE硬件有2个区,每个区有n个块,每块有若干个寄存器。
在对待迁移数据划分为多个内存块后,可以知道每一块的起始地址、每一块的长度,申请了目的节点的内存块后,也可以知道每一块的起始地址,由于源节点和目的节点的内存块是一一映射的,因此目的节点的每一块的长度是与源节点对应的,以及可以知道源节点或目的节点中的哪一块是待迁移的内存块中的最后一块,对是否是最后一块进行标识。
将OS生成的这些迁移信息写入BE中的各个区的各个内存块,BE根据其区中的每一块中的迁移信息,控制将待迁移数据依次迁移到目的节点上的内存块中。
步骤S5033,当所述BE中具有所述最后一块的标识的内存块迁移完成后,所述BE通过基本输入输出系统BIOS发送迁移完成通知。
BE控制将待迁移数据依次迁移到目的节点上的内存块中,当具有最后一块的标识的内存块迁移完成后,BE通过BIOS发送迁移完成通知,BIOS再通过ACPI驱动转发给OS,OS接收到迁移完成通知后,进行相应的处理。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图13,为本发明实施例提供的又一种内存迁移方法的流程图,该方法包括以下步骤:
步骤S601,当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
步骤S602,接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
对于一个迁移任务,其需要搬迁数据所在的NUMA节点为源节点,其搬迁的目的地NUMA节点为目的节点。一开始迁移任务的搬迁数据只以不连续的页的形式存在,我们通过页的物理地址是否连续生成了若干内存块,每个内存块内页的物理地址连续,内存块之间的页的物理地址不连续,由此一个迁移任务的搬迁数据以不连续的页的形式变为若干内存块的形式。接下来,我们根据生成的每一内存块的大小(连续页的数量)在目的节点上申请相应大小的空闲内存块,由此在源节点的内存块都是需要搬迁的数据,而在目的节点的内存块都是空白的,都是源节点相应内存块要搬迁的目的地。
步骤S603,当所述BE接收到至少一个迁移任务时,所述BE设置有一个迁移排队队列,将所述每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,其中,所述数据迁移请求划分为一个迁移任务。
步骤S604,所述BE根据所述排队号对所述至少一个迁移任务进行迁移。
步骤S605,根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,所述BE将至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中。
步骤S606,所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
步骤S607,当所述BE中具有最后一块的标识的内存块迁移完成后,所述BE通过基本输入输出系统BIOS发送迁移完成通知。
由于OS可能同时接收到多个数据迁移请求,需要频繁的对存储系统进行操作,在本实施例中,将一个数据迁移请求划分为一个迁移任务,多个数据迁移请求对应多个迁移任务。以下针对每个数据迁移请求进行处理。
当在目的节点申请完相应的内存块以后,我们需要根据源节点和目的节点的内存块信息生成BE迁移所需要的迁移信息,这些迁移信息是用来配置BE的若干寄存器的。迁移信息的块信息包括源块起始地址、目的块起始地址、块长度、是否是最后一块标识等信息,这样一个迁移任务就生成了若干迁移信息存放到相应的BE队列中。
对每个BE而言,每个BE有若干区,每个区有若干个块寄存器,每个块寄存器和迁移信息的块信息一致,包括源块起始地址、目的块起始地址、块长度、是否是该区的最后一块标识等寄存器组。每个BE的每个区不可同时工作,只可串行迁移内存,但多个BE可以并行工作。每个区的工作状态有空闲、忙碌、正在配置寄存器、寄存器配置完成正在等待启动迁移等这几个状态。
BE在工作时至多1个区处于busy状态,其他区的状态可以并发。假设一个BE划分为2个区,那至多1个区为busy,剩下一个区可以为其他3种状态。当一个区的busy结束时,BE会轮询其他区是否有wait状态,有则启动该区迁移,置为busy状态。
对一个迁移任务来说,其生成的迁移信息,根据BE的区的个数以及每个区的内存块个数来确定使用几个区或者多次使用几个区来完成迁移。
当迁移任务生成迁移信息之后,发现选择的BE是忙碌的,则把生成的迁移信息加入该BE的队列队尾中,等待被迁移;当迁移任务生成迁移信息之后,发现选择的BE是空闲的,把生成的迁移信息加入该BE的队列队首中,然后按照迁移信息依次配置BE的若干区并依次启动区来迁移内存,当该任务结束时,BE硬件会上报一个中断给OS,OS接收到中断后,判断这个迁移任务已结束,通知迁移任务从队列中删除,然后通知队列中的下一个任务进行迁移。
在内存数据迁移过程中,有两种实现。一种是单任务管理,虽然系统有多个BE,但是每次只能有一个任务在使用BE进行迁移,这种设计比较简单,不用考虑多个任务的并发,如图8所示的BE单任务管理流程图。
另一种为多任务管理,系统中触发内存迁移的任务可以并发执行,但是每个BE每次只能迁移一个任务,当有多个任务都需要同一个BE来进行迁移时,就需要进入BE的排队队列中等待,如图9所示的BE的多任务管理示意图。每个BE有一个运行队列,初始化为空,当有任务需要该BE进行内存迁移时,首先要判断该BE的运行队列是否为空,如果为空则发送数据到ACPI层进行迁移,如果不为空,则需要插入到该BE的运行队列的队尾。当BE迁移完一个任务时需要检查其所属的运行队列是否为空,若为空则退出,否则取出队列的队首任务进行内存迁移。
事实上,不论是单任务管理还是多任务管理,针对依次或同时进行迁移的多个迁移任务中的每个迁移任务,各个BE中都设置有一个迁移排队队列,将每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,以使将每个迁移任务等待其所在队列的所属BE进行迁移。
根据本发明实施例提供的一种内存迁移方法,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图14,为本发明实施例提供的一种内存迁移装置的结构示意图,该装置1000包括:
第一确定单元11,用于当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
在存储系统例如NUMA架构的存储系统中,包括若干个节点,每个节点有自己的CPU和内存,在内存中,存储的最小单位是页,多个页构成一个内存块。当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,例如内存数据迁移请求是进程的内存迁移或内存热移除引起的,由于待迁移数据是以页为单位存储的,在本实施例中,根据待迁移数据的物理地址的连续性,将待迁移数据按内存块进行划分,例如,如果当前页的物理地址与上一页的物理地址是连续的,则将当前页加入内存块中,块长度增加,合并内存页;如果当前页的物理地址与上一页的物理地址是不连续的,在新生成一个内存块,记录块的起始地址。划分后的每个内存块中页的物理地址是连续的。第一确定单元11进行划分后,确定待迁移数据所占用的源节点的内存块数。
第一获取单元12,用于获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
第一获取单元12根据内存数据迁移请求指示的目的节点,在该目的节点上申请与第一确定单元11确定的内存块数和大小一致的空闲内存块。此时,操作系统不对该目的节点上已申请的内存块进行操作,存储系统保留该目的节点上已申请的内存块,暂时不进行数据操作。
迁移单元13,用于将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
迁移单元13将源节点中的待迁移数据按划分后的内存块迁移到目的节点上申请的内存块中,即按块进行迁移,而不是按页进行迁移,每次迁移的是一个内存块中的数据。由于按块进行迁移,减少了迁移时的上下文切换,提高了内存迁移的效率。
迁移数据的控制可以由存储系统集中控制,也可以由连接源节点和目的节点的互联模块上的硬件加速引擎控制。
根据本发明实施例提供的一种内存迁移装置,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
请参阅图15,为本发明实施例提供的另一种内存迁移装置的结构示意图,该装置2000包括:
第一确定单元21,用于当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
第一获取单元22,用于获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
第一确定单元21和第一获取单元22的功能分别与图14所示实施例的第一确定单元11和第一获取单元12相同,在此不再赘述。与前述实施例不同之处在于迁移单元23:
迁移单元23,用于当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
本实施例以NUMA存储系统为例,该存储系统包含至少两个NUMA节点,对于全互联的NUMA架构,每个NUMA节点通过互联模块连接,对于非全互联的NUMA架构,一个NUMA节点跨越若干个互联模块与另一个NUMA节点连接。在该存储系统中每个互联模块中设置一个BE,由源节点和目的节点之间的BE控制数据的迁移。BE根据待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,控制待迁移数据按块进行迁移,直至最后一个内存块完成数据迁移。由于使用BE控制迁移,而不是由整个存储系统的CPU来控制迁移,大幅降低了CPU占用率,释放CPU进行其他业务。
而对于BE的选择,选择与源节点连接的BE或与目的节点连接的BE去迁移都是可行的,考虑到一个迁移任务从源节点迁移到多个目的节点时使用源端BE只能串行,而使用目的端BE可以并行,本实施例优选采用目的端BE进行内存数据迁移。
本实施例可以通过软件、硬件或软件与硬件的结合来实现,硬件可以是整个存储系统的CPU,也可以是一个单独的硬件,软件上是由操作系统(OperatingSystem,OS)通过高级配置和电源管理接口(AdvancedConfigurationandPowerManagementInterface,ACPI)驱动以及基本输入输出系统(BasicInputOutputSystem,BIOS)层来与BE进行交互。
作为一种实施方式,下面对迁移单元23的内部结构作进一步说明:
该迁移单元23包括生成单元231、第一写入单元232和接收单元233。
生成单元231,用于根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
首先,了解一下BE的内部结构:在NUMA架构的存储系统上,互联模块可为互联芯片、线缆等。本发明实施例提供在互联模块上的硬件加速引擎BE,该引擎可以由多组寄存器构成,每组寄存器可搬迁一块连续的内存。为了并发,在一个BE硬件上划分两个或两个以上的区,每个区有若干组寄存器,表1示例的一个BE硬件有2个区,每个区有n个块,每块有若干个寄存器。
在对待迁移数据划分为多个内存块后,可以知道每一块的起始地址、每一块的长度,申请了目的节点的内存块后,也可以知道每一块的起始地址,由于源节点和目的节点的内存块是一一映射的,因此目的节点的每一块的长度是与源节点对应的,以及可以知道源节点或目的节点中的哪一块是待迁移的内存块中的最后一块,对是否是最后一块进行标识。
第一写入单元232,用于将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中。
第一写入单元232将生成单元231生成的这些迁移信息写入BE中的各个区的各个内存块,BE根据其区中的每一块中的迁移信息,控制将待迁移数据依次迁移到目的节点上的内存块中。
接收单元233,用于当所述BE中具有最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
BE控制将待迁移数据依次迁移到目的节点上的内存块中,当具有最后一块的标识的内存块迁移完成后,BE通过BIOS发送迁移完成通知,BIOS再通过ACPI驱动转发给OS,OS接收到迁移完成通知后,进行相应的处理。
根据本发明实施例提供的一种内存迁移装置,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图16,为本发明实施例提供的又一种内存迁移装置的结构示意图,该装置3000包括:
第一确定单元31,用于当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
第一获取单元32,用于获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
对于一个迁移任务,其需要搬迁数据所在的NUMA节点为源节点,其搬迁的目的地NUMA节点为目的节点。一开始迁移任务的搬迁数据只以不连续的页的形式存在,我们通过页的物理地址是否连续生成了若干内存块,每个内存块内页的物理地址连续,内存块之间的页的物理地址不连续,由此一个迁移任务的搬迁数据以不连续的页的形式变为若干内存块的形式。接下来,我们根据生成的每一内存块的大小(连续页的数量)在目的节点上申请相应大小的空闲内存块,由此在源节点的内存块都是需要搬迁的数据,而在目的节点的内存块都是空白的,都是源节点相应内存块要搬迁的目的地。
划分单元33,用于将所述数据迁移请求划分为一个迁移任务。
由于OS可能同时接收到多个数据迁移请求,需要频繁的对存储系统进行操作,在本实施例中,将一个数据迁移请求划分为一个迁移任务,多个数据迁移请求对应多个迁移任务。以下针对每个数据迁移请求进行处理。
迁移单元34,用于当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
在本实施例中,迁移单元34包括生成单元341、第一写入单元342和接收单元343:
生成单元341,用于根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
当在目的节点申请完相应的内存块以后,我们需要根据源节点和目的节点的内存块信息生成BE迁移所需要的迁移信息,这些迁移信息是用来配置BE的若干寄存器的。迁移信息的块信息包括源块起始地址、目的块起始地址、块长度、是否是最后一块标识等信息,这样一个迁移任务就生成了若干迁移信息存放到相应的BE队列中。
第一写入单元342,用于将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中。
在本实施例中,第一写入单元342包括第二确定单元00、第二获取单元01和第二写入单元02:
第二确定单元00,用于根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数。
第二获取单元01,用于获取所述BE的至少一个区中每个区的工作状态。
第二写入单元02,用于将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
接收单元343,用于当所述BE中具有最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
对每个BE而言,每个BE有若干区,每个区有若干个块寄存器,每个块寄存器和迁移信息的块信息一致,包括源块起始地址、目的块起始地址、块长度、是否是该区的最后一块标识等寄存器组。每个BE的每个区不可同时工作,只可串行迁移内存,但多个BE可以并行工作。每个区的工作状态有空闲、忙碌、正在配置寄存器、寄存器配置完成正在等待启动迁移等这几个状态。
BE在工作时至多1个区处于busy状态,其他区的状态可以并发。假设一个BE划分为2个区,那至多1个区为busy,剩下一个区可以为其他3种状态。当一个区的busy结束时,BE会轮询其他区是否有wait状态,有则启动该区迁移,置为busy状态。
对一个迁移任务来说,其生成的迁移信息,根据BE的区的个数以及每个区的内存块个数来确定使用几个区或者多次使用几个区来完成迁移。
当迁移任务生成迁移信息之后,发现选择的BE是忙碌的,则把生成的迁移信息加入该BE的队列队尾中,等待被迁移;当迁移任务生成迁移信息之后,发现选择的BE是空闲的,把生成的迁移信息加入该BE的队列队首中,然后按照迁移信息依次配置BE的若干区并依次启动区来迁移内存,当该任务结束时,BE硬件会上报一个中断给OS,OS接收到中断后,判断这个迁移任务已结束,通知迁移任务从队列中删除,然后通知队列中的下一个任务进行迁移。
迁移单元34还用于当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
在内存数据迁移过程中,有两种实现。一种是单任务管理,虽然系统有多个BE,但是每次只能有一个任务在使用BE进行迁移,这种设计比较简单,不用考虑多个任务的并发,如图8所示的BE单任务管理流程图。
另一种为多任务管理,系统中触发内存迁移的任务可以并发执行,但是每个BE每次只能迁移一个任务,当有多个任务都需要同一个BE来进行迁移时,就需要进入BE的排队队列中等待,如图9所示的BE的多任务管理示意图。每个BE有一个运行队列,初始化为空,当有任务需要该BE进行内存迁移时,首先要判断该BE的运行队列是否为空,如果为空则发送数据到ACPI层进行迁移,如果不为空,则需要插入到该BE的运行队列的队尾。当BE迁移完一个任务时需要检查其所属的运行队列是否为空,若为空则退出,否则取出队列的队首任务进行内存迁移。
事实上,不论是单任务管理还是多任务管理,针对依次或同时进行迁移的多个迁移任务中的每个迁移任务,各个BE中都设置有一个迁移排队队列,将每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,以使将每个迁移任务等待其所在队列的所属BE进行迁移。
根据本发明实施例提供的一种内存迁移装置,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图17,为本发明实施例提供的又一种内存迁移装置的结构示意图,该装置4000包括:
确定单元41,用于当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
在存储系统例如NUMA架构的存储系统中,包括若干个节点,每个节点有自己的CPU和内存,在内存中,存储的最小单位是页,多个页构成一个内存块。当OS接收到对存储系统中的任意一个源节点的内存数据迁移请求时,例如内存数据迁移请求是进程的内存迁移或内存热移除引起的,由于待迁移数据是以页为单位存储的,在本实施例中,OS向存储系统发送对待迁移数据进行划分的指令,存储系统中的内存迁移装置根据待迁移数据的物理地址的连续性,将待迁移数据按内存块进行划分,例如,如果当前页的物理地址与上一页的物理地址是连续的,则将当前页加入内存块中,块长度增加,合并内存页;如果当前页的物理地址与上一页的物理地址是不连续的,在新生成一个内存块,记录块的起始地址。划分后的每个内存块中页的物理地址是连续的。确定单元41进行划分后,确定待迁移数据所占用的源节点的内存块数。
保留单元42,用于接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
根据内存数据迁移请求指示的目的节点,OS在该目的节点上申请与源节点划分确定的内存块数和大小一致的空闲内存块。当接收到目的节点的内存块的获取指令时,保留单元42在目的节点上保留与源节点划分确定的内存块数和大小一致的空闲内存块,即不接收操作系统对该目的节点上已申请的内存块的操作,存储系统保留该目的节点上已申请的内存块,暂时不进行数据操作。
迁移单元43,用于当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
当接收到内存迁移指令时,迁移单元43将源节点中的待迁移数据按划分后的内存块迁移到目的节点上申请的内存块中,即按块进行迁移,而不是按页进行迁移,每次迁移的是一个内存块中的数据。由于按块进行迁移,减少了迁移时的上下文切换,提高了内存迁移的效率。
迁移数据的控制可以由存储系统集中控制,也可以由连接源节点和目的节点的互联模块上的硬件加速引擎控制。
根据本发明实施例提供的一种内存迁移装置,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率。
请参阅图18,为本发明实施例提供的一种存储系统的结构示意图,在该存储系统中包括至少两个节点,至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE,该BE对源节点和目的节点之间的内存数据迁移进行控制,该装置包括确定单元、保留单元和BE。
确定单元,用于当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数。
保留单元,用于接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块。
对于一个迁移任务,其需要搬迁数据所在的NUMA节点为源节点,其搬迁的目的地NUMA节点为目的节点。一开始迁移任务的搬迁数据只以不连续的页的形式存在,我们通过页的物理地址是否连续生成了若干内存块,每个内存块内页的物理地址连续,内存块之间的页的物理地址不连续,由此一个迁移任务的搬迁数据以不连续的页的形式变为若干内存块的形式。接下来,我们根据生成的每一内存块的大小(连续页的数量)在目的节点上申请相应大小的空闲内存块,由此在源节点的内存块都是需要搬迁的数据,而在目的节点的内存块都是空白的,都是源节点相应内存块要搬迁的目的地。
硬件加速引擎BE,用于当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,控制将所述待迁移数据从所述源节点迁移到所述目的节点。
本实施例以NUMA存储系统为例,该存储系统包含至少两个NUMA节点,对于全互联的NUMA架构,每个NUMA节点通过互联模块连接,对于非全互联的NUMA架构,一个NUMA节点跨越若干个互联模块与另一个NUMA节点连接。在该存储系统中每个互联模块中设置一个BE,由源节点和目的节点之间的BE控制数据的迁移。BE根据待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,控制待迁移数据按块进行迁移,直至最后一个内存块完成数据迁移。由于使用BE控制迁移,而不是由整个存储系统的CPU来控制迁移,大幅降低了CPU占用率,释放CPU进行其他业务。
而对于BE的选择,选择与源节点连接的BE或与目的节点连接的BE去迁移都是可行的,考虑到一个迁移任务从源节点迁移到多个目的节点时使用源端BE只能串行,而使用目的端BE可以并行,本实施例优选采用目的端BE进行内存数据迁移。
本实施例可以通过软件、硬件或软件与硬件的结合来实现,硬件可以是整个存储系统的CPU,也可以是一个单独的硬件,软件上是由操作系统(OperatingSystem,OS)通过高级配置和电源管理接口(AdvancedConfigurationandPowerManagementInterface,ACPI)驱动以及基本输入输出系统(BasicInputOutputSystem,BIOS)层来与BE进行交互。
下面对BE的功能进行进一步的说明:
当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块。
所述BE还用于根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中。
当所述BE接收到至少一个迁移任务时,所述BE还用于设置有一个迁移排队队列,将所述每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,其中,所述数据迁移请求划分为一个迁移任务。
所述BE还用于根据所述排队号对所述至少一个迁移任务进行迁移。
根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,所述BE用于将至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中。
所述BE用于根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
以下是关于BE控制内存数据迁移的具体实现:
首先,了解一下BE的内部结构:在NUMA架构的存储系统上,互联模块可为互联芯片、线缆等。本发明实施例提供在互联模块上的硬件加速引擎BE,该引擎可以由多组寄存器构成,每组寄存器可搬迁一块连续的内存。为了并发,在一个BE硬件上划分两个或两个以上的区,每个区有若干组寄存器,如表1示例的一个BE硬件有2个区,每个区有n个块,每块有若干个寄存器。
由于OS可能同时接收到多个数据迁移请求,需要频繁的对存储系统进行操作,在本实施例中,将一个数据迁移请求划分为一个迁移任务,多个数据迁移请求对应多个迁移任务。以下针对每个数据迁移请求进行处理。
当在目的节点申请完相应的内存块以后,我们需要根据源节点和目的节点的内存块信息生成BE迁移所需要的迁移信息,这些迁移信息是用来配置BE的若干寄存器的。迁移信息的块信息包括源块起始地址、目的块起始地址、块长度、是否是最后一块标识等信息,这样一个迁移任务就生成了若干迁移信息存放到相应的BE队列中。
对每个BE而言,每个BE有若干区,每个区有若干个块寄存器,每个块寄存器和迁移信息的块信息一致,包括源块起始地址、目的块起始地址、块长度、是否是该区的最后一块标识等寄存器组。每个BE的每个区不可同时工作,只可串行迁移内存,但多个BE可以并行工作。每个区的工作状态有空闲、忙碌、正在配置寄存器、寄存器配置完成正在等待启动迁移等这几个状态。
BE在工作时至多1个区处于busy状态,其他区的状态可以并发。假设一个BE划分为2个区,那至多1个区为busy,剩下一个区可以为其他3种状态。当一个区的busy结束时,BE会轮询其他区是否有wait状态,有则启动该区迁移,置为busy状态。
对一个迁移任务来说,其生成的迁移信息,根据BE的区的个数以及每个区的内存块个数来确定使用几个区或者多次使用几个区来完成迁移。
当迁移任务生成迁移信息之后,发现选择的BE是忙碌的,则把生成的迁移信息加入该BE的队列队尾中,等待被迁移;当迁移任务生成迁移信息之后,发现选择的BE是空闲的,把生成的迁移信息加入该BE的队列队首中,然后按照迁移信息依次配置BE的若干区并依次启动区来迁移内存,当该任务结束时,BE硬件会上报一个中断给OS,OS接收到中断后,判断这个迁移任务已结束,通知迁移任务从队列中删除,然后通知队列中的下一个任务进行迁移。
在内存数据迁移过程中,有两种实现。一种是单任务管理,虽然系统有多个BE,但是每次只能有一个任务在使用BE进行迁移,这种设计比较简单,不用考虑多个任务的并发,如图8所示的BE单任务管理流程图。
另一种为多任务管理,系统中触发内存迁移的任务可以并发执行,但是每个BE每次只能迁移一个任务,当有多个任务都需要同一个BE来进行迁移时,就需要进入BE的排队队列中等待,如图9所示的BE的多任务管理示意图。每个BE有一个运行队列,初始化为空,当有任务需要该BE进行内存迁移时,首先要判断该BE的运行队列是否为空,如果为空则发送数据到ACPI层进行迁移,如果不为空,则需要插入到该BE的运行队列的队尾。当BE迁移完一个任务时需要检查其所属的运行队列是否为空,若为空则退出,否则取出队列的队首任务进行内存迁移。
事实上,不论是单任务管理还是多任务管理,针对依次或同时进行迁移的多个迁移任务中的每个迁移任务,各个BE中都设置有一个迁移排队队列,将每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,以使将每个迁移任务等待其所在队列的所属BE进行迁移。
当所述BE中具有所述最后一块的标识的内存块迁移完成后,所述BE用于通过基本输入输出系统BIOS发送迁移完成通知。
BE控制将待迁移数据依次迁移到目的节点上的内存块中,当具有最后一块的标识的内存块迁移完成后,BE通过BIOS发送迁移完成通知,BIOS再通过ACPI驱动转发给OS,OS接收到迁移完成通知后,进行相应的处理。
根据本发明实施例提供的一种内存迁移装置,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图19,为本发明实施例提供的一种内存迁移设备的结构示意图,本实施例的内存迁移设备5000包括处理器51、存储器52、输入设备53、输出设备54以及总线系统55,其中:
处理器51控制内存迁移设备5000的操作,处理器51还可以称为中央处理单元(CentralProcessingUnit,CPU)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器52可以包括只读存储器和随机存取存储器,并向处理器51提供指令和数据。存储器52的一部分还可以包括非易失性随机存取存储器(NVRAM)。
内存迁移设备5000的各个组件通过总线系统55耦合在一起,该总线可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总线、外部设备互连(PeripheralComponentInterconnect,PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,EISA)总线等。所述总线可以是一条或多条物理线路,当是多条物理线路时可以分为地址总线、数据总线、控制总线等。在本发明的其它一些实施例中,处理器51、存储器52以及输入设备53、输出设备54也可以通过通信线路直接连接。
输入设备53可以具体实现为鼠标、键盘、麦克风等,而输出设备54可以具体实现为显示器、音频设备、视频设备。当然,输入设备53和输出设备54也可以通过一个输入输出设备来实现其功能,比如实现为可触摸的屏幕。
其中,处理器51读取存储器52中的计算机程序用以执行以下步骤:
当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
作为一种实施方式,处理器51执行所述将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中的步骤,具体为:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
作为另一种实施方式,所述当所述源节点和目的节点不为同一个节点时,处理器51执行所述根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点的步骤,包括:
根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
作为又一种实施方式,处理器51执行所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中的步骤,包括:
根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数;
获取所述BE的至少一个区中每个区的工作状态;
将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
作为又一种实施方式,处理器51执行所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中的步骤,还包括:
将所述数据迁移请求划分为一个迁移任务;
当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
作为又一种实施方式,处理器51执行所述当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移的步骤,具体包括:
针对依次或同时进行迁移的所述至少一个迁移任务中的每个迁移任务,所述至少一个BE中的每个所述BE设置有一个迁移排队队列,将所述每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,以使将所述每个迁移任务等待其所在队列的所属BE进行迁移。
根据本发明实施例提供的一种内存迁移设备,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
请参阅图20,为本发明实施例提供的另一种内存迁移设备的结构示意图,本实施例的内存迁移设备6000包括处理器61、存储器62、输入设备63、输出设备64以及总线系统65,其中:
处理器61控制内存迁移设备6000的操作,处理器61还可以称为中央处理单元(CentralProcessingUnit,CPU)。处理器61可能是一种集成电路芯片,具有信号的处理能力。处理器61还可以是通用处理器、数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器62可以包括只读存储器和随机存取存储器,并向处理器61提供指令和数据。存储器62的一部分还可以包括非易失性随机存取存储器(NVRAM)。
内存迁移设备6000的各个组件通过总线系统65耦合在一起,该总线可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总线、外部设备互连(PeripheralComponentInterconnect,PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,EISA)总线等。所述总线可以是一条或多条物理线路,当是多条物理线路时可以分为地址总线、数据总线、控制总线等。在本发明的其它一些实施例中,处理器61、存储器62以及输入设备63、输出设备64也可以通过通信线路直接连接。
输入设备63可以具体实现为鼠标、键盘、麦克风等,而输出设备64可以具体实现为显示器、音频设备、视频设备。当然,输入设备63和输出设备64也可以通过一个输入输出设备来实现其功能,比如实现为可触摸的屏幕。
其中,处理器61读取存储器62中的计算机程序用以执行以下步骤:
当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
作为一种实施方式,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE;
处理器61执行所述当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中的步骤,包括:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
作为另一种实施方式,处理器61执行所述当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点的步骤,包括:
当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述至少一个区的最后一块标识的内存块迁移完成后,所述BE通过基本输入输出系统BIOS发送迁移完成通知。
作为又一种实施方式,处理器61执行所述当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中的步骤,包括:
根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,所述BE将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
作为又一种实施方式,处理器61执行所述当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中的步骤,包括:
当所述BE接收到至少一个迁移任务时,所述BE设置有一个迁移排队队列,将所述每个迁移任务的迁移信息插入到对应BE队列中,获取一个排队号,其中,所述数据迁移请求划分为一个迁移任务;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
所述BE根据所述排队号对所述至少一个迁移任务进行迁移。
根据本发明实施例提供的一种内存迁移设备,通过在源节点将待迁移数据按照内存块进行合并划分,在目的节点上获取物理地址连续的内存块,由BE按照内存块将待迁移数据从源节点迁移到目的节点的内存块中,可以在内存迁移过程中,减少迁移时的上下文切换,提高内存迁移的效率;且利用专门的硬件加速引擎大幅降低了CPU占用率,释放CPU进行其他业务。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括随机存取存储器(RandomAccessMemory,RAM)、只读存储器(Read-OnlyMemory,ROM)、电可擦可编程只读存储器(ElectricallyErasableProgrammableRead-OnlyMemory,EEPROM)、只读光盘(CompactDiscRead-OnlyMemory,CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DigitalSubscriberLine,DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种内存迁移方法,其特征在于,包括:
当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
2.如权利要求1所述的方法,其特征在于,所述将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中,具体为:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
3.如权利要求2所述的方法,其特征在于,所述当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点,包括:
根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
4.如权利要求3所述的方法,其特征在于,所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数;
获取所述BE的至少一个区中每个区的工作状态;
将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
5.如权利要求3或4所述的方法,其特征在于,所述将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,还包括:
将所述数据迁移请求划分为一个迁移任务;
当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
6.一种内存迁移方法,其特征在于,包括:
当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
7.如权利要求6所述的方法,其特征在于,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE;
所述当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中,包括:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
8.如权利要求7所述的方法,其特征在于,所述当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点,包括:
当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
当所述BE中具有所述至少一个区的最后一块标识的内存块迁移完成后,所述BE通过基本输入输出系统BIOS发送迁移完成通知。
9.如权利要求8所述的方法,其特征在于,所述当接收到至少一个迁移信息的写入指令时,所述BE将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,包括:
根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,所述BE将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中;
所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中,包括:
所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
10.一种内存迁移装置,其特征在于,包括:
第一确定单元,用于当接收到对存储系统中的任意一个源节点的内存数据迁移请求时,根据待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
第一获取单元,用于获取所述存储系统中的目的节点上与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
迁移单元,用于将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
11.如权利要求10所述的装置,其特征在于,所述迁移单元具体用于:
当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,由所述源节点和目的节点之间的硬件加速引擎BE控制将所述待迁移数据从所述源节点迁移到所述目的节点;其中,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个BE。
12.如权利要求11所述的装置,其特征在于,所述迁移单元包括:
生成单元,用于根据所述待迁移数据划分后所占用的源节点的内存块数和获取的目的节点的内存块数,生成至少一个迁移信息,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;
第一写入单元,用于将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,以使所述BE根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;
接收单元,用于当所述BE中具有所述最后一块的标识的内存块迁移完成后,接收所述BE通过基本输入输出系统BIOS发送的迁移完成通知。
13.如权利要求12所述的装置,其特征在于,所述第一写入单元包括:
第二确定单元,用于根据所述至少一个迁移信息以及所述BE的区的个数和每个区中内存块的个数,确定进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数;
第二获取单元,用于获取所述BE的至少一个区中每个区的工作状态;
第二写入单元,用于将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中,以使所述BE根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
14.如权利要求12或13所述的装置,其特征在于,还包括:
划分单元,用于将所述数据迁移请求划分为一个迁移任务;
所述迁移单元用于当所述存储系统中存在至少一个迁移任务时,所述至少一个迁移任务由至少一个BE依次或同时进行迁移。
15.一种内存迁移装置,其特征在于,所述内存迁移装置位于存储系统中,所述存储系统包括至少一个节点,所述装置包括:
确定单元,用于当接收到将存储系统中的任意一个源节点中的待迁移数据进行划分的指令时,根据所述待迁移数据的物理地址的连续性,将所述待迁移数据按内存块进行划分,每个内存块中所述待迁移数据的物理地址是连续的,确定所述待迁移数据划分后所占用的源节点的内存块数;
保留单元,用于接收获取对应所述待迁移数据的目的节点的内存块的指令,在所述目的节点上保留与所述待迁移数据划分后所占用的源节点的内存块数一致的内存块;
迁移单元,用于当接收到内存迁移指令时,将所述待迁移数据按划分后的内存块迁移到所述目的节点上的内存块中。
16.如权利要求15所述的装置,其特征在于,所述存储系统包括至少两个节点,所述至少两个节点通过互联模块连接,每个所述互联模块中包含一个硬件加速引擎BE;
所述迁移单元为所述BE,所述BE用于当所述源节点和目的节点不为同一个节点时,根据所述待迁移数据划分后所占用的源节点的内存块数和保留的目的节点的内存块数,所述源节点和目的节点之间的BE控制将所述待迁移数据从所述源节点迁移到所述目的节点。
17.如权利要求16所述的装置,其特征在于,所述BE用于:
当接收到至少一个迁移信息的写入指令时,将所述至少一个迁移信息写入所述BE中的至少一个区中的至少一个内存块中,所述至少一个迁移信息包括进行迁移的源节点的每一个内存块的起始地址、目的节点的每一个内存块的起始地址、进行迁移的源节点或目的节点的每一个内存块的块长度以及所述源节点或目的节点中当前进行迁移的内存块是否是最后一块的标识,其中,所述BE包括至少一个区,所述至少一个区中的每个区包括至少一个内存块;以及
根据所述至少一个迁移信息控制将所述待迁移数据迁移到所述目的节点上的内存块中;以及
当所述BE中具有所述最后一块的标识的内存块迁移完成后,通过基本输入输出系统BIOS发送迁移完成通知。
18.如权利要求17所述的装置,其特征在于,所述BE用于:
根据确定的进行所述迁移所需的区的个数和/或轮流使用每个所述区进行迁移的次数,将所述至少一个迁移信息依次写入所述BE中的所述工作状态为空闲状态的一个区的至少一个内存块中;以及
根据所述空闲状态的区的至少一个内存块中的至少一个迁移信息,依次将所述待迁移数据迁移到所述目的节点上的内存块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410265874.XA CN105159841B (zh) | 2014-06-13 | 2014-06-13 | 一种内存迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410265874.XA CN105159841B (zh) | 2014-06-13 | 2014-06-13 | 一种内存迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159841A true CN105159841A (zh) | 2015-12-16 |
CN105159841B CN105159841B (zh) | 2018-10-19 |
Family
ID=54800703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410265874.XA Active CN105159841B (zh) | 2014-06-13 | 2014-06-13 | 一种内存迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159841B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020974A (zh) * | 2016-05-11 | 2016-10-12 | 深圳大学 | Numa平台的内存缓存方法及系统 |
CN106708433A (zh) * | 2016-12-06 | 2017-05-24 | 深圳市深信服电子科技有限公司 | 存储数据的读写方法及装置 |
WO2017114447A1 (zh) * | 2015-12-30 | 2017-07-06 | 新华三技术有限公司 | 报文转发 |
CN107102898A (zh) * | 2016-02-23 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
CN107526539A (zh) * | 2016-06-21 | 2017-12-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN109117416A (zh) * | 2018-09-27 | 2019-01-01 | 贵州华芯通半导体技术有限公司 | 插槽间的数据迁移或交换的方法和装置以及多处理器系统 |
CN110928661A (zh) * | 2019-11-22 | 2020-03-27 | 北京浪潮数据技术有限公司 | 一种线程迁移方法、装置、设备及可读存储介质 |
CN111435939A (zh) * | 2019-01-14 | 2020-07-21 | 百度在线网络技术(北京)有限公司 | 用于划分节点的存储空间的方法和装置 |
CN112231099A (zh) * | 2020-10-14 | 2021-01-15 | 北京中科网威信息技术有限公司 | 一种处理器的内存访问方法及装置 |
CN115037783A (zh) * | 2022-05-19 | 2022-09-09 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222640A1 (en) * | 2008-02-28 | 2009-09-03 | Bauman Ellen M | Memory Migration in a Logically Partitioned Computer System |
CN102681913A (zh) * | 2011-12-21 | 2012-09-19 | 中兴通讯股份有限公司 | 一种虚拟机到虚拟机热迁移的方法及装置 |
CN103353850A (zh) * | 2013-06-13 | 2013-10-16 | 华为技术有限公司 | 虚拟机热迁移内存处理方法、装置和系统 |
-
2014
- 2014-06-13 CN CN201410265874.XA patent/CN105159841B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222640A1 (en) * | 2008-02-28 | 2009-09-03 | Bauman Ellen M | Memory Migration in a Logically Partitioned Computer System |
CN102681913A (zh) * | 2011-12-21 | 2012-09-19 | 中兴通讯股份有限公司 | 一种虚拟机到虚拟机热迁移的方法及装置 |
CN103353850A (zh) * | 2013-06-13 | 2013-10-16 | 华为技术有限公司 | 虚拟机热迁移内存处理方法、装置和系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017114447A1 (zh) * | 2015-12-30 | 2017-07-06 | 新华三技术有限公司 | 报文转发 |
US11233752B2 (en) | 2015-12-30 | 2022-01-25 | New H3C Technologies Co., Ltd | Packet forwarding |
CN107102898B (zh) * | 2016-02-23 | 2021-04-30 | 阿里巴巴集团控股有限公司 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
CN107102898A (zh) * | 2016-02-23 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
CN106020974A (zh) * | 2016-05-11 | 2016-10-12 | 深圳大学 | Numa平台的内存缓存方法及系统 |
CN107526539A (zh) * | 2016-06-21 | 2017-12-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN107526539B (zh) * | 2016-06-21 | 2020-10-23 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN106708433A (zh) * | 2016-12-06 | 2017-05-24 | 深圳市深信服电子科技有限公司 | 存储数据的读写方法及装置 |
CN109117416A (zh) * | 2018-09-27 | 2019-01-01 | 贵州华芯通半导体技术有限公司 | 插槽间的数据迁移或交换的方法和装置以及多处理器系统 |
CN111435939A (zh) * | 2019-01-14 | 2020-07-21 | 百度在线网络技术(北京)有限公司 | 用于划分节点的存储空间的方法和装置 |
CN110928661A (zh) * | 2019-11-22 | 2020-03-27 | 北京浪潮数据技术有限公司 | 一种线程迁移方法、装置、设备及可读存储介质 |
CN112231099A (zh) * | 2020-10-14 | 2021-01-15 | 北京中科网威信息技术有限公司 | 一种处理器的内存访问方法及装置 |
CN115037783A (zh) * | 2022-05-19 | 2022-09-09 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN115037783B (zh) * | 2022-05-19 | 2024-04-09 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105159841B (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159841A (zh) | 一种内存迁移方法及装置 | |
CN103136110B (zh) | 内存管理方法、内存管理装置及numa系统 | |
US20150128150A1 (en) | Data processing method and information processing apparatus | |
CN114780458A (zh) | 数据处理的方法和存储系统 | |
CN109417488A (zh) | 虚拟网络功能资源管理的方法和设备 | |
US8966130B2 (en) | Tag allocation for queued commands across multiple devices | |
EP2557494A1 (en) | Storage apparatus and data copy method between thin-provisioning virtual volumes | |
JP2017102908A (ja) | ソリッドステートドライブ及びその動作方法 | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN102906726A (zh) | 协处理加速方法、装置及系统 | |
CN110825690B (zh) | 多核处理器的核间通信方法及装置 | |
CN104571956A (zh) | 一种数据写入方法及拆分装置 | |
CN112306624A (zh) | 一种信息处理方法、物理机和pcie设备 | |
CN104750690A (zh) | 一种查询处理方法、装置及系统 | |
CN110162396A (zh) | 内存回收方法、装置、系统和存储介质 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
CN104252419A (zh) | 一种内存分配的方法及装置 | |
CN103488734A (zh) | 一种数据处理方法及重删引擎 | |
CN103455438A (zh) | 一种内存管理方法及设备 | |
CN107566543B (zh) | 一种节点标识设置方法和装置 | |
CN103530253A (zh) | 集群多全局缓冲池系统、中心节点、计算节点及管理方法 | |
CN113535087A (zh) | 数据迁移过程中的数据处理方法、服务器及存储系统 | |
US8359564B2 (en) | Circuit design information generating equipment, function execution system, and memory medium storing program | |
CN112286688A (zh) | 一种内存管理和使用方法、装置、设备和介质 | |
CN109002255B (zh) | 存储系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |