CN104426971A - 一种远程内存交换分区方法、装置及系统 - Google Patents

一种远程内存交换分区方法、装置及系统 Download PDF

Info

Publication number
CN104426971A
CN104426971A CN201310391114.9A CN201310391114A CN104426971A CN 104426971 A CN104426971 A CN 104426971A CN 201310391114 A CN201310391114 A CN 201310391114A CN 104426971 A CN104426971 A CN 104426971A
Authority
CN
China
Prior art keywords
page
unloading
node
remote node
needing
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
Application number
CN201310391114.9A
Other languages
English (en)
Other versions
CN104426971B (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
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310391114.9A priority Critical patent/CN104426971B/zh
Priority to EP14841161.4A priority patent/EP3029576B1/en
Priority to PCT/CN2014/084195 priority patent/WO2015027815A1/zh
Publication of CN104426971A publication Critical patent/CN104426971A/zh
Priority to US15/056,242 priority patent/US10013165B2/en
Application granted granted Critical
Publication of CN104426971B publication Critical patent/CN104426971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供了一种远程内存交换分区方法、装置及系统,涉及通信领域,可以提高系统运行速度,节约功耗。所述方法包括:本地节点获得需要转存的内存页的基地址,然后根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,并将所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点,进而使得远程节点根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。

Description

一种远程内存交换分区方法、装置及系统
技术领域
本发明涉及通信领域,尤其涉及一种远程内存交换分区方法、装置及系统。
背景技术
在云服务器平台中,当节点的内存不足时,可以向云端控制器发送借用请求,使云端控制器将其他节点的内存分配给本节点,这样该节点就借用了其他节点的内存来做为自己的内存使用,通常会将借用内存的节点称为本地节点,将被借用内存的节点称为所述本地节点的远程节点。所述本地节点借用了远程节点的内存后,所述本地节点的内存就包括为本地内存(本地节点本身的内存)和远程内存(本地节点借用的远程节点的内存)。
若本地节点借用了远程节点的内存后,本地节点的内存仍然不够用,本地节点会选择将本节点的内存中的部分数据swap out(换出)至本地节点的硬盘中,释放出部分的内存空间。在本地节点的内存不足的情况下,只对本地内存进行swap out操作,释放本地内存空间是不行的,因为远程节点中内存不可能从借用到销毁不进行swap out操作,一旦对远程内存进行swap out操作,则需要进行以下过程:
本地节点需要扫描远程内存,以一定算法选中远程内存中需要swap out的内存页数据,然后进行本地内存swap out操作,将本地节点的本地内存中的一部分内存数据转存到本地节点中的硬盘中,为所述需要swap out的内存页数据预留出存储空间,然后通过云端控制器向所述远程内存所在的远程节点发送远程内存swap out命令,使得所述远程节点通过传输通道将所述需要swap out的内存页数据传送到本地节点,保存在所述本地节点预留出的存储空间中,最后本地节点将本地内存中存储的所述需要swap out的内存页数据存放至本地节点的硬盘中。
云端控制器在进行上述的远程内存swap out操作的过程中,需要将远程内存中的部分内存页数据传到本地节点,这就会占用传输通道,导致系统运行变慢,且增加系统功耗,并且若将远程节点中的需要swapout的内存页数据传回本地节点,本地节点的本地内存必须为所述需要swap out的内存页数据预留出存储空间,这会进一步加大本地内存的压力,使内存管理更加复杂,进一步地导致系统运行变慢,系统功耗增加。
发明内容
本发明的实施例提供一种远程内存交换分区方法、装置及系统,可以提高系统运行速度,节约功耗。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,公开了一种远程内存交换分区方法,包括:
本地节点获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;
若判断出所述需要转存的内存页所在的节点为远程节点时,所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
所述本地节点将所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点。
结合第一方面,在第一种可能的实现方式中,所述本地节点根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点,包括:
所述本地节点根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间;
或者,所述本地节点查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
第二方面,公开了一种远程内存交换分区方法,包括:
远程节点调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
所述远程节点根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
结合第二方面,在第一种可能的实现方式中,所述远程节点的硬盘中设置有远程内存交换分区;则所述将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,具体包括:将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;
所述将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点内存中,具体包括:将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。
第三方面,公开了一种本地节点,包括:
判断单元,用于获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;
查询单元,用于在所述判断单元判断出所述需要转存的内存页所在的节点为远程节点时,根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
发送单元,用于将所述查询单元查询到的所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点。
结合第三方面,在第一种可能的实现方式中,所述判断单元具体用于根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间;
或者,所述判断单元具体用于查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
第四方面,公开了一种远程节点,包括:
接收单元,用于调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
转存单元,用于根据所述接收单元接收到的所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
结合第四方面,在第一种可能的实现方式中,所述远程节点的硬盘中设置有远程内存交换分区;则,
所述转存单元,具体用于将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;或者,将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。
第五方面,公开了一种系统,包括:本地节点,云端控制器和远程节点;
其中,所述本地节点为上述的本地节点;
云端控制器,用于接收所述本地节点发送的所述需要转存的内存页的路由信息,并将所述需要转存的内存页的路由信息转发给所述远程节点;
所述远程节点为上述的远程节点。
本发明实施例提供的一种远程内存交换分区方法、装置及系统,在远程内存要进行swap操作时,所述本地节点会向所述远程节点发送转存信令,请求所述远程节点将所述需要转存的内存页中的数据转存在所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。既不需要将远程节点的内存页中的数据传到本地节点占用传输通道,也不需要本地内存为传回的远程内存页中的数据预留空间,这样就可以提高系统运行速度,节约功耗。另外,本发明实施例提供的方法过程简单,不需要对节点的内存管理部分进行修改。
附图说明
图1为本发明实施例提供的一种远程内存交换分区方法的流程示意图;
图2为本发明实施例提供的另一种远程内存交换分区方法的流程示意图;
图3为本发明实施例提供的另一种远程内存交换分区方法的流程示意图;
图4为本发明实施例提供的另一种远程内存交换分区方法的流程示意图;
图5为本发明实施例提供的一种本地节点的结构框图;
图6为本发明实施例提供的另一种本地节点的结构框图;
图7为本发明实施例提供的一种远程节点的结构框图;
图8为本发明实施例提供的另一种本地节点的结构框图;
图9为本发明实施例提供的另一种远程节点的结构框图;
图10为本发明实施例提供的一种系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本发明实施例提供了一种远程内存交换分区方法,如图1所示,执行主体为本地节点或设置在本地节点上时,所述方法包括以下步骤:
101、本地节点获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点。
在云服务器平台中,节点的内存不足时,可以借用其他节点的内存来做为自己的内存使用,通常会将借用内存的节点称为本地节点,将被借用内存的节点称为远程节点。所述本地节点借用了远程节点的内存后,所述本地节点的内存就包括为本地内存(本地节点本身的内存)和远程内存(本地节点借用的远程节点的内存)。
这里所述的转存既可以指将所述需要转存的内存页中的数据从所述本地节点的内存中换出,也可以指将所述内存页中的数据换入到所述本地节点的内存中。
本地节点的操作系统会定期(例如每10秒)按照一定算法扫描所述本地节点的内存,把它认为暂时不需要的数据所在的内存页做为需要换出的内存页,指示所述本地节点将所述需要换出的内存页中的数据从所述本地节点的内存中换出,所述一定算法一般都是LRU(LeastRecently Used,最近最少使用算法)的变种;或者,要在本地节点上运行某个程序,而所述本地节点的内存中没有该程序对应的数据即发生缺页异常时,所述本地节点的操作系统扫描本地节点和远程节点的硬盘获得该程序对应的数据所在的内存页,将其作为需要换入的内存页,指示所述本地节点将所述需要换入的内存页中的数据换入所述本地节点的内存中。
所述本地节点的操作系统的内存管理结构体中存储有各内存页对应基地址,这样所述本地节点的操作系统获得需要转存(换入或换出)的内存页后,就可以获得需要转存的内存页的基地址。
102、若判断出所述需要转存的内存页所在的节点为远程节点时,所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。
其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
若所述本地节点判断出需要转存的内存页所在的节点为所述远程节点,则表明此时需要进行远程内存swap操作,此时,所述本地节点可以根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。
103、所述本地节点将所述需要转存的内存页的路由信息和转存信令发送给云端控制器。
所述本地节点获得所述需要转存的内存页的路由信息后,就会将该路由信息和转存信令发送给云端控制器,所述云端控制器可以根据所述需要转存的内存页的路由信息中的远程节点地址,将所述需要转存的内存页的路由信息和转存信令转发给所述需要转存的内存页的所在的远程节点。这样,所述远程节点在接收到所述转存信令和需要转存的内存页的路由信息后,就可以根据所述需要转存的内存页的路由信息中的物理地址将所述需要转存的内存页中的数据进行转存,同时将所述需要转存的内存页中的数据清除。
若所述需要转存的内存页的物理地址在所述远程节点的内存中,则表明需要进行换出操作,所述远程节点就会将所述需要转存的内存页中的数据从所述远程节点的内存中换出,转存在所述远程节点的硬盘中,同时将所述需要转存的内存页中的数据清除。若所述需要转存的内存页的物理地址在所述远程节点的硬盘中,则表明需要进行换入操作,将所述需要转存的内存页中的数据从所述远程节点的硬盘换入所述远程节点的内存中,同时将所述需要转存的内存页中的数据清除。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
本发明实施例还提供了一种远程内存交换分区方法,如图2所示,执行主体为远程节点或设置在所述远程节点上时,所述方法包括以下步骤:
201、远程节点调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
本地节点在运行的过程中,获得了需要转存的内存页的基地址时,所述本地节点就可以根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点。若所述本地节点判断出需要转存的内存页所在的节点为所述远程节点,则表明此时需要进行远程内存swap操作,此时,所述本地节点可以根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。所述本地节点获得所述需要转存的内存页的路由信息后,就会给云端控制器发送所述路由信息以及转存信令,所述云端控制器获得所述需要转存的内存页的路由信息和转存信令后,可以根据所述需要转存的内存页的路由信息中的远程节点地址,将所述需要转存的内存页的路由信息和转存信令转发给所述需要转存的内存页的所在的远程节点。
所述远程节点可以调用驱动侦听所述云端控制器发送的信息,当所述远程节点侦听到所述远程节点发送来所述路由信息和转存信令时,就可以立即接收所述路由信息。
202、所述远程节点根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
所述远程节点接收到所述转存信令后,就会开始进行转存操作,若所述路由信息中需要转存的内存页的物理地址在所述远程节点的内存中,则表明需要进行换出操作,所述远程节点就会将所述需要转存的内存页中的数据从所述远程节点的内存中换出,转存在所述远程节点的硬盘中,同时将所述需要转存的内存页中的数据清除;若所述需要转存的内存页的物理地址在所述远程节点的硬盘中,则表明需要进行换入操作,所述远程节点就会将所述需要转存的内存页中的数据从所述远程节点的硬盘中换入到所述远程节点的内存中,同时将所述需要转存的内存页中的数据清除。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
本发明实施例提供的远程内存交换分区方法,在远程内存要进行swap操作时,所述本地节点会向所述远程节点发送转存信令,请求所述远程节点将所述需要转存的内存页中的数据转存在所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。既不需要将远程节点的内存页中的数据传到本地节点占用传输通道,也不需要本地内存为传回的远程内存页中的数据预留空间,这样就可以提高系统运行速度,节约功耗。另外,本发明实施例提供的方法过程简单,不需要对节点的内存管理部分进行修改。
实施例2:
本发明实施例还提供了一种远程内存交换分区方法,所述方法为换出(swap out)的方法,如图3所示,所述方法包括以下步骤:
301、本地节点周期性扫描所述本地节点的内存,获得需要转存的内存页的基地址。
在云服务器平台中,节点的内存不足时,可以借用其他节点的内存来做为自己的内存使用,通常会将借用内存的节点称为本地节点,将被借用内存的节点称为远程节点。所述本地节点借用了远程节点的内存后,所述本地节点的内存就包括为本地内存(本地节点本身的内存)和远程内存(本地节点借用的远程节点的内存)。
本地节点的操作系统会定期(例如每10秒)按照一定算法扫描所述本地节点的内存,把它认为暂时不需要的数据从所述本地节点的内存中换出转存,所述一定算法一般都是LRU的变种。
所述本地节点的操作系统的内存管理结构体中存储有各数据对应的内存页以及各内存页对应基地址,这样所述本地节点的操作系统获得需要换出转存的数据后,就可以获得需要转存的内存页的基地址。
302、所述本地节点根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点。
在这里,所述本地节点根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点,有两种方法:
方法一:
所述本地节点根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间。
所述本地节点可以对自己的内存(本地内存和远程内存)进行全局编制,例如,本地节点A借用了远程节点B和远程节点C的内存,假设本地节点A有4G的本地内存,本地节点A分别借用了远程节点B的1G远程内存和远程节点C的2G远程内存,则本地节点A对全部的7G内存进行全局编制,本地节点A的4G本地内存,其对应的地址空间为0—3G;远程节点B的1G远程内存,其对应的地址空间为3-4G;远程节点C的1G远程内存,其对应的地址空间为4-6G。这样,若所述需要转存的内存页的基地址为0x0fff时,表明所述需要转存的内存页的基地址所在的地址空间为所述本地节点A对应地址空间,则所述本地节点A可以判断出所述需要转存的内存页所在的节点为本地节点;若所述需要转存的内存页的基地址为0x10000000f时,表明所述需要转存的内存页的基地址所在的地址空间为所述远程节点B对应地址空间,则所述本地节点A可以判断出所述需要转存的内存页所在的节点为远程节点。
方法二:
所述本地节点查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
现有技术中,本地节点内存储有页表,页表中存储有本地节点的内存(本地内存和远程内存)中的各个内存页的基地址。在本发明实施例中,在所述页表中添加一项标识信息,用来区分各个内存页的基地址对应的是本地节点还是远程节点。例如,所述标识信息可以用0,1来标识,0标识所述内存页的基地址对应的是本地节点,1标识所述内存页的基地址对应的是远程节点。
若通过步骤302中的方法一或方法二,判断出所述需要转存的内存页所在的节点为所述本地节点,则进行步骤303;判断出所述需要转存的内存页所在的节点为所述远程节点,则进行步骤304。
303、所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中。
若所述需要转存的内存页所在的节点为所述本地节点,则所述本地节点就可以直接进行本地内存swap out操作,将所述需要转存的内存页中的数据从所述本地节点的本地内存中换出,转存在所述本地节点的硬盘中,同时将所述需要转存的内存页中的数据清除。
可选的,可以在所述本地节点的硬盘中设置内存交换分区,这样就可以将所述需要转存的内存页中的数据转存在所述本地节点的硬盘的内存交换分区中。在硬盘中设置一个内存交换分区,专门用于存储内存中换出的内存页中的数据,可以与本地节点硬盘中的数据区分开,以保证硬盘中数据的安全。
304、所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。
若所述本地节点判断出需要转存的内存页所在的节点为所述远程节点,则表明此时需要进行远程内存swap out操作,此时,所述本地节点可以根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
305、所述本地节点将所述需要转存的内存页的路由信息和转存信令发送给云端控制器。
在这里,可以将所述路由信息携带在所述转存信令中发送给所述云端控制器,也可以向所述云端控制器先发送所述转存信令,再发送所述路由信息。
在这里所述转存信令可以是换出转存信令。
306、所述云端控制器根据所述需要转存的内存页的路由信息中的远程节点地址,将所述转存信令和所述需要转存的内存页的路由信息转发给所述需要转存的内存页所在的远程节点。
307、所述远程节点调用驱动侦听并接收云端控制器发送的所述转存信令和所述需要转存的内存页的路由信息。
所述远程节点可以调用驱动侦听所述云端控制器发送的信息,当所述远程节点侦听到所述远程节点发送来所述转存信令和所述路由信息时,就可以立即接收所述转存信令和所述路由信息。所述需要转存的内存页的路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
308、所述远程节点根据所述转存信令和需要转存的内存页的路由信息中的物理地址,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中。
所述远程节点接收到所述转存信令后,就会开始进行转存操作,若所述路由信息中需要转存的内存页的物理地址在所述远程节点的内存中,则表明需要进行换出操作,所述远程节点就会将所述需要转存的内存页中的数据从所述远程内存中换出,转存在所述远程节点的硬盘中,同时将所述需要转存的内存页中的数据清除。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
可选的,可以在所述远程节点的硬盘中设置远程内存交换分区;则所述将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,具体包括:将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区。这样,在硬盘中设置一个远程内存交换分区,专门用于存储内存中需要换出的内存页中的数据,可以与远程节点硬盘中的数据区分开,可以保证数据的安全。
可选的,所述转存信令可以是换出转存信令,这样所述远程节点接收到所述转存信令后,就知道要从所述远程节点的内存中换出数据,所述远程节点就会根据所述路由信息中需要转存的内存页的物理地址将所述需要转存的内存页中的数据从所述远程节点的内存中换出,转存在所述远程节点的硬盘中,同时将所述需要转存的内存页中的数据清除。
在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
所述远程节点将所述需要转存的内存页中的数据转存在所述远程节点的硬盘中后,可以将转存成功与否的消息通过云控制器发送给本地节点,通知本地节点转存成功。
本发明实施例还提供了一种远程内存交换分区方法,所述方法为换入(swap in)的方法,如图4所示,所述方法包括以下步骤:
401、本地节点发生缺页异常时,扫描所述本地节点和远程节点的硬盘获得需要转存的内存页的基地址。
在云服务器平台中,节点的内存不足时,可以借用其他节点的内存来做为自己的内存使用,通常会将借用内存的节点称为本地节点,将被借用内存的节点称为远程节点。所述本地节点借用了远程节点的内存后,所述本地节点的内存就包括为本地内存(本地节点本身的内存)和远程内存(本地节点借用的远程节点的内存)。
要在本地节点上运行某个程序,而所述本地节点的内存中没有该程序对应的数据即发生缺页异常时,所述本地节点的操作系统会扫描本地节点和远程节点的硬盘中的数据,获得该程序对应的数据。
所述本地节点的操作系统的内存管理结构体中存储有各数据对应的内存页以及各内存页对应基地址,这样所述本地节点的操作系统获得需要换出转存的数据后,就可以获得需要转存的内存页的基地址。
402、根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点。
在这里,所述本地节点根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点,有两种方法:
方法一:
所述本地节点根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间。
方法二:
所述本地节点查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
若通过步骤402中的方法一或方法二,判断出所述需要转存的内存页所在的节点为所述本地节点,则进行步骤403;判断出所述需要转存的内存页所在的节点为所述远程节点,则进行步骤404。
403、所述本地节点将所述需要转存的内存页中的数据从所述本地节点的硬盘转存到所述本地节点的内存中。
若所述需要转存的内存页所在的节点为所述本地节点,则所述本地节点就可以直接进行本地内存swap in操作,将所述需要转存的内存页中的数据从所述本地节点的硬盘转存到所述本地节点的内存中。
可选的,可以在所述本地节点的硬盘中设置内存交换分区,这样就可以将所述需要转存的内存页中的数据从所述本地节点的硬盘的内存交换分区转存到所述本地节点的内存中。在硬盘中设置一个内存交换分区,专门用于存储内存中需要换出的内存页中的数据,可以与本地节点硬盘中的数据区分开,以保证硬盘中数据的安全。
404、所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息。
其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
405、所述本地节点将所述需要转存的内存页的路由信息和转存信令发送给云端控制器。
在这里,可以将所述路由信息携带在所述转存信令中发送给所述云端控制器,也可以向所述云端控制器先发送所述转存信令,再发送所述路由信息。
在这里所述转存信令可以是换入转存信令。
406、所述云端控制器根据所述需要转存的内存页的路由信息中的远程节点地址,将所述转存信令和所述需要转存的内存页的路由信息转发给所述需要转存的内存页所在的远程节点。
407、所述远程节点调用驱动侦听并接收云端控制器发送所述转存信令和所述需要转存的内存页的路由信息。
所述需要转存的内存页的路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
408、所述远程节点根据所述需要转存的内存页的路由信息中的物理地址,将所述需要转存的内存页中的数据从所述远程节点的硬盘的内存交换分区转存到所述远程节点的内存中。
所述远程节点接收到所述转存信令后,就会开始进行转存操作,若所述路由信息中需要转存的内存页的物理地址在所述远程节点的硬盘中,则表明需要进行换入操作,所述远程节点就会将所述需要转存的内存页中的数据从所述远程节点的硬盘中换出,转存在所述本地节点在所述远程节点中借用的远程内存中,同时将所述需要转存的内存页中的数据清除。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
可选的,可以在所述远程节点的硬盘中设置远程内存交换分区;则所述将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中,具体包括:将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。这样,在硬盘中设置一个远程内存交换分区,专门用于存储内存中需要换出的内存页中的数据,可以与远程节点硬盘中的数据区分开,可以保证数据的安全。
所述远程节点将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中后,可以将转存成功与否的消息通过云控制器发送给本地节点,通知本地节点转存成功。
本发明实施例提供的远程内存交换分区方法,在远程内存要进行swap操作时,所述本地节点会向所述远程节点发送转存信令,请求所述远程节点将所述需要转存的内存页中的数据转存在所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。既不需要将远程节点的内存页中的数据传到本地节点占用传输通道,也不需要本地内存为传回的远程内存页中的数据预留空间,这样就可以提高系统运行速度,节约功耗。另外,本发明实施例提供的方法过程简单,不需要对节点的内存管理部分进行修改。
实施例3:
本发明实施例还提供了一种本地节点,如图5所示,所述本地节点包括:判断单元501,查询单元502和发送单元503。
判断单元501,用于获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点。
查询单元502,用于在所述判断单元501判断出所述需要转存的内存页所在的节点为远程节点时,根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
发送单元503,用于将所述查询单元502查询到的所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点。
可选的,所述判断单元501具体用于根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间。
或者,所述判断单元501具体用于查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
进一步的,如图6所示,所述本地节点还包括:转存单元504。
所述转存单元504,用于在所述判断单元503判断出所述需要转存的内存页所在的节点为所述本地节点时,将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中;或者,所述转存单元504,用于在所述判断单元503判断出所述需要转存的内存页所在的节点为所述本地节点时,将所述需要转存的内存页从所述本地节点的硬盘转存到所述本地节点的本地内存中。
可选的,所述本地节点的硬盘中设置有内存交换分区;则,所述转存单元504,具体用于所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中的内存交换分区;或者,所述转存单元504,具体用于将所述需要转存的内存页中的数据从所述远程节点的硬盘的内存交换分区转存到所述本地节点的本地内存中。
本发明实施例还提供了一种远程节点,如图7所示,包括:接收单元701和转存单元702。
接收单元701,用于调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
转存单元702,用于根据所述接收单元701接收到的所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
可选的,所述远程节点的硬盘中设置有远程内存交换分区;则,所述转存单元702,具体用于将所述需要转存的内存页中的数据从所述述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;或者,将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。
在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
在硬件实现上,以上发送单元可以收发机,以上判断单元,查询单元和转存单元可以以硬件形式或软件形式内嵌于节点的处理器中。该处理器可以为中央处理单元(CPU),也可以是单片机。
如图8所示,为本发明实施例所提供的一种本地节点的结构示意图。如图8所示,该本地节点包括收发机81、存储器82以及分别与收发机81和存储器82连接的处理器83。当然,本地节点还可以包括天线、输入输出装置等通用部件,本发明实施例在此不再任何限制。
其中,存储器82中存储一组程序代码,且处理器83用于调用存储器中存储的程序代码,用于执行以下操作:
所述处理器83用于获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;并判断出所述需要转存的内存页所在的节点为远程节点时,所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;然后所述处理器83通过收发机81将查询到的所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点,进而使得所述远程节点根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点内存中。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
可选的,所述处理器83具体用于根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间;或者,所述处理器83具体用于查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
当然,所述需要转存的内存页所在的节点还可以是所述本地节点,当所述处理器判断出所述需要转存的内存页所在的节点是所述本地节点时,所述处理器83会将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中;或者,将所述需要转存的内存页从所述本地节点的硬盘转存到所述本地节点的本地内存中。
可选的,所述本地节点的硬盘中还可以设置有内存交换分区;此时,所述处理器会将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中的内存交换分区;或者,将所述需要转存的内存页中的数据从所述远程节点的硬盘的内存交换分区转存到所述本地节点的本地内存中。
如图9所示,为本发明实施例所提供的一种远程节点的结构示意图。如图9所示,该远程节点包括收发机91、存储器92以及分别与收发机91和存储器92连接的处理器93。当然,本地节点还可以包括天线、输入输出装置等通用部件,本发明实施例在此不再任何限制。
其中,存储器92中存储一组程序代码,且处理器93用于调用存储器92中存储的程序代码,用于执行以下操作:
所述处理器93用于调用驱动侦听并接收云端控制器发送的转存信令和路由信息,并根据接收到的所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。其中,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址。
可选的,所述远程节点的硬盘中设置有远程内存交换分区;此时,所述处理器93就可以将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;或者,将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的远程内存。
与现有技术相比,本发明实施例既不需要将远程内存中的数据传到本地节点占用传输通道,也不需要本地节点的内存为传回的远程内存页的数据预留空间,这样就可以提高系统运行速度,节约功耗。另外,本发明实施例提供的方法过程简单。不需要对节点的内存管理部分进行修改。
本发明实施例还提供了一种系统,如图10所示,所述系统包括本地节点1001,云端控制器1002和远程节点1003。
其中,所述本地节点1001获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;并在判断出所述需要转存的内存页所在的节点为所述远程节点1003时,根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;所述将所述需要转存的内存页的路由信息和转存信令发送给云端控制器1002。
云端控制器1002,用于接收所述本地节点1001发送的所述需要转存的内存页的路由信息和转存信令,并将所述需要转存的内存页的路由信息和转存信令转发给所述远程节点1003。
所述远程节点1003调用驱动侦听并接收云端控制器1002发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;并根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。在这里,所述远程节点的内存是指所述本地节点从远程节点中借用的内存。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (13)

1.一种远程内存交换分区方法,其特征在于,包括:
本地节点获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;
若判断出所述需要转存的内存页所在的节点为远程节点时,所述本地节点根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
所述本地节点将所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点。
2.根据权利要求1所述的方法,其特征在于,所述本地节点根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点,包括:
所述本地节点根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间;
或者,所述本地节点查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
3.根据权利要求1或2所述的方法,其特征在于,若判断出所述需要转存的内存页所在的节点为所述本地节点时;所述方法还包括:
所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中;
或者,所述本地节点将所述需要转存的内存页从所述本地节点的硬盘转存到所述本地节点的本地内存中。
4.根据权利要求3所述的方法,其特征在于,所述本地节点的硬盘中设置有内存交换分区;
所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中,包括:所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中的内存交换分区;
所述本地节点将所述需要转存的内存页从所述本地节点的硬盘转存到所述本地节点的本地内存中,包括:将所述需要转存的内存页中的数据从所述远程节点的硬盘的内存交换分区转存到所述本地节点的本地内存中。
5.一种远程内存交换分区方法,其特征在于,包括:
远程节点调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
所述远程节点根据所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
6.根据权利要求5所述的方法,其特征在于,所述远程节点的硬盘中设置有远程内存交换分区;则所述将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,具体包括:将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;
所述将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中,具体包括:将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。
7.一种本地节点,其特征在于,包括:
判断单元,用于获得需要转存的内存页的基地址,并根据所述需要转存的内存页的基地址判断所述需要转存的内存页所在的节点;
查询单元,用于在所述判断单元判断出所述需要转存的内存页所在的节点为远程节点时,根据所述需要转存的内存页的基地址查询路由表获得所述需要转存的内存页的路由信息,其中,所述路由表中存储有各内存页对应的路由信息,所述路由信息包括内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
发送单元,用于将所述查询单元查询到的所述需要转存的内存页的路由信息和转存信令发送给云端控制器,以使得所述云端控制器将所述路由信息和所述转存信令转发给所述需要转存的内存页所在的远程节点。
8.根据权利要求7所述的本地节点,其特征在于,所述判断单元具体用于根据所述需要转存的内存页的基地址所在的地址空间,判断所述需要转存的内存页所在的节点,其中,所述本地节点中预先存储有所述本地节点对应的地址空间和所述远程节点对应的地址空间;
或者,所述判断单元具体用于查询页表获得所述需要转存的内存页的基地址对应的标识信息,判断所述需要转存的内存页所在的节点,其中,所述页表中存储有各内存页的基地址以及所述基地址对应的标识信息,所述标识信息用于标识所述基地址对应的节点。
9.根据权利要求7或8所述的本地节点,其特征在于,所述本地节点还包括:转存单元,
所述转存单元,用于在所述判断单元判断出所述需要转存的内存页所在的节点为所述本地节点时,将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中;
或者,所述转存单元,用于在所述判断单元判断出所述需要转存的内存页所在的节点为所述本地节点时,将所述需要转存的内存页从所述本地节点的硬盘转存到所述本地节点的本地内存中。
10.根据权利要求9所述的本地节点,其特征在于,所述本地节点的硬盘中设置有内存交换分区;则,
所述转存单元,具体用于所述本地节点将所述需要转存的内存页中的数据从所述本地节点的本地内存中转存在所述本地节点的硬盘中的内存交换分区;
或者,所述转存单元,具体用于将所述需要转存的内存页中的数据从所述远程节点的硬盘的内存交换分区转存到所述本地节点的本地内存中。
11.一种远程节点,其特征在于,包括:
接收单元,用于调用驱动侦听并接收云端控制器发送的转存信令和路由信息,所述路由信息包括需要转存的内存页的基地址、内存页所在的远程节点地址以及内存页在远程节点中的物理地址;
转存单元,用于根据所述接收单元接收到的所述转存信令和所述路由信息,将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中,或将所述需要转存的内存页中的数据从所述远程节点的硬盘转存到所述远程节点的内存中。
12.根据权利要求11所述的远程节点,其特征在于,所述远程节点的硬盘中设置有远程内存交换分区;则,
所述转存单元,具体用于将所述需要转存的内存页中的数据从所述远程节点的内存中转存到所述远程节点的硬盘中的远程内存交换分区;或者,将所述需要转存的内存页的数据从所述远程节点的硬盘的远程内存交换分区转存到所述远程节点的内存中。
13.一种系统,其特征在于,所述系统包括本地节点,云端控制器和远程节点;
其中,所述本地节点为权利要求7所述的本地节点;
云端控制器,用于接收所述本地节点发送的所述需要转存的内存页的路由信息,并将所述需要转存的内存页的路由信息转发给所述远程节点;
所述远程节点为权利要求11所述的远程节点。
CN201310391114.9A 2013-08-30 2013-08-30 一种远程内存交换分区方法、装置及系统 Active CN104426971B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310391114.9A CN104426971B (zh) 2013-08-30 2013-08-30 一种远程内存交换分区方法、装置及系统
EP14841161.4A EP3029576B1 (en) 2013-08-30 2014-08-12 Method, device and system for remote memory exchange partition
PCT/CN2014/084195 WO2015027815A1 (zh) 2013-08-30 2014-08-12 一种远程内存交换分区方法、装置及系统
US15/056,242 US10013165B2 (en) 2013-08-30 2016-02-29 Remote memory swapping method, apparatus and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310391114.9A CN104426971B (zh) 2013-08-30 2013-08-30 一种远程内存交换分区方法、装置及系统

Publications (2)

Publication Number Publication Date
CN104426971A true CN104426971A (zh) 2015-03-18
CN104426971B CN104426971B (zh) 2017-11-17

Family

ID=52585540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310391114.9A Active CN104426971B (zh) 2013-08-30 2013-08-30 一种远程内存交换分区方法、装置及系统

Country Status (4)

Country Link
US (1) US10013165B2 (zh)
EP (1) EP3029576B1 (zh)
CN (1) CN104426971B (zh)
WO (1) WO2015027815A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484626A (zh) * 2015-08-31 2017-03-08 华为技术有限公司 内存访问的方法、系统及本地节点
CN107209761A (zh) * 2015-09-02 2017-09-26 华为技术有限公司 一种数据访问方法、装置及系统
CN112748989A (zh) * 2021-01-29 2021-05-04 上海交通大学 基于远程内存的虚拟机内存管理方法、系统、终端及介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334387B2 (en) * 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1972215A (zh) * 2006-12-06 2007-05-30 中国科学院计算技术研究所 一种远程内存共享系统及其实现方法
CN102223394A (zh) * 2010-04-02 2011-10-19 英特尔公司 远程直接存储设备访问
US20120198030A1 (en) * 2011-12-22 2012-08-02 Ren Wang Storing Data Using A Direct Data Path Architecture To Reduce Energy Consumption And Improve Performance
US20120317379A1 (en) * 2011-06-08 2012-12-13 Microsoft Corporation Storage architecture for backup application

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8966195B2 (en) * 2009-06-26 2015-02-24 Hewlett-Packard Development Company, L.P. Direct memory access and super page swapping optimizations for a memory blade
CN102460400B (zh) * 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US9170950B2 (en) * 2013-01-16 2015-10-27 International Business Machines Corporation Method, apparatus and computer programs providing cluster-wide page management
US9298372B2 (en) * 2013-03-06 2016-03-29 Dell Products, L.P. System and method for managing storage system snapshots

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1972215A (zh) * 2006-12-06 2007-05-30 中国科学院计算技术研究所 一种远程内存共享系统及其实现方法
CN102223394A (zh) * 2010-04-02 2011-10-19 英特尔公司 远程直接存储设备访问
US20120317379A1 (en) * 2011-06-08 2012-12-13 Microsoft Corporation Storage architecture for backup application
US20120198030A1 (en) * 2011-12-22 2012-08-02 Ren Wang Storing Data Using A Direct Data Path Architecture To Reduce Energy Consumption And Improve Performance

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484626A (zh) * 2015-08-31 2017-03-08 华为技术有限公司 内存访问的方法、系统及本地节点
CN106484626B (zh) * 2015-08-31 2019-11-26 华为技术有限公司 内存访问的方法、系统及本地节点
CN107209761A (zh) * 2015-09-02 2017-09-26 华为技术有限公司 一种数据访问方法、装置及系统
CN107209761B (zh) * 2015-09-02 2019-08-06 华为技术有限公司 一种数据访问方法、装置及系统
CN112748989A (zh) * 2021-01-29 2021-05-04 上海交通大学 基于远程内存的虚拟机内存管理方法、系统、终端及介质

Also Published As

Publication number Publication date
US20160179391A1 (en) 2016-06-23
EP3029576B1 (en) 2018-07-04
WO2015027815A1 (zh) 2015-03-05
CN104426971B (zh) 2017-11-17
EP3029576A4 (en) 2016-07-27
US10013165B2 (en) 2018-07-03
EP3029576A1 (en) 2016-06-08

Similar Documents

Publication Publication Date Title
CN104426971A (zh) 一种远程内存交换分区方法、装置及系统
CN101446926B (zh) 一种高速缓冲存储器掉电数据保存方法、设备和系统
CN101707565B (zh) 零拷贝网络报文发送、接收方法和装置
CN111493749B (zh) 基于扫地机器人的打扫方法、装置、电子设备及存储介质
CN1530842A (zh) 用于多处理器系统中的片上数据传输的方法和系统
US11922059B2 (en) Method and device for distributed data storage
CN105335309A (zh) 一种数据传输方法及计算机
CN103607360A (zh) 一种报文处理方法、线卡及交换设备
CN102870374A (zh) 负荷分担方法及装置、单板
CN103902472B (zh) 基于内存芯片互连的内存访问处理方法、内存芯片及系统
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
CN101976229A (zh) 一种系统中外部设备的数据读取方法、系统及装置
CN104394099A (zh) 一种报文传输方法及装置
CN105491082A (zh) 远程资源访问方法和交换设备
CN105630690A (zh) 异构硬件中大数据处理的方法及装置
CN105785854A (zh) 主从式系统的控制方法和主从式系统
CN113204517B (zh) 一种电力专用以太网控制器的核间共享方法
CN101753351B (zh) 管理信息库扩展、去扩展方法、管理对象查找方法及设备
CN101707566B (zh) 标签分配方法和处理装置
CN104812002A (zh) 集中式ran架构下的处理资源动态调整方法、设备及系统
CN103117955A (zh) 消息传输方法及装置、系统
CN105446291B (zh) 实现dcs系统中对等通信的控制器、操作站、设备及方法
CN104168186A (zh) 一种基于网桥的报文转发方法及系统
CN101719774B (zh) 一种基于融合通信终端蓝牙串口实现的方法
CN105991450A (zh) Mac地址表更新方法及装置

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