CN105468538B - 一种内存迁移方法及设备 - Google Patents

一种内存迁移方法及设备 Download PDF

Info

Publication number
CN105468538B
CN105468538B CN201410464534.XA CN201410464534A CN105468538B CN 105468538 B CN105468538 B CN 105468538B CN 201410464534 A CN201410464534 A CN 201410464534A CN 105468538 B CN105468538 B CN 105468538B
Authority
CN
China
Prior art keywords
page
memory
node
merged
region
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.)
Active
Application number
CN201410464534.XA
Other languages
English (en)
Other versions
CN105468538A (zh
Inventor
褚力行
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410464534.XA priority Critical patent/CN105468538B/zh
Priority to PCT/CN2015/080491 priority patent/WO2016037499A1/zh
Priority to EP15840667.8A priority patent/EP3131015B1/en
Publication of CN105468538A publication Critical patent/CN105468538A/zh
Priority to US15/357,240 priority patent/US10013205B2/en
Application granted granted Critical
Publication of CN105468538B publication Critical patent/CN105468538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供一种内存迁移方法及设备,涉及计算机应用技术领域。通过将内存页合并成内存块,减低了迁移次数,提高了CPU的利用率。本发明提供的内存迁移方法包括:第一节点接收第二节点发送的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;分别判断每个内存页是否满足块合并条件,将满足所述块合并条件的内存页合并到相应的内存块,将所述相应的内存块迁移至所述第二节点的内存区域。

Description

一种内存迁移方法及设备
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种内存迁移方法及设备。
背景技术
非统一内存访问(英文:Non Uniform Memory Access,缩写:NUMA)***架构是服务器架构中的一种。图1为现有技术中NUMA***架构示意图,如图1所示,NUMA架构包含多个节点,每个节点包含一个中央处理器(英文:Central Processing Unit,缩写:CPU)以及与该CPU对应的内存区域,其中,内存区域的数据以内存页为最小单位存储。在NUMA架构中,各CPU可以访问本地内存区域中的数据,也可以跨节点访问其他节点内存区域(即非本地内存区域)中的数据。由于节点数量扩大,总线设计不同出现了内存访问链路长短差异,使得CPU跨节点访问非本地内存区域的时间远大于CPU访问本地内存区域的时间。为了解决NUMA架构下,节点中的CPU访问远端内存区域的时间较长的问题,需要将远端内存区域的数据从远端内存区域迁移至本地内存区域。
现有技术中,通常以内存页为单位将远端内存区域中的数据迁移至本地内存区域中。由于,采用内存页为单位进行内存迁移,迁移次数与需要迁移的内存页的个数相等,此时,若需要迁移的内存页很多时,则会造成迁移次数较多,导致CPU占用率较大,***性能较低。
发明内容
本发明实施例提供一种内存迁移方法及设备,解决了当存在大量需要迁移的内存页时,采用内存页为单位进行内存迁移,迁移次数较多,导致CPU占用率较大的问题。
为达到上述目的,本发明采用的技术方案是,
第一方面,本发明实施例提供一种内存迁移方法,包括:
第一节点接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程;
所述第一节点依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;
所述第一节点分别判断每个内存页是否满足块合并条件,将满足所述块合并条件的内存页合并到相应的内存块;
所述第一节点将所述相应的内存块迁移至所述第二节点的内存区域。
在第一方面的第一种可能的实现方式中,结合第一方面,所述满足块合并条件的内存页,包括:
所述目标进程访问的内存页;
或者,空闲内存页;
或者,第一进程访问的内存页,其中,所述第一进程为所述第二节点上运行的除所述目标进程之外的进程。
在第一方面的第二种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式,当内存页为第二进程访问的内存页时,其中,所述第二进程为第三节点上运行的进程;所述判断所述内存页是否满足块合并条件,包括:
查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
在第一方面的第三种可能的实现方式中,结合第一方面至第一方面的第二种可能的实现方式中的任一种实现方式,对于第一内存页,当确定所述第一内存页满足块合并条件时,所述将所述第一内存页合并到相应的内存块,包括:
确定第一内存块包含的内存页的个数是否小于预设阈值;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页是所述目标进程访问的内存页,则将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存块;
其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页;
所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块。
在第一方面的第四种可能的实现方式中,结合第一方面的第三种可能的实现方式,若确定所述第一内存页不满足块合并条件,或者,若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页为非目标进程访问的内存页,所述方法还包括:
判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页是所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存块。
第二方面,本发明实施例提供一种内存迁移设备,包括:
接收单元,用于接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程;
扫描单元:用于根据所述接收单元接收到的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;
判断单元:用于分别判断每个内存页是否满足块合并条件;
块合并单元:用于将所述判断单元确定的满足所述块合并条件的内存页合并到相应的内存块;
发送单元,用于将所述相应的内存块迁移至所述第二节点的内存区域。
在第二方面的第一种可能的实现方式中,结合第二方面,所述满足块合并条件的非目标进程访问的内存页,包括:
所述目标进程访问的内存页;
或者,空闲内存页;
或者,第一进程访问的内存页,其中,所述第一进程为所述第二节点上运行的除所述目标进程之外的进程。
在第二方面的第二种可能的实现方式中,结合第二方面或第二方面的第一种可能的实现方式,当内存页为第二进程访问的内存页时,其中,所述第二进程为第三节点上运行的进程;所述判断单元,具体用于:
查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
在第二方面的第三种可能的实现方式中,结合第二方面至第二方面的第二种可能的实现方式中的任一种实现方式,对于第一内存页,当所述判断单元确定所述第一内存页满足块合并条件时,所述块合并单元,具体用于:
确定第一内存块包含的内存页的个数是否小于预设阈值;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页是所述目标进程访问的内存页,则将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存块;
其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页;
所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块。
在第二方面的第四种可能的实现方式中,结合第二方面的第三种可能的实现方式,若所述判断单元确定所述第一内存页不满足块合并条件,或者,若所述块合并单元确定所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页为非目标进程访问的内存页;
相应的,所述判断单元,还用于判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
所述块合并单元,还用于若所述第二内存页是所述目标进程访问的内存页,将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存块。
由上可知,本发明实施例提供一种内存迁移方法及设备,第一节点接收第二节点发送的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;将满足所述块合并条件的内存页合并到相应的内存块,将所述相应的内存块迁移至所述第二节点的内存区域,其中,所述满足块合并条件的内存页包含目标进程访问的内存页或者非目标进程访问的内存页。如此,通过将目标进程访问的内存页,以及,部分满足块合并条件的非目标进程访问的内存页合并到相应的内存块,使得在不增加***性能代价的前提下,尽可能多地将离散的内存页合并在一起,以内存块为单位进行迁移,大大减少了内存迁移次数,提高了CPU利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中NUMA***架构示意图;
图2为本发明实施例提供的一种内存迁移方法的流程图;
图3为一段物理地址连续的内存区域中内存页合并示意图;
图4为本发明实施例提供的一种内存迁移设备的示意图;
图5为本发明实施例提供的一种内存迁移设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的内存迁移方法,适用于如图1所示的非统一内存访问(英文:Non Uniform Memory Access,缩写:NUMA)***架构,同时,也适用于其他通信场景下(如非NUMA***中或者虚拟化场景下)的内存迁移,本发明对比不进行限定,本发明仅以图1所示的NUMA***架构下的内存迁移为例进行说明。
在NUMA***架构中,每个节点内的整个内存区域被划分为多个内存页,以内存页为最小存储单位存储数据,其中,每个内存页占用4KB左右的物理内存,即用4KB大小的连续物理地址标识一个内存页,例如:某个内存页占用物理地址从00001000~00001FFF的连续内存区域。
每个节点内的CPU可以执行多个进程,每个进程可以访问NUMA***架构中本地节点(即进程所在的节点)或其他远端节点的内存区域中的内存页,且同一内存区域中同一进程访问的内存页可能是不连续的。例如,图3为一段物理地址连续的内存区域中内存页合并示意图,如图3所示,该段00000000~00017FFF的内存区域包含24个被目标进程、第一进程、第二进程访问的内存页、以及空闲内存页,其中,空闲内存页为内存区域中,不存储数据的内存页,即不被使用的内存页。从图3可知,在该段内存区域中,目标进程访问的内存页为11个,且这11个内存页不完全连续,被第一进程访问的内存页,第二进程访问的内存页,以及空闲内存页分离开来。
不难理解,如图3所示,如果采用现有技术中的内存迁移技术,以内存页为单位将目标进程访问的内存页进程迁移,则需要迁移11次,即迁移次数与需要迁移的内存页的个数相等,此时,若需要迁移的内存页的数量很大,则会造成内存迁移次数较多,从而会导致节点的CPU的处理效率,降低***性能。为此,本发明实施例提供一种内存迁移方法,应用于如图1所示的NUMA***架构下,参见图2所示,该方法可以包括:
201、第一节点接收第二节点发送的迁移指令。
其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的任一进程。
所述第一节点和所述第二节点为NUMA架构中的任意两个不同的节点。
202、第一节点依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页。
其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页。
优选的,所述第一节点可以根据***内部存储的进程访问的内存页的虚拟地址与物理地址之间的映射关系,获知目标进程访问的内存页的物理地址,从目标进程访问的起始内存页的物理地址开始,顺序扫描目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,直至目标进程访问的末尾内存页。
例如,如图3所示,目标进程访问的起始内存页为连续物理地址00000000~00000FF标识的内存页,目标进程访问的末尾内存页为连续物理地址00017000~00017FFF标识的内存页,第一节点从连续物理地址00000000~0000FFF标识的内存页开始,依次扫描如图3所示的一端内存区域内的每个内存页,直至连续物理地址00017000~00017FFF标识的内存页。
203、第一节点分别判断每个内存页是否满足块合并条件,将满足所述块合并条件的内存页合并到相应的内存块。
优选的,当扫描到内存页为目标进程访问的内存页时,第一节点直接确定该内存页满足块合并条件;
当扫描到的内存页为非目标进程访问的内存页时,第一节点可以根据下述(1)(2)(3)三种情况,判断非目标进程访问的内存页是否满足块合并条件:
(1)若内存页是空闲内存页,则确定内存页满足块合并条件。
(2)若内存页为第一进程访问的内存页,其中,所述第一进程为第二节点上运行的除所述目标进程之外的进程,则确定内存页满足块合并条件。
(3)若内存页为第二进程访问的内存页,其中,所述第二进程为第三节点上运行的进程,第三节点为NUMA***架构中,除第一节点和第二节点之外的其他任一节点,
则第一节点查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
若所述第三节点访问所述第二节点的内存区域的距离大于所述第三节点访问所述第一节点的内存区域的距离,则表示将第三节点上第一进程访问的内存页从第一节点迁移到第二节点后,会造成第一进程访问的时间过长,***性能降低,所以,确定所述内存页不满足块合并条件。
其中,NUMA***架构中的距离关系表存储在操作***中,其中,距离关系表包含全局各节点访问节点的内存区域的距离,被全局节点可知,且该距离关系表中的距离是固定不变的。例如,表1为图1所示NUMA***架构中存储的距离关系表,如表1所示,第一节点访问第三节点的内存区域的距离为21,第二节点访问第三节点的内存区域的距离也为21,这表示处于第三节点上的任一进程访问第一节点的内存区域的时间与访问第二节点中的内存区域的时间是相同的,此时,若将第三节点上的第一进程访问的,处于第一节点上的内存页迁移至第二节点内,则不会影响到第一进程的处理性能。
表1
204、第一节点将所述相应的内存块迁移至所述第二节点的内存区域。
进一步的,为了避免每个内存块中包含的内存页的数量过多,导致迁移内存块时负担过重,对于第一内存页,其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页;若确定所述第一内存页满足块合并条件,则可以通过下述具体步骤(Ⅰ)~(Ⅴ)将满足所述块合并条件的第一内存页合并到相应的内存块:
(Ⅰ)确定第一内存块包含的内存页的个数是否小于预设阈值;其中,所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块。
(Ⅱ)若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,则根据第一内存页的具体情况,执行步骤(Ⅲ)或(Ⅳ)。
(Ⅲ)若第一内存页为所述目标进程访问的内存页,则结束将内存页合并到第一内存块,将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存页;
若所述第一内存页为满足块合并条件的非目标进程访问的内存页),则执行步骤(Ⅳ)。
(Ⅳ)判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,预设阈值是根据需要进行预先设置的,本发明实施例对比不进行限定,优选的,可以为5~10中的任一数值。
进一步的,若在第一节点扫描第一内存页后,确定第一内存页不满足块合并条件,则结束将第一内存页合并到第一内存块,同时,所述方法还可以包括:
判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,需要说明的是,本发明实施例中,将目标进程访问的起始内存页作为第一个内存块的起始页,直接合并到第一个内存块。
下面以图3所示的将第一节点内存区域中,目标进程访问的起始内存页与末尾内存页之间的内存页进行合并,对上述方法进行具体说明,其中,每个内存块中允许包含的内存页的个数为10,第一进程运行在第三节点,第二进程运行在第四节点:
从物理地址00000000~00000FFF开始扫描目标进程访问的起始内存页,将该内存页合并到内存块1;
顺序扫描物理地址00001000~00001FFF的第二内存页,确定第二内存页为目标进程访问的内存页,且确定内存块1包含的内存页数量小于10,则将第二内存页合并到内存块1;
顺序扫描物理地址00002000~00002FFF的第三内存页(即第一进程访问的内存页),根据存储的节点距离关系表(如表1),确定第三内存页满足块合并条件,且确定内存块1包含的内存页的数量小于10,则将第三页合并到内存块1;
顺序扫描物理地址00003000~00003FFF的第四内存页(即第一进程访问的内存页),根据存储的节点距离关系表(如表1),确定第四内存页满足块合并条件,且确定内存块1包含的内存页的数量小于10,则将第三页合并到内存块1;
顺序扫描物理地址00004000~00004FFF的第五内存页,为空闲页,确定第五内存页满足块合并条件,且确定内存块1包含的内存页的数量小于10,则将第五内存页页合并到内存块1;
顺序扫描物理地址00005000~00005FFF的第六内存页,确定第六内存页为目标进程访问的内存页,且确定内存块1包含的内存页的个数小于10,则将第六内存页合并到内存块1;
同理,顺序扫描物理地址00006000~00006FFF的第七内存页、物理地址00007000~00007FFF的第八内存页,分别将第七内存页、第八内存页合并到内存块1;
顺序扫描物理地址00008000~00008FFF的第九内存页,为空闲内存页,确定第九内存页满足块合并条件,且内存块1包含的内存页的个数小于10,则将第九页合并到内存块1;
顺序扫描物理地址00009000~00009FFF的第十内存页(即第二进程访问的内存页),根据存储的节点距离关系表(如表1),确定第九内存页不满足块合并条件,则不将第九内存页合并到内存块1,结束内存块1的合并;
顺序扫描物理地址0000A000~0000AFFF的第十一内存页、物理地址0000B000~0000BFFF的第十二内存页、物理地址0000C000~0000CFFF的第十三内存页、物理地址0000D000~0000DFFF的第十四内存页、物理地址0000E000~0000EFFF的第十五内存页、物理地址0000F000~0000FFFF的第十六内存页,分别确定每个内存页不为目标进程访问的内存页,不能作为内存块2的起始内存页;
顺序扫描物理地址00010000~00010FFF的第十七内存页,确定第十七内存页为目标进程访问的内存页,则将第十七内存页作为内存块2的起始内存页,开始内存块2的内存页合并;
顺序扫描物理地址00011000~00011FFF的第十八内存页,确定第十八内存页为目标进程访问的内存页,且内存块2包含的内存页的个数小于10,则将第十八内存页合并到内存块2;
同理,分别将物理地址00012000~00012FFF的第十九内存页、物理地址00013000~00013FFF的第二十内存页合并到内存块2;
顺序扫描物理地址00014000~00014FFF的第二十一内存页,为空闲内存页,且内存块2包含的内存页的个数小于10,则将第二十一内存页合并到内存块2;
顺序扫描物理地址00015000~00015FFF的第二十二内存页,为空闲内存页,且内存块2包含的内存页的个数小于10,则将第二十二内存页合并到内存块2;
顺序扫描物理地址00016000~00016FFF的第二十三内存页,为目标进程访问的内存页,且内存块2包含的内存页的个数小于10,则将第二十三内存页合并到内存块2;
顺序扫描物理地址00017000~00017FFF的第二十四内存页,为目标进程访问的末尾内存页,且内存块2包含的内存页的个数小于10,则将第二十四内存页合并到内存块2,同时,内存页合并过程结束。
由图3可知,经过上述内存页合并过程后,将离散的目标进程访问的内存页合并成内存块1和内存块2两个内存块,使得在进行内存迁移时,只需要迁移两次就可以了,与现有技术中采用内存页迁移11次的情况相比,大大降低了迁移次数,从而提高了CPU的利用率。
由上可知,本发明实施例提供一种内存迁移方法,第一节点接收第二节点发送的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页包含目标进程访问的内存页或者非目标进程访问的内存页;将满足所述块合并条件的内存页合并到相应的内存块,将所述相应的内存块迁移至所述第二节点的内存区域。如此,通过将目标进程访问的内存页,以及,满足块合并条件的非目标进程访问的内存页合并成内存块,使得在不增加***性能代价的前提下,尽可能多地将离散的内存页合并在一起,以内存块为单位进行迁移,大大减少了内存迁移次数,提高了CPU利用率。
此外,本发明实施例还提供一种内存迁移设备40,其中,所述内存迁移设备40可以为图1所示的NUMA***架构中的任一节点,如图4所示,该设备可以包括:
接收单元401,用于接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程。
其中,所述第二节点可以为如图1所示的NUMA***架构中除第一节点之外的任一节点。
扫描单元402,用于在所述接收单元401接收到迁移指令时,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页。
其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页。
判断单元403,用于分别判断每个内存页是否满足块合并条件。
块合并单元404,用于将判断单元403确定的满足所述块合并条件的内存页合并到相应的内存块。
发送单元405,用于将所述相应的内存块迁移至所述第二节点的内存区域。
进一步的,扫描单元402,具体用于:根据***内部存储的进程访问的内存页的虚拟地址与物理地址之间的映射关系,获知目标进程访问的内存页的物理地址,从目标进程访问的起始内存页的物理地址开始,顺序扫描目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,直至目标进程访问的末尾内存页。
进一步的,当扫描单元402扫描到的内存页为目标进程访问的内存页时,判断单元403直接确定该内存页满足块合并条件;
当扫描单元402扫描到的内存页不为目标进程访问的内存页时,判断单元403,具体用于根据下述(1)(2)(3)三种情况,判断内存页是否满足块合并条件:
(1)若内存页是空闲内存页,则确定内存页满足块合并条件。
(2)若内存页为第一进程访问的内存页,其中,所述第一进程为第二节点上运行的除所述目标进程之外的进程,则确定内存页满足块合并条件。
(3)若内存页为第二进程访问的内存页,其中,所述第二进程为第三节点上运行的进程,第三节点为NUMA***架构中,除第一节点和第二节点之外的其他任一节点,
则查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
若所述第三节点访问所述第二节点的内存区域的距离大于所述第三节点访问所述第一节点的内存区域的距离,则表示将第三节点上第一进程访问的内存页从第一节点迁移到第二节点后,会造成第一进程访问的时间过长,***性能降低,所以,确定所述内存页不满足块合并条件。
其中,NUMA***架构中的距离关系表存储在操作***中,其中,距离关系表包含全局各节点访问节点的内存区域的距离,被全局节点可知,且该距离关系表中的距离是固定不变的。例如,表1为图1所示NUMA***架构中存储的距离关系表,如表1所示,第一节点访问第三节点的内存区域的距离为21,第二节点访问第三节点的内存区域的距离也为21,这表示处于第三节点上的任一进程访问第一节点的内存区域的时间与访问第二节点中的内存区域的时间是相同的,此时,若将第三节点上的第一进程访问的,处于第一节点上的内存页迁移至第二节点内,则不会影响到第一进程的处理性能。
进一步的,为了避免每个内存块中包含的内存页的数量过多,导致迁移内存块时负担过重,对于第一内存页,其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页,当判断单元403确定第一内存页满足块合并条件时,块合并单元404,具体用于:
确定第一内存块包含的内存页的个数是否小于预设阈值;其中,所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且第一内存页为所述目标进程访问的内存页,则结束将内存页合并到第一内存块,将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存页;
若所述第一内存页为满足块合并条件的非目标进程访问的内存页,则判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,预设阈值是根据需要进行预先设置的,本发明实施例对比不进行限定,优选的,可以为5~10中的任一数值。
进一步的,若在扫描第一内存页后,判断单元403确定第一内存页不满足块合并条件,则块合并单元404结束将第一内存页合并到第一内存块,同时,所述判断单元403,还用于判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
所述块合并单元404,还用于若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,需要说明的是,本发明实施例中,将目标进程访问的起始内存页作为第一个内存块的起始页,直接合并到第一个内存块。
由上可知,本发明实施例提供一种内存迁移设备40,接收第二节点发送的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页包含目标进程访问的内存页或者非目标进程访问的内存页;将满足所述块合并条件的内存页合并到相应的内存块,将所述相应的内存块迁移至所述第二节点的内存区域。如此,通过将目标进程访问的内存页,以及,满足块合并条件的非目标进程访问的内存页合并成内存块,使得在不增加***性能代价的前提下,尽可能多地将离散的内存页合并在一起,以内存块为单位进行迁移,大大减少了内存迁移次数,提高了CPU利用率。
此外,本发明实施例还提供一种内存迁移设备50,其中,所述内存迁移设备50可以为图1所示的NUMA***架构中的任一节点,如图5所示,该设备可以包括:通信单元501,处理器502,存储器503,至少一个通信总线504;
其中,通信单元501,可以用于通过通信总线504与外部设备或者NUMA***内部其他节点进行数据传输。
处理器502,可以是节点内部的一个中央处理器(英文:central processingunit,简称为CPU)。
存储器503,可以是易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);或者非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flashmemory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);或者上述种类的存储器的组合,并向处理器1001提供指令和数据;
其中,所述存储器503包含内存区域5031,用于向处理器502上运行的进程提供需要的指令和数据。
通信单元501,用于接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程。
其中,所述第二节点可以为如图1所示的NUMA***架构中除第一节点之外的任一节点。
处理器502:用于在所述通信单元501接收到迁移指令时,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页;其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页。
分别判断每个内存页是否满足块合并条件,将满足所述块合并条件的内存页合并到相应的内存块。
所述通信单元501,还用于将处理器502得到的所述相应的内存块迁移至所述第二节点的内存区域。
进一步的,处理器502,具体用于:根据***内部存储的进程访问的内存页的虚拟地址与物理地址之间的映射关系,获知目标进程访问的内存页的物理地址,从目标进程访问的起始内存页的物理地址开始,顺序扫描目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,直至目标进程访问的末尾内存页。
进一步的,当处理器502扫描到的内存页为目标进程访问的内存页时,处理器502直接确定该内存页满足块合并条件;
当处理器502扫描到的内存页不为目标进程访问的内存页时,处理器502,具体用于根据下述(1)(2)(3)三种情况,确定内存页是否满足块合并条件:
(1)若内存页是空闲内存页,则确定内存页满足块合并条件。
(2)若内存页为第一进程访问的内存页,其中,所述第一进程为第二节点上运行的除所述目标进程之外的进程,则确定内存页满足块合并条件。
(3)若内存页为第二进程访问的内存页,其中,所述第二进程为第三节点上运行的进程,第三节点为NUMA***架构中,除第一节点和第二节点之外的其他任一节点,
则查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
若所述第三节点访问所述第二节点的内存区域的距离大于所述第三节点访问所述第一节点的内存区域的距离,则表示将第三节点上第一进程访问的内存页从第一节点迁移到第二节点后,会造成第一进程访问的时间过长,***性能降低,所以,确定所述内存页不满足块合并条件。
其中,NUMA***架构中的距离关系表存储在操作***中,其中,距离关系表包含全局各节点访问节点的内存区域的距离,被全局节点可知,且该距离关系表中的距离是固定不变的。例如,表1为图1所示NUMA***架构中存储的距离关系表,如表1所示,第一节点访问第三节点的内存区域的距离为21,第二节点访问第三节点的内存区域的距离也为21,这表示处于第三节点上的任一进程访问第一节点的内存区域的时间与访问第二节点中的内存区域的时间是相同的,此时,若将第三节点上的第一进程访问的,处于第一节点上的内存页迁移至第二节点内,则不会影响到第一进程的处理性能。
进一步的,为了避免每个内存块中包含的内存页的数量过多,导致迁移内存块时负担过重,对于第一内存页,其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页,当处理器502确定第一内存页满足块合并条件后,具体用于:
确定第一内存块包含的内存页的个数是否小于预设阈值;其中,所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且第一内存页为所述目标进程访问的内存页,则结束将内存页合并到第一内存块,将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存页;
若所述第一内存页为满足块合并条件的非目标进程访问的内存页,则判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,预设阈值是根据需要进行预先设置的,本发明实施例对比不进行限定,优选的,可以为5~10中的任一数值。
进一步的,若在第一节点扫描第一内存页后,处理器502确定第一内存页不满足块合并条件,则处理器502结束将第一内存页合并到第一内存块,同时,所述处理器502,还用于判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页为所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存页;
若所述第二内存页不为所述目标进程访问的内存页,则继续依次扫描内存页,当扫描到的内存页为所述目标进程访问的内存页时,将该内存页作为第三内存块的起始内存页,合并到所述第三内存页。
其中,需要说明的是,本发明实施例中,将目标进程访问的起始内存页作为第一个内存块的起始页,直接合并到第一个内存块。
由上可知,本发明实施例提供一种内存迁移设备50,接收第二节点发送的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页包含目标进程访问的内存页或者非目标进程访问的内存页;将满足所述块合并条件的内存页合并到相应的内存块,将所述相应的内存块迁移至所述第二节点的内存区域。如此,通过将目标进程访问的内存页,以及,满足块合并条件的非目标进程访问的内存页合并成内存块,使得在不增加***性能代价的前提下,尽可能多地将离散的内存页合并在一起,以内存块为单位进行迁移,大大减少了内存迁移次数,提高了CPU利用率。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种内存迁移方法,其特征在于,包括:
第一节点接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于所述第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程;
所述第一节点依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;
所述第一节点分别判断每个内存页是否满足块合并条件,将满足所述块合并条件的内存页合并生成合并后的内存块;
所述第一节点将所述合并后的内存块迁移至所述第二节点的内存区域。
2.根据权利要求1所述的方法,其特征在于,所述满足块合并条件的内存页,包括:
所述目标进程访问的内存页;
或者,空闲内存页;
或者,第一进程访问的内存页,其中,所述第一进程为所述第二节点上运行的除所述目标进程之外的进程。
3.根据权利要求1或2所述的方法,其特征在于,当内存页为第二进程访问的内存页时,其中,所述第二进程为第三节点上运行的进程;所述判断所述内存页是否满足块合并条件,包括:
查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
4.根据权利要求1所述的方法,其特征在于,对于第一内存页,当确定所述第一内存页满足块合并条件时,所述将所述第一内存页合并到相应的内存块,包括:
确定第一内存块包含的内存页的个数是否小于预设阈值;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页是所述目标进程访问的内存页,则将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存块;
其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页;
所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块。
5.根据权利要求4所述的方法,其特征在于,若确定所述第一内存页不满足块合并条件,或者,若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页为非目标进程访问的内存页,所述方法还包括:
判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
若所述第二内存页是所述目标进程访问的内存页,则将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存块。
6.一种内存迁移设备,其特征在于,包括:
接收单元,用于接收第二节点发送的迁移指令,其中,所述迁移指令用于指示将目标进程访问的处于第一节点的所有内存页,从所述第一节点的内存区域迁移至所述第二节点的内存区域;所述目标进程为在第二节点上运行的进程;
扫描单元:用于根据所述接收单元接收到的迁移指令,依次扫描所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的每个内存页,其中,所述内存页为目标进程访问的内存页,或者,非目标进程访问的内存页;
判断单元:用于分别判断每个内存页是否满足块合并条件;
块合并单元:用于将所述判断单元确定的满足所述块合并条件的内存页合并生成合并后的内存块;
发送单元,用于将所述合并后的内存块迁移至所述第二节点的内存区域。
7.根据权利要求6所述的内存迁移设备,其特征在于,所述满足块合并条件的内存页,包括:
所述目标进程访问的内存页;
或者,空闲内存页;
或者,第一进程访问的内存页,其中,所述第一进程为所述第二节点上运行的除所述目标进程之外的进程。
8.根据权利要求6或7所述的内存迁移设备,其特征在于,当内存页为第二进程访问的内存页时,其中,所述第二进程为第三节点上运行的进程;所述判断单元,具体用于:
查询操作***内部存储的距离关系表,其中,所述距离关系表记录了所述第三节点访问所述第一节点的内存区域的距离,以及,所述第三节点访问所述第二节点的内存区域的距离;
判断所述第三节点访问所述第二节点的内存区域的距离是否小于等于所述第三节点访问所述第一节点的内存区域的距离;
若所述第三节点访问所述第二节点的内存区域的距离小于等于所述第三节点访问所述第一节点的内存区域的距离,则确定所述内存页满足块合并条件。
9.根据权利要求6所述的内存迁移设备,其特征在于,对于第一内存页,当所述判断单元确定所述第一内存页满足块合并条件时,所述块合并单元,具体用于:
确定第一内存块包含的内存页的个数是否小于预设阈值;
若所述第一内存块包含的内存页的个数小于预设阈值,则将所述第一内存页合并到所述第一内存块;
若所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页是所述目标进程访问的内存页,则将所述第一内存页作为第二内存块的起始内存页,合并到所述第二内存块;
其中,所述第一内存页为:所述第一节点的内存区域中,所述目标进程访问的起始内存页的物理地址与所述目标进程访问的末尾内存页的物理地址之间的任一内存页;
所述第一内存块为:与所述第一内存页相连续的上一内存页所在的内存块。
10.根据权利要求9所述的内存迁移设备,其特征在于,若所述判断单元确定所述第一内存页不满足块合并条件,或者,若所述块合并单元确定所述第一内存块包含的内存页的个数等于预设阈值,且所述第一内存页为非目标进程访问的内存页;
相应的,所述判断单元,还用于判断第二内存页是否是所述目标进程访问的内存页;其中,所述第二内存页为与所述第一内存页相连续的下一内存页;
所述块合并单元,还用于若所述第二内存页是所述目标进程访问的内存页,将所述第二内存页作为第三内存块的起始内存页,合并到所述第三内存块。
CN201410464534.XA 2014-09-12 2014-09-12 一种内存迁移方法及设备 Active CN105468538B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410464534.XA CN105468538B (zh) 2014-09-12 2014-09-12 一种内存迁移方法及设备
PCT/CN2015/080491 WO2016037499A1 (zh) 2014-09-12 2015-06-01 一种内存迁移方法及设备
EP15840667.8A EP3131015B1 (en) 2014-09-12 2015-06-01 Memory migration method and device
US15/357,240 US10013205B2 (en) 2014-09-12 2016-11-21 Memory migration method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410464534.XA CN105468538B (zh) 2014-09-12 2014-09-12 一种内存迁移方法及设备

Publications (2)

Publication Number Publication Date
CN105468538A CN105468538A (zh) 2016-04-06
CN105468538B true CN105468538B (zh) 2018-11-06

Family

ID=55458331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410464534.XA Active CN105468538B (zh) 2014-09-12 2014-09-12 一种内存迁移方法及设备

Country Status (4)

Country Link
US (1) US10013205B2 (zh)
EP (1) EP3131015B1 (zh)
CN (1) CN105468538B (zh)
WO (1) WO2016037499A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105827453A (zh) * 2016-04-25 2016-08-03 浪潮电子信息产业股份有限公司 一种复杂拓扑结构的计算机***中numa域设置方法
CN108572864A (zh) * 2017-03-13 2018-09-25 龙芯中科技术有限公司 触发负载均衡调度的方法、装置及服务器
TWI658360B (zh) 2018-04-13 2019-05-01 宏碁股份有限公司 儲存系統及儲存方法
KR20210026895A (ko) * 2019-09-02 2021-03-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN110888821B (zh) * 2019-09-30 2023-10-20 华为技术有限公司 一种内存管理方法及装置
CN112214302B (zh) * 2020-10-30 2023-07-21 中国科学院计算技术研究所 一种进程调度方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
CN103353850A (zh) * 2013-06-13 2013-10-16 华为技术有限公司 虚拟机热迁移内存处理方法、装置和***
CN104216784A (zh) * 2014-08-25 2014-12-17 杭州华为数字技术有限公司 热点均衡控制方法及相关装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918249A (en) * 1996-12-19 1999-06-29 Ncr Corporation Promoting local memory accessing and data migration in non-uniform memory access system architectures
US6871219B2 (en) * 2001-03-07 2005-03-22 Sun Microsystems, Inc. Dynamic memory placement policies for NUMA architecture
CA2506598A1 (en) * 2002-11-27 2004-07-01 Rgb Networks, Inc. Method and apparatus for time-multiplexed processing of multiple digital video programs
CN100383763C (zh) 2004-02-27 2008-04-23 中国人民解放军国防科学技术大学 基于操作***反向页表的页迁移和复制方法
US8037280B2 (en) * 2008-06-11 2011-10-11 Vmware, Inc. System and method for improving memory locality of virtual machines
US8468288B2 (en) * 2009-12-10 2013-06-18 International Business Machines Corporation Method for efficient guest operating system (OS) migration over a network
CN102135963B (zh) 2010-01-21 2013-04-24 深圳市智骏数据科技有限公司 数据迁移的方法和***
US10169087B2 (en) * 2011-01-28 2019-01-01 International Business Machines Corporation Technique for preserving memory affinity in a non-uniform memory access data processing system
WO2011103825A2 (zh) * 2011-04-18 2011-09-01 华为技术有限公司 多处理器***负载均衡的方法和装置
US9436402B1 (en) * 2011-04-18 2016-09-06 Micron Technology, Inc. Methods and apparatus for pattern matching
US9081764B2 (en) 2011-06-21 2015-07-14 International Business Machines Corporation Iimplementing DMA migration of large system memory areas
KR101534540B1 (ko) 2011-07-28 2015-07-07 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 이동을 실행하는 방법 및 장치
CN102999437B (zh) * 2011-09-19 2015-12-16 群联电子股份有限公司 数据搬移方法、存储器控制器与存储器储存装置
US8966204B2 (en) 2012-02-29 2015-02-24 Hewlett-Packard Development Company, L.P. Data migration between memory locations
CN103365704B (zh) 2012-03-26 2016-12-14 ***通信集团公司 虚拟机迁移中的内存预拷贝方法及执行该方法的装置和***
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
US10061622B2 (en) * 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
CN103198028B (zh) 2013-03-18 2015-12-23 华为技术有限公司 一种内存数据迁移方法、装置及***
US20140304453A1 (en) * 2013-04-08 2014-10-09 The Hong Kong Polytechnic University Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
CN103324582A (zh) 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
CN103324592B (zh) 2013-06-24 2016-11-23 华为技术有限公司 一种数据迁移控制方法、数据迁移方法及装置
CN103605564A (zh) * 2013-11-15 2014-02-26 青岛尚慧信息技术有限公司 一种移动终端及其复制粘贴数据的方法
US9772787B2 (en) * 2014-03-31 2017-09-26 Amazon Technologies, Inc. File storage using variable stripe sizes
US9779015B1 (en) * 2014-03-31 2017-10-03 Amazon Technologies, Inc. Oversubscribed storage extents with on-demand page allocation
US10045291B2 (en) * 2014-07-16 2018-08-07 Itron Global Sarl Relay functionality of battery powered devices
US10261703B2 (en) * 2015-12-10 2019-04-16 International Business Machines Corporation Sharing read-only data among virtual machines using coherent accelerator processor interface (CAPI) enabled flash
KR102547642B1 (ko) * 2016-05-18 2023-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US9971515B2 (en) * 2016-09-13 2018-05-15 Western Digital Technologies, Inc. Incremental background media scan

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
CN103353850A (zh) * 2013-06-13 2013-10-16 华为技术有限公司 虚拟机热迁移内存处理方法、装置和***
CN104216784A (zh) * 2014-08-25 2014-12-17 杭州华为数字技术有限公司 热点均衡控制方法及相关装置

Also Published As

Publication number Publication date
WO2016037499A1 (zh) 2016-03-17
US10013205B2 (en) 2018-07-03
EP3131015A4 (en) 2017-06-21
EP3131015B1 (en) 2018-08-15
EP3131015A1 (en) 2017-02-15
CN105468538A (zh) 2016-04-06
US20170068486A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
CN105468538B (zh) 一种内存迁移方法及设备
US11029848B2 (en) File management method, distributed storage system, and management node
CN106201659B (zh) 一种虚拟机热迁移的方法及宿主机
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
EP2915051B1 (en) Memory device and host device
US10795599B2 (en) Data migration method, host and solid state disk
CN114860163B (zh) 一种存储***、内存管理方法和管理节点
CN110908609B (zh) 一种磁盘处理的方法、***、设备及可读存储介质
US9354826B2 (en) Capacity expansion method and device
CN111108488B (zh) 内存块回收方法和装置
CN110187832B (zh) 一种数据操作的方法、设备和***
CN107329836B (zh) 多***的内存管理方法、管理装置以及移动终端
US9063667B2 (en) Dynamic memory relocation
CN111414228A (zh) 基于Kubernetes的管理存储空间的方法和相关装置
JP2010231567A (ja) ストレージスイッチ、記憶領域サイズ変更方法
CN111831451A (zh) 云主机内存分配方法及云主机、设备及存储介质
CN113868148A (zh) 一种数据写入的方法及装置
CN116521608A (zh) 数据迁移方法及计算设备
CN103064793B (zh) 精简配置容量回收方法和***
CN115756838A (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
CN116701244B (zh) 一种内存转储方法、装置和电子设备
CN112748989A (zh) 基于远程内存的虚拟机内存管理方法、***、终端及介质
KR102275181B1 (ko) 멀티코어 프로세서 시스템에서 메모리 할당 방법 및 장치, 이를 위한 기록매체
CN115080261A (zh) 数据处理方法、装置、***、计算设备及计算机存储介质
CN107851068A (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