WO2014124576A1 - 内存管理方法、内存管理装置及numa系统 - Google Patents

内存管理方法、内存管理装置及numa系统 Download PDF

Info

Publication number
WO2014124576A1
WO2014124576A1 PCT/CN2013/079892 CN2013079892W WO2014124576A1 WO 2014124576 A1 WO2014124576 A1 WO 2014124576A1 CN 2013079892 W CN2013079892 W CN 2013079892W WO 2014124576 A1 WO2014124576 A1 WO 2014124576A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
information
management
memory controller
controller
Prior art date
Application number
PCT/CN2013/079892
Other languages
English (en)
French (fr)
Inventor
王伟
刘奖
裘稀石
吴建国
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP13791712.6A priority Critical patent/EP2784670B1/en
Priority to US14/094,360 priority patent/US8806169B1/en
Priority to US14/282,576 priority patent/US9026766B2/en
Publication of WO2014124576A1 publication Critical patent/WO2014124576A1/zh

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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

Definitions

  • the embodiments of the present invention relate to computer technologies, and in particular, to a memory management method, a memory management device, and a NUMA system. Background technique
  • Non Uniform Memory Access Architecture Non Uniform Memory Access Architecture
  • NUMA Non Uniform Memory Access Architecture
  • the NUMA system connects several processing nodes through a high-speed private network to form a multi-processor server system.
  • Each processing node is composed of several CPUs or Symmetrical Multi-Processing (SMP) to improve data processing. ability.
  • SMP Symmetrical Multi-Processing
  • the existing memory management technology divides the NUMA memory system into two layers: a node and a management area.
  • the node control manages a memory area of a set of access delays, and the management area belongs to a part of the node. All management areas in the system are grouped into a linked list. When a management area has insufficient memory, the memory management system searches in the linked list in turn until it finds the node and management area that meet the requirements.
  • the memory management method, the memory management device and the NUMA system provided by the embodiments of the present invention are used to improve the efficiency of memory management.
  • the first aspect of the present invention provides a memory management method, including: receiving a memory allocation request message sent by a processor, where the memory allocation request message includes memory requirement information; and the processor according to the memory requirement information Memory attribute information of the local node Whether the memory unit corresponding to the local node satisfies the memory requirement information; if the memory unit corresponding to the local node of the processor satisfies the memory requirement information, according to the memory requirement information and the first corresponding to the local node
  • the management information determines a memory controller in the local node that satisfies the memory requirement information, where the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller; Determining, by the identifier of the memory controller, at least one second management information corresponding to the memory controller, determining, according to the memory requirement information and the at least one second management information, that the memory controller meets the memory requirement information a memory management area, the second management information includes an identifier of a memory unit corresponding to the
  • the memory attribute information of the management area is not limited to the first possible implementation.
  • the method further includes: if the processor The memory unit corresponding to the local node does not satisfy the memory requirement information, and determines, according to the memory requirement information and the third management information, a node group that satisfies the memory requirement information, where the third management information includes an identifier of the node group and Memory attribute information of the node group; Determining, by the identifier of the node group of the memory requirement information, the fourth management information corresponding thereto, determining, according to the memory requirement information and the fourth management information, a node that meets the memory requirement information in the node group, where The fourth management information includes an identifier of a node in the node group and memory attribute information of the node.
  • the method further includes: receiving a memory controller offline message sent by the processor, where the memory controller offline message includes an identifier of the memory controller to be offline; according to the memory controller to be offline Defining the type of the memory area corresponding to the memory controller to be offline; if the type of the memory area is a non-floating area, migrating the data information in the memory area corresponding to the memory controller to be offline Go to the free memory area, and record the identifier of the memory controller to be offline and its corresponding memory migration information; perform offline processing on the memory controller to be offline.
  • the method further includes: receiving, by the processor, a memory controller online message, where the online message of the memory controller includes an identifier of the memory controller to be online;
  • the memory controller of the memory controller to be online is obtained by the identifier of the memory controller that is to be online;
  • the data of the memory area corresponding to the memory controller to be online is obtained according to the memory migration information of the memory controller to be online.
  • the information is returned to the memory area corresponding to the memory controller to be online; the memory controller to be online is processed online.
  • an embodiment of the present invention provides a memory management apparatus, where the apparatus includes a first receiving module, configured to receive a memory allocation request message sent by a processor, where the memory allocation request message includes memory requirement information, and The memory allocation request message is sent to the node management module, and the node management module is configured to receive the memory allocation request message sent by the first receiving module, according to the memory requirement information in the memory allocation request message, and the processor.
  • the memory attribute information of the local node determines whether the memory unit corresponding to the local node satisfies the memory requirement information; and the memory controller management module is configured to: if the memory unit corresponding to the local node of the processor satisfies the memory requirement information According to the memory demand information and the local The first management information corresponding to the node determines a memory controller that satisfies the memory requirement information in the local node, where the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller, where An identifier of the memory controller that satisfies the memory requirement information is sent to the memory management area management module, and the memory management area management module is configured to receive the memory controller that is sent by the memory controller management module and meets the memory requirement information.
  • the memory management area management module is specifically configured to: determine, according to an identifier of a memory controller that satisfies the memory requirement information, a first corresponding to the memory controller And the second management information, the memory management area that meets the memory requirement information in the memory controller is determined according to the memory requirement information and the first second management information, where the first second management information includes the memory The identifier of the memory management area corresponding to the controller and the memory attribute information of the memory management area.
  • the memory management area management module specifically includes: a memory module management unit, configured to determine, according to an identifier of a memory controller that satisfies the memory requirement information, The first second management information corresponding to the controller, determining, according to the memory requirement information and the first second management information, a memory module in the memory controller that satisfies the memory requirement information, where the first second management The information includes the identifier of the memory module corresponding to the memory controller and the memory attribute information of the memory module.
  • the memory management area management unit is configured to determine, according to the identifier of the memory module that meets the memory requirement information, a first The second management information, the memory management area that meets the memory requirement information in the memory module is determined according to the memory requirement information and the second second management information, where the second second management information includes the memory The identifier of the memory management area corresponding to the strip and the memory attribute information of the memory management area.
  • the device further includes: a node group management module, configured to: if a memory unit corresponding to a local node of the processor does not satisfy the memory requirement information, Determining, according to the memory requirement information and the fifth management information, a node group that satisfies the memory requirement information, where the fifth management information includes an identifier of the node group and memory attribute information of the node group; and the node management module is further used to: Determining, according to the identifier of the node group that satisfies the memory requirement information, a sixth management information corresponding thereto, determining, according to the memory requirement information and the sixth management information, a node that meets the memory requirement information in the node group.
  • the sixth management information includes an identifier of a node in the node group and memory attribute information of the node.
  • the device further includes: a second receiving module, configured to receive a memory controller offline message sent by the processor, where the memory controller offline message includes an identifier of a memory controller to be offline, and the memory is The controller offline message is sent to the memory controller management module; the memory controller management module is further configured to receive the memory controller offline message sent by the second receiving module, according to the memory to be offline
  • the identifier of the controller acquires the type of the memory area corresponding to the memory controller to be offline; if the type of the memory area is a non-floating area, the memory area corresponding to the memory controller to be offline is in the memory area
  • the data information is migrated to the free memory area, and the identifier of the memory controller to be offline and its corresponding memory migration information are recorded; The controller for offline processing.
  • the device further includes: a third receiving module, configured to receive a memory controller online message sent by the processor, where the online message of the memory controller includes the memory to be online And the identifier of the controller, sending the memory controller offline message to the memory controller management module; the memory controller management module is further configured to receive the memory controller offline message sent by the third receiving module Obtaining, according to the identifier of the memory controller to be online, the memory migration information of the memory controller to be online; and the memory corresponding to the memory controller to be online according to the memory migration information of the memory controller to be online The data information of the area is moved back to the memory area corresponding to the memory controller to be online; the memory controller to be online is performed.
  • an embodiment of the present invention further provides a NUM A system, where the system includes a memory management device and at least one node, the node includes at least one memory controller and at least one processor, and the memory controller and the The memory management device is configured to receive a memory allocation request message sent by the processor, where the memory management request message includes memory requirement information.
  • the memory management method, the memory management device, and the NUMA system determine, by the memory requirement information in the memory allocation request message, whether the local node satisfies the request message by receiving the memory allocation request message sent by the processor.
  • the memory controller determines a memory controller that satisfies the memory requirement information in the local node that satisfies the memory requirement information, and determines a memory management area that satisfies the memory requirement information in the memory controller that satisfies the memory requirement information, and the memory that satisfies the memory requirement information
  • the management area is allocated to the processor that sends the memory allocation request message, and does not need to determine the memory controller and the memory management area among the nodes that do not meet the requirements, can quickly find the storage area that meets the requirements, and improve the memory management efficiency.
  • FIG. 1 is a schematic flowchart of a method for a memory allocation method according to an embodiment of the present invention
  • FIG. 2 is a schematic flowchart of another method for allocating a memory according to an embodiment of the present invention
  • FIG. 2b is another memory allocation according to an embodiment of the present invention
  • FIG. 3 is a schematic flowchart of a method for a memory allocation method according to an embodiment of the present invention
  • FIG. 4 is a schematic flowchart of a method for downloading a memory offline according to an embodiment of the present invention
  • FIG. 5 is a schematic flowchart of a method for performing a memory online method according to an embodiment of the present invention
  • 5 is a schematic flowchart of a method for performing a memory online method according to an embodiment of the present invention
  • 6 is a schematic flowchart of a method for a memory allocation method of an embodiment of a memory management device according to an embodiment of the present invention
  • FIG. 7 is a schematic flowchart of a method for a node offline method according to an embodiment of the present invention
  • FIG. 8 is a schematic flowchart of a method for a node online method according to an embodiment of the present invention
  • FIG. 9 is a schematic diagram of a memory management device according to an embodiment of the present invention
  • FIG. 10 is a schematic diagram showing the logical structure of another memory management device according to an embodiment of the present invention
  • FIG. 11 is a schematic diagram showing the logical structure of a NUMA system according to an embodiment of the present invention.
  • FIG. 1 is a schematic flowchart of a method for a memory allocation method according to an embodiment of the present invention.
  • the method may be applied to a memory management device, where the memory management device may be located on one of the nodes of the NUMA system and may be used as part of an operating system. Can be used as a separate physical device.
  • the method includes:
  • S101 Receive a memory allocation request message sent by a processor, where the memory allocation request message includes memory requirement information.
  • the memory unit here may be any memory storage unit in the local node, such as a memory management area, a memory stick, a memory unit corresponding to the memory controller, and the like.
  • the memory unit corresponding to the local node of the processor satisfies the memory requirement information, determining, according to the memory requirement information and the first management information corresponding to the local node, that the memory node meets the memory requirement information.
  • the memory controller, the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller.
  • S105 Allocate a memory space corresponding to the memory management area to the processor according to an identifier of a memory management area that satisfies the memory requirement information.
  • FIG. 2 is a schematic flowchart of another method for allocating a memory according to an embodiment of the present invention.
  • the method may be applied to a memory management device, where the memory management device may be located on one of the nodes of the NUMA system, and may be used as an operating system. Partial; can also be used as a separate physical device.
  • the memory allocation method provided by the embodiment of the present invention includes:
  • a processor of a node needs to apply for a memory area to cache a program code when executing a program, and the processor sends a memory allocation request message to the memory management apparatus of the system according to a requirement thereof, where the request message includes the processor.
  • the memory requirement information of the requested memory area may include: a memory area size, and may also include a memory area type.
  • the memory area types can be divided into floating areas (also called migratable memory) and non-floating areas (also called non-migging memory).
  • the data stored in the floating area is usually temporary data, and the data stored in the non-floating area is usually long-term. Saved data.
  • the demand information included in the memory allocation request message sent by the processor of a node is: 200KB and not available.
  • Migrating memory means that the processor requests to allocate a memory area of 200 KB in size and a non-floating area.
  • the local node is a node to which the processor belongs.
  • the memory attribute information may include a remaining memory area size.
  • the memory attribute information of the local node includes the size of the memory area remaining in the local node. If the size of the remaining memory area meets the size of the memory area required in the memory requirement information, it is determined that the memory unit corresponding to the local node satisfies the memory requirement information.
  • the memory attribute information may include a remaining memory area size and a remaining memory area type.
  • the node may be a physical computing node, or may be a plurality of logical computing nodes.
  • the "memory unit" in the embodiment of the present invention includes a remaining memory space on one or more nodes of one node, a remaining memory space managed by a memory controller, a remaining memory space corresponding to one memory bar, or a memory management area corresponding to The remaining memory space.
  • the memory unit corresponding to the local node of the processor satisfies the memory requirement information, determining, according to the memory requirement information and the first management information corresponding to the local node, that the memory node meets the memory requirement information.
  • Memory controller If the memory unit corresponding to the local node of the processor satisfies the memory requirement information, determining, according to the memory requirement information and the first management information corresponding to the local node, that the memory node meets the memory requirement information.
  • the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller.
  • the memory requirement information and the memory attribute information can be referred to step 102.
  • the size of the remaining memory area of the memory controller may be greater than or equal to the required memory area size.
  • the remaining memory area type also satisfies the required memory area type, and then determines the memory controller as a memory controller that satisfies the memory requirement information.
  • S204 determining, according to the identifier of the memory controller that meets the memory requirement information, first and second management information corresponding to the memory controller, according to the memory demand information and the first The second management information is used to determine a memory management area of the memory controller that meets the memory requirement information, where the first second management information includes an identifier of a memory management area corresponding to the memory controller and a memory attribute of a memory management area. information.
  • Each memory controller corresponds to a first first management information, and the first second management information includes an identifier of a memory management area corresponding to the memory controller and memory attribute information of the memory management area.
  • Each memory controller corresponds to one or more memory management areas, and the memory management area is the smallest unit of memory units.
  • S205 Allocate a memory space corresponding to the memory management area to the processor according to an identifier of a memory management area that satisfies the memory requirement information.
  • the required memory in the memory requirement information is 200K
  • the memory controller determines the memory management area that satisfies the request message in the memory controller that satisfies the request message, allocates the memory management area that satisfies the request message to the processor that sends the request message, and does not need the memory controller of the other processing node.
  • the search in the linked list of the linked list and the management area reduces the search range, reduces the search time, and improves the memory allocation efficiency.
  • Steps S201-S203 and S205 are similar to the embodiment shown in FIG. 2a, and details are not described herein again.
  • the method also includes:
  • S204b Determine first and second management information corresponding to the memory controller according to the identifier of the memory controller that meets the memory requirement information, and determine the memory according to the memory requirement information and the first second management information.
  • a memory module that meets the memory requirement information in the controller where the first second management information includes an identifier of a memory module corresponding to the memory controller and memory attribute information of the memory module;
  • S204 determining, according to the identifier of the memory module that meets the memory requirement information, second second management information corresponding to the memory strip, and determining, according to the memory requirement information and the second second management information, the memory module a memory management area that satisfies the memory requirement information, where the second second management information includes an identifier of a memory management area corresponding to the memory stick and memory attribute information of a memory management area.
  • the memory controller in FIG. 2b directly corresponds to a memory module, and different memory modules correspond to different memory management areas, thereby further refining the scope of memory search, reducing the search time and improving the search time.
  • the efficiency of memory allocation is different from the embodiment shown in FIG. 2a, the memory controller in FIG. 2b directly corresponds to a memory module, and different memory modules correspond to different memory management areas, thereby further refining the scope of memory search, reducing the search time and improving the search time. The efficiency of memory allocation.
  • the memory allocation method provided by the embodiment of the present invention further includes:
  • the memory unit corresponding to the local node of the processor does not satisfy the memory requirement information, determine, according to the memory requirement information and the third management information, a node group that satisfies the memory requirement information, where the third management The information includes the identifier of the node group and the memory attribute information of the node group;
  • the fourth management information includes an identifier of a node in the node group and memory attribute information of the node.
  • the memory management device determines, according to the memory attribute information of the local node, that the remaining memory of the local node cannot satisfy the required memory, determining, according to the third management information, that the memory requirement information is satisfied.
  • the third management information includes identifiers of the plurality of node groups, and memory attribute information corresponding to each node group; determining, by using the third management information, the node group that satisfies the memory requirement, and then according to the node group that satisfies the memory requirement The corresponding fourth management information determines which one of the node groups satisfies the memory requirement.
  • the "first,” and “second,” and the like in the embodiments of the present invention are merely distinguished, and the meaning of the order is not limited unless otherwise specified.
  • the management information in the embodiment of the present invention may be implemented as a linked list, or may be implemented as an array, or another type of data structure, which is not limited by the embodiment of the present invention.
  • the memory management device searches for a node list of the node group that satisfies the memory requirement (corresponding to The fourth management information), the node linked list is a node linked list composed of the identifiers of the nodes belonging to the node group and the memory attribute information, and according to the memory attribute information of the nodes in the node linked list, determining which node in the node group satisfies the memory requirement, and returns the The node ID corresponding to the node.
  • the memory management area can be searched from the node satisfying the memory requirement by referring to the method of the foregoing embodiment (Fig. 2a or Fig. 2b).
  • the embodiment of the present invention can quickly find a suitable memory management area without traversing the entire management area linked list when the memory allocation of the massive node and the mass memory system is insufficient. Memory allocation efficiency. Memory online method and memory offline method.
  • FIG. 4 is a schematic flowchart of a method for downloading a memory offline according to an embodiment of the present invention.
  • the method can be applied to a memory management device, and the memory allocation method provided by the foregoing embodiment is not limited in sequence, and memory allocation and memory are online and offline. It is a kind of memory management.
  • the memory offline method of this embodiment includes:
  • Step 401 Receive a memory controller offline message sent by the processor, where the memory controller offline message includes an identifier of the memory controller to be offline.
  • the processor sends the memory controller offline message to the memory management device, where the offline message includes the ID of the memory controller to be offline.
  • Step 402 Acquire, according to the identifier of the memory controller to be offline, the type of the memory area corresponding to the memory controller to be offline;
  • Step 403 If the type of the memory area is a non-floating area, the data information in the memory area corresponding to the memory controller to be offline is migrated to the free memory area, and the memory to be offline is recorded.
  • the size of the free memory area is greater than or equal to the size of the memory area corresponding to the memory controller to be offline, and the memory controller corresponding to the free memory area is not the memory controller to be offline.
  • the data information in the memory controller to be offline is copied into the free memory area; or the data information is moved from the original memory area to the free memory area. And recording the specific location of the data information in the memory controller to be offline after being migrated so as to be in the offline When the controller is online again, the data is moved back according to the migration information record.
  • the memory controller corresponds to the memory attribute information, and the memory attribute information includes a memory area size and a memory area type corresponding to the memory controller, so the memory management device can obtain the memory controller corresponding to the memory attribute information corresponding to the memory controller.
  • the type of memory area includes a memory area size and a memory area type corresponding to the memory controller, so the memory management device can obtain the memory controller corresponding to the memory attribute information corresponding to the memory controller.
  • the type of memory area is a type of memory area.
  • the memory attribute information corresponding to the memory controller is determined to determine a free memory area that matches the size of the memory area corresponding to the memory controller to be offline, and the BIOS (Basic Input Output System) is notified The data information is migrated into the free memory area. More specifically, the memory management device allocates a free memory area matched with the memory controller to be offline according to the memory attribute information of the memory controller to be offline, and the memory management device can follow any of the foregoing methods of the memory allocation method.
  • a memory allocation method allocates a free memory area that is greater than or equal to the memory area of the memory controller to be offline.
  • the memory management device may also be a memory controller, and the memory space of the online memory controller is greater than or equal to the standby memory.
  • the memory space of the memory area of the line memory controller is the same as that of the memory controller to be offline.
  • the BIOS can be notified to migrate the data information of the memory controller to be offline to the free memory area.
  • Step 404 Perform offline processing on the memory controller to be offline.
  • the memory controller to be offline is directly processed offline.
  • the memory area of the memory controller to be offline is a floating area
  • the data in the memory area of the memory controller to be offline may not be migrated, and the memory controller to be offline may be directly powered off. .
  • FIG. 4b is a schematic flowchart of a method for downloading another memory offline according to an embodiment of the present invention. As shown in FIG. 4b, the method further includes:
  • Step 403-1 Perform isolation processing on a memory area corresponding to the memory controller to be offline;
  • the allocation or access processing of the memory area of the offline memory controller is prohibited.
  • Step 404-1 Perform a de-isolation process on the memory area corresponding to the memory controller to be offline. Specifically, after the data of the offline memory controller is migrated and recorded, the isolation of the offline memory controller may be released.
  • the memory offline method of the embodiment realizes the data record by recording the data information migration information of the memory controller to be offline, and can move the data back according to the migration information record when the memory controller is online again.
  • the efficiency of the system after the memory controller is online, thereby improving the efficiency of the system to allocate the memory area of the memory controller.
  • FIG. 5 is a schematic flowchart of a method for a memory online method according to an embodiment of the present invention. This method can be applied to a memory controller that is offline. As shown in FIG. 5a, the method includes: Step 501: Receive a memory controller online message sent by a processor, where the memory controller online message includes an identifier of a memory controller to be online;
  • Step 502 Acquire, according to the identifier of the memory controller to be online, the memory migration information of the memory controller to be online;
  • Step 503 The data information of the memory area corresponding to the memory controller to be online is moved back to the memory area corresponding to the memory controller to be online according to the memory migration information of the memory controller to be online;
  • Step 504 Perform online processing on the memory controller to be online.
  • the method further includes:
  • Step 503-1 Perform isolation processing on a memory area corresponding to the memory controller to be online.
  • Step 504-1 Perform a release isolation process on the memory area corresponding to the memory controller to be online.
  • the specific implementation method is the reverse operation of the foregoing offline method, and is easily obtained by those skilled in the art according to the foregoing offline method, and details are not described herein again.
  • the RAS (Reliability Availability and Serviceability) feature is an important feature of mid- to high-end servers, and the memory RAS feature is one of the key features. Memory mirroring protects important memory from being destroyed. Memory migration enables hot swapping of memory. Non-volatile memory enables permanent storage of memory data. Operating system memory management not only requires efficient management of memory usage, but also needs to effectively cooperate with new technologies to implement RAS features of memory. The embodiment of the invention solves the technical problem of hot swapping of any memory by increasing the memory management level and combining the memory migration technology, and has little influence on system performance. Automatic identification after memory hot plug Memory migration records, choose to migrate the memory migrated when hot swapping to the local, reducing the remote access delay.
  • FIG. 6 is a schematic flowchart of a method for a memory allocation method according to an embodiment of a memory management device according to an embodiment of the present invention, including:
  • the memory allocation method is performed by five management modules of the memory management device, and the five management modules are responsible for managing memory allocation of the memory management device, and the five management modules are: Management module, node management module, controller management module, memory module management module and management area management module. among them,
  • the node group management module manages the memory area through the corresponding node linked list
  • the node management module manages a memory area of the node through a corresponding controller linked list
  • the controller management module manages the memory area of the controller through the corresponding memory link list; the memory management module manages the memory area of the memory bar through the corresponding management area linked list; the management area management module manages the memory area of the management area.
  • the CPU of a certain node needs a memory area of 200 KB to store the corresponding instruction.
  • the CPU requests the memory group of the memory management device to allocate a memory area of 200 KB.
  • the method for the node group management module to allocate the memory area for the CPU includes :
  • the node group management module receiving processor sends a memory allocation request message, where the request message includes a requested memory area size, for example, 200 KB.
  • the request message may further include an attribute of the memory area that is requested to be allocated, and the attribute may be, for example, a floating area, for example, the request node group management module allocates a floating memory area of a size of 200 KB.
  • the node group management module searches for the current free memory area of each node group according to the request message, for example, can search for the memory attribute information of the node group, and find a node group whose current free memory area is greater than or equal to 200 KB, the currently idle memory.
  • the node group whose area is greater than or equal to 200 KB may be the node group that is closest to the local node path, or may be a preset node group, and may also be a preferred node group, which is not limited herein.
  • the node management module searches the node list in the above-mentioned node group that meets the requirements, according to The attribute of the current free memory area size of each node in the node list, and the node whose current free memory area is greater than or equal to 200 KB.
  • the controller management module searches for a memory controller that meets the requirements in the controller linked list corresponding to the required node, and determines that the current free memory area is greater than or equal to 200 KB according to the current free memory area of each controller in the controller linked list. Controller.
  • the memory module management module searches for a memory module that meets the requirements in the memory link list corresponding to the controller, and determines that the current free memory area is greater than or equal to 200 KB according to the current free memory area of each memory module in the memory list. Memory stick.
  • S606. Determine, in the memory module that meets the requirement, a memory management area that meets the requirement, and allocate a memory area managed by the memory management area to the processor.
  • the memory module management module determines, in the above-mentioned memory module that meets the requirement, that the memory management area of 200 KB is allocated to the CPU that sends the memory allocation request message to store the corresponding instruction.
  • the memory area of the memory management device is managed by the five hierarchical management modules, and the management modules of each level manage the corresponding linked list.
  • the module that meets the requirements can be found by searching the linked list of the corresponding management module.
  • the upper level is searched down to the next level until the memory area that meets the requirements is found for allocation, which improves the memory allocation efficiency.
  • the management module level of the memory area of the memory management device can be added to the area management module for managing a plurality of node group management modules, and the management of the memory management device can be reduced according to the complexity of the memory management device.
  • the size of the zone or the management module level that will manage the memory management device memory area is reduced
  • FIG. 7 is a schematic flowchart of a method for a node offline method according to an embodiment of the present invention. As shown in FIG. 7, the memory offline method in this embodiment includes:
  • a node needs to be offline, and the node management module of the memory management device may receive the node offline message, where the offline message may include a node identifier that needs to be offline, and the offline message may further include a node. Whether it is attribute information of a floating area, where the floating area is data A memory area that can be migrated.
  • the node management module determines whether the node has been offline by searching for attribute information of the node, and executes 703 if the node has gone offline; and executes 704 if the node has not gone offline.
  • the node management module searches the memory control list of the node, and determines whether the memory controller has been offline according to the attribute information of each memory controller in the memory controller list.
  • the memory controller management module of the memory management device can isolate the memory space of the memory controller that is not offline, that is, the memory controller to be offline, and prohibit memory allocation or data access operations on the memory area of the controller. .
  • the memory controller to be offline is offline.
  • the memory controller to be offline is a floating area
  • the memory controller is directly processed offline.
  • the offline processing may be, for example, powering off the memory controller to be offline.
  • the memory area of the memory controller to be offline is a non-floating area, you need to perform data transfer before the controller to go offline.
  • the memory management request message may be sent to the node management module, and the requesting node management module allocates a memory controller whose memory area is greater than or equal to the memory area of the offline controller, and the node management module performs memory allocation according to the memory allocation request message.
  • the memory offline method can be followed Any of the memory allocation methods provided by the foregoing memory allocation method embodiment determines that a memory area is greater than or equal to the idle first memory controller of the offline controller memory area.
  • Migrate data information in the memory controller to be offline to a free memory area.
  • the controller management module of the memory management device may notify the BIOS to perform a memory migration operation, and migrate data on the memory area of the to-be-offline controller to the first memory area.
  • the controller management module may record the migration information of the memory controller to be offline, including the correspondence between the offline controller and the first memory area, so that the offline controller may also be migrated according to the migration. Recording information moves data from the first memory area back to the offline controller, improving access efficiency to the offline controller, and the controller management module can store the migration information record in other available controllers of the system.
  • the memory controller management module releases the isolation of the memory area of the offline memory controller.
  • the node management module may further receive a controller or a memory bar online message sent by the system, and the node management module moves the data back to the online controller or the memory bar according to the controller or the memory bar online message and the migration information record.
  • FIG. 8 is a schematic flowchart of a method for a node online method according to an embodiment of the present invention. As shown in FIG. 8, the memory online method of this embodiment includes:
  • the NUMA system needs more memory space to meet the needs.
  • a node is brought online, and the node management module of the memory management device receives the online message of the node, and the online message of the node may include the identifier of the online node. It may also include whether the online node is attribute information of a floating area.
  • the node management module determines whether the node has been online by searching for attribute information of the node, and executes 503 if the node is already online; and executes 504 if the node is not online.
  • the node management module searches the memory control list of the node, and determines whether the memory controller is online according to the attribute information of each memory controller in the memory controller linked list.
  • the memory controller module of the memory management device may obtain the migration record retained before the node goes offline according to the node identifier of the online node.
  • the memory controller is online.
  • the memory controller management module of the memory management device can isolate the memory space of the memory controller to be online, and prohibit operations such as memory allocation or data access to the memory area of the controller.
  • the original data of the to-be-online memory controller is moved back to the on-line memory controller through the BIOS.
  • Figure 9a is the hair A schematic diagram of the logical structure of the memory management device provided by the embodiment, as shown in FIG. 9a, the memory management device 100 of the embodiment includes:
  • the first receiving module 101 is configured to receive a memory allocation request message sent by the processor, where the memory allocation request message includes memory requirement information, and sends the memory allocation request message to the node management module 102;
  • the node management module 102 is configured to receive the memory allocation request message sent by the first receiving module 101, and determine the local according to the memory requirement information in the memory allocation request message and the memory attribute information of the local node of the processor. Whether the memory unit corresponding to the node satisfies the memory requirement information;
  • the memory controller management module 103 is configured to determine, according to the memory requirement information and the first management information corresponding to the local node, that the memory unit corresponding to the local node of the processor meets the memory requirement information a memory controller that satisfies the memory requirement information, where the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller, and the memory controller that satisfies the memory requirement information
  • the identifier is sent to the memory management area management module
  • the memory management area management module 104 is configured to receive, by the memory controller management module 103, the identifier of the memory controller that satisfies the memory requirement information, and determine, according to the identifier of the memory controller, the identifier corresponding to the memory controller. Determining, by the at least one second management information, the memory management area that satisfies the memory requirement information in the memory controller according to the memory requirement information and the at least one second management information, where the second management information includes the memory The identifier of the memory unit corresponding to the controller and the attribute information of the memory unit, and sending the identifier of the memory management area that satisfies the memory requirement information to the memory allocation module 105;
  • the memory allocation module 105 is configured to receive, by the memory management area management module 104, the identifier of the memory management area that satisfies the memory requirement information, and allocate a memory space corresponding to the memory management area according to the identifier of the memory management area. To the processor.
  • the memory management area management module 104 is specifically configured to: determine, according to the identifier of the memory controller that meets the memory requirement information, first and second management information corresponding to the memory controller, according to the memory Determining, by the first information, the memory management area of the memory controller that meets the memory requirement information, where the first second management information includes an identifier of a memory management area corresponding to the memory controller And the memory management area of the memory sexual information.
  • the memory management area management module 104 specifically includes: a memory module management unit, configured to determine, according to an identifier of the memory controller that satisfies the memory requirement information, a first second corresponding to the memory controller The management information, the memory strip that meets the memory requirement information in the memory controller is determined according to the memory requirement information and the first second management information, where the first second management information includes the memory controller The identifier of the memory module and the memory attribute information of the memory module;
  • a memory management area management unit configured to determine, according to the identifier of the memory stick that meets the memory requirement information, second second management information corresponding to the memory strip, according to the memory demand information and the second second management information Determining, in the memory module, a memory management area that satisfies the memory requirement information, where the second second management information includes an identifier of a memory management area corresponding to the memory stick and memory attribute information of a memory management area.
  • the memory management apparatus 200 provided by the embodiment of the present invention further includes:
  • the node group management module 201 is configured to determine, according to the memory requirement information and the fifth management information, a node group that satisfies the memory requirement information, if the memory unit corresponding to the local node of the processor does not satisfy the memory requirement information,
  • the fifth management information includes an identifier of the node group and memory attribute information of the node group;
  • the node management module 202 is further configured to determine, according to the identifier of the node group that meets the memory requirement information, sixth management information corresponding thereto, and determine, according to the memory requirement information and the sixth management information, that the node group meets the
  • the node of the memory requirement information, the sixth management information includes an identifier of a node in the node group and memory attribute information of the node.
  • the memory management apparatus 300 provided by the embodiment of the present invention further includes:
  • the second receiving module 301 is configured to receive a memory controller offline message sent by the processor, where the memory controller offline message includes an identifier of the memory controller to be offline, and sends the memory controller offline message Give the memory controller management module.
  • the memory controller management module 103 is further configured to: receive the memory controller offline message sent by the second receiving module 301, and obtain the memory control to be offline according to the identifier of the memory controller to be offline The type of the memory area corresponding to the device; if the type of the memory area is non- The floating area is used to migrate the data information in the memory area corresponding to the memory controller to be offline to the free memory area, and record the identifier of the memory controller to be offline and its corresponding memory migration information; Performing offline processing on the memory controller to be offline.
  • the memory controller management module 103 is further configured to use the memory controller to be offline.
  • the corresponding memory area is isolated.
  • the memory controller management module 103 is further configured to perform de-isolation processing on the memory area corresponding to the memory controller to be offline before the offline processing of the memory controller to be offline.
  • the memory management apparatus 400 provided by the embodiment of the present invention further includes:
  • the third receiving module 401 is configured to receive a memory controller online message sent by the processor, where the online message of the memory controller includes an identifier of the memory controller to be online, and sends the memory controller offline message to the memory control.
  • Device management module ;
  • the memory controller management module 103 is further configured to: receive the memory controller offline message sent by the third receiving module, and acquire a memory migration of the memory controller to be online according to the identifier of the memory controller to be online
  • the data information of the memory area corresponding to the memory controller to be online is relocated to the memory area corresponding to the memory controller to be online, according to the memory migration information of the memory controller to be online;
  • the memory controller to be online is processed online.
  • the memory controller management module 103 is further configured to perform isolation processing on a memory area corresponding to the memory controller to be online.
  • the memory controller management module 103 is further configured to perform de-isolation processing on the memory area corresponding to the memory controller to be online before the online processing of the memory controller to be online.
  • the module division in the several embodiments shown in FIG. 9 is only an example, and the functional modules involved may be combined or further subdivided, for example, the first receiving module 101, the second receiving module 301, and the The three receiving modules 401 can be combined into one that receives different information. Capable module.
  • the division of the functional modules disclosed in the embodiments of the present invention is easily conceivable in the embodiments of the present invention. Therefore, the division of the modules is not limited in the embodiment of the present invention.
  • FIG. 10 is a schematic diagram showing the logical structure of another memory management device according to an embodiment of the present invention.
  • the memory management device 500 can be implemented as a computer system.
  • Receiver 501 and transmitter 502 are used to communicate with other devices or systems other than the memory management device.
  • the memory 504 is used to store data, and specifically includes application data, result data executed by the processor, or data required for processor execution.
  • the processor 503 is configured to execute a memory management method, such as a memory allocation method and a memory online and offline method, provided by the embodiments of the present invention.
  • the memory 504 is configured to store an application that implements any of the memory management methods provided by the embodiments of the present invention; the processor 503 is configured to read and execute an application in the memory 504.
  • the receiver 501 is configured to receive a memory allocation request message sent by a processor of a node (for example, a server in the NUMA system), where the memory allocation request message includes memory requirement information;
  • a processor of a node for example, a server in the NUMA system
  • the processor 503 determines, according to the memory requirement information and the memory attribute information of the local node of the processor, whether the memory unit corresponding to the local node satisfies the memory requirement information; The memory unit corresponding to the local node of the processor satisfies the memory requirement information, and determines, according to the memory requirement information and the first management information corresponding to the local node, a memory controller that satisfies the memory requirement information in the local node.
  • the first management information includes an identifier of a memory controller in the local node and memory attribute information of the memory controller; determining a first second corresponding to the memory controller according to an identifier of the memory controller that satisfies the memory requirement information Management information, determining, according to the memory requirement information and the first second management information, a memory management area that satisfies the memory requirement information in the memory controller, where the first second management information includes the memory controller Corresponding memory management area identifier and memory attribute information of the memory management area; The memory space corresponding to the memory management area is allocated to the processor according to the identifier of the memory management area that satisfies the memory demand information.
  • the processor 503 determines, according to the identifier of the memory controller that meets the memory requirement information, first and second management information corresponding to the memory controller, according to the memory demand information and the a second management information is used to determine a memory module in the memory controller that meets the memory requirement information, where the first second management information includes the memory controller The identifier of the memory module and the memory attribute information of the memory module; determining, according to the identifier of the memory module that satisfies the memory requirement information, the second second management information corresponding to the memory strip, according to the memory demand information and the The second management information determines a memory management area of the memory module that meets the memory requirement information, where the second second management information includes an identifier of a memory management area corresponding to the memory stick and memory attribute information of a memory management area.
  • the processor is further configured to: if the memory unit corresponding to the local node of the processor does not satisfy the memory requirement information, determine, according to the memory requirement information and the third management information, a node group that satisfies the memory requirement information And the third management information includes the identifier of the node group and the memory attribute information of the node group; determining, according to the identifier of the node group that satisfies the memory requirement information, the fourth management information corresponding thereto, according to the memory demand information and the The fourth management information determines a node in the node group that satisfies the memory requirement information, and the fourth management information includes an identifier of a node in the node group and memory attribute information of the node.
  • the transmitter 502 is configured to send a memory allocation request message to a node other than the node where the memory controller or the memory controller is located. Specifically, when the node that the non-memory controller that satisfies the memory requirement is determined by the processor, the transmitter allocates a memory allocation request message to the node that satisfies the memory requirement, and then determines the process of the memory management area.
  • the memory management apparatus provided by the embodiment of the present invention may also be used to perform any of the memory online methods or any of the memory offline methods provided by the foregoing embodiments.
  • the receiver 501 is configured to receive a memory controller offline message sent by a processor of a node, where the memory controller offline message includes an identifier of the memory controller to be offline.
  • the processor 503 acquires the type of the memory area corresponding to the memory controller to be offline according to the identifier of the memory controller to be offline; if the type of the memory area is a non-floating area, the The data information in the memory area corresponding to the memory controller of the line is migrated to the free memory area, and the identifier of the memory controller to be offline and its corresponding memory migration information are recorded; the memory control of the to-be-offline is controlled.
  • the device performs offline processing.
  • the receiver 501 is configured to receive a memory controller online message sent by a processor of a node, where the online message of the memory controller includes an identifier of the memory controller to be online.
  • the processor 503 acquires memory migration information of the memory controller to be online according to the identifier of the memory controller to be online; according to the memory controller to be online
  • the memory migration information is used to relocate the data information of the memory area corresponding to the memory controller to be online to the memory area corresponding to the memory controller to be online; and perform on-line processing on the memory controller to be online.
  • the application program stored in the memory 504 may be divided into the function modules described in the foregoing device embodiments, or may not be divided into modules or other module division manners, which is not limited in the embodiment of the present invention.
  • modules of the computer system provided in FIG. 10 are connected by a processor, and in other embodiments of the present invention, all modules, including the processor, may be connected by a bus, and the bus may be one or more Communication line.
  • the multi-level memory management method in the memory management device proposed by the embodiment of the present invention combines various levels of memory allocation and migration management technologies to implement effective application of memory RAS technology such as memory mirroring, memory protection, and memory fast recovery.
  • FIG. 11 is a schematic diagram showing the logical structure of a NUMA system according to an embodiment of the present invention.
  • the NUMA system 600 includes at least one node 61 and a memory management device 62.
  • the node 61 includes at least one memory controller 611 and at least one processor. 612 and bus 613, memory controller 611 has a communication connection with processor 612.
  • the bus 613 can be an IS A (Industry Standard Architecture) bus, PCI (Peripheral)
  • the bus may be one or more physical lines, and when it is a plurality of physical lines, it may be divided into an address bus, a data bus, a control bus, and the like. In other embodiments, the processor and memory controller may also be directly connected without a bus.
  • the memory management device 62 in the NUMA system 600 provided by the embodiment of the present invention exists as a stand-alone computer system, and the memory management device 62 communicates with a plurality of nodes of the NUMA system through the communication interface 614 in the node 61.
  • the "node” is not necessarily a physical host, and may be physically multiple hosts. In other embodiments of the present invention, the memory management device 62 may also be located on one of the nodes of the NUMA system.
  • the node's communication interface communicates with other nodes.
  • one node 61 includes at least one memory controller 611, and any one of the NUMA systems 600 can access any of the memory controllers 611 in the same processing node.
  • the processor 612 shares the memory controller 611 of the local node through the bus 613, and the memory controller 611 can be mutually accessed by the memory management device 62 between different nodes.
  • the memory management device 62 may be any of the memory management devices described in the foregoing embodiment of the memory management device, configured to receive a memory allocation request message sent by the processor, where the memory allocation request message includes memory requirement information; Determining, by the memory requirement information, the memory attribute information of the local node of the processor, whether the memory unit corresponding to the local node satisfies the memory requirement information; if the memory unit corresponding to the local node of the processor satisfies the memory requirement And determining, by the memory requirement information and the first management information corresponding to the local node, a memory controller that satisfies the memory requirement information in the local node, where the first management information includes a memory controller in the local node.
  • Identifying and storing the memory attribute information of the memory controller determining, according to the identifier of the memory controller that satisfies the memory requirement information, at least one second management information corresponding to the memory controller, according to the memory demand information and the at least one The second management information determines the memory controller a memory management area that satisfies the memory requirement information, where the second management information includes an identifier of a memory unit corresponding to the memory controller and memory attribute information of the memory unit; and an identifier of the memory management area according to the memory requirement information Allocating a memory space corresponding to the memory management area to the processor.
  • the memory management method, the memory management device, and the NUMA system determine, by using the memory allocation request message sent by the processor, whether the local node meets the memory requirement according to the memory requirement information in the memory allocation request message.
  • a memory controller that determines, in a local node that satisfies the memory requirement information, a memory controller that satisfies the memory requirement information, and determines, in a memory controller that satisfies the memory requirement information, a memory that satisfies the memory requirement information
  • the management area allocates a memory management area that satisfies the memory requirement information to a processor that sends the memory allocation request message, and does not need to determine a memory controller and a memory management area in a node that does not meet the requirement, and can quickly find a requirement.
  • the storage area improves the memory allocation efficiency.
  • the embodiment of the present invention further refines the management of the storage area by increasing the node group management level and the memory layer management level, and provides memory allocation efficiency.
  • the memory management device provided by the embodiment of the present invention solves the technical problem of hot swapping of any memory by adding a memory controller management module and a memory migration technology. System performance impact is small. After the memory is hot-plugged, the memory migration record is automatically recognized, and the memory migrated when the hot-plug is selected is moved back to the local area to reduce the remote access delay.
  • the memory management device implemented by the embodiment of the present invention implements the effective application of the memory RAS technology, such as memory mirroring, memory protection, and fast memory recovery, through multi-level management of memory and memory allocation release management technologies at various levels.
  • the device embodiments described above are merely illustrative, and the illustrated components may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. . Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of the embodiment.
  • the connection relationship between the modules indicates that there is a communication connection between them, and specifically, one or more communication buses or signal lines can be realized. Those of ordinary skill in the art can understand and implement without any creative effort.
  • the present invention can be implemented by means of software plus necessary general hardware, and of course, dedicated hardware, dedicated CPU, dedicated memory, dedicated memory, Special components and so on.
  • functions performed by computer programs can be easily implemented with the corresponding hardware.
  • the specific hardware structure used to implement the same function can be various, such as analog circuits, digital circuits, or dedicated circuits. Circuits, etc.
  • software program implementation is a better implementation in more cases.
  • the technical solution of the present invention which is essential or contributes to the prior art, may be embodied in the form of a software product stored in a readable storage medium, such as a floppy disk of a computer.
  • U disk mobile hard disk, read-only memory (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), disk or optical disk, etc., including a number of instructions to make a computer device (may be A personal computer, server, or network device, etc., performs the methods described in various embodiments of the present invention.
  • ROM Read-Only Memory
  • RAM Random Access Memory
  • disk or optical disk etc., including a number of instructions to make a computer device (may be A personal computer, server, or network device, etc., performs the methods described in various embodiments of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种内存管理方法、内存管理装置及NUMA系统,内存管理方法包括:接收处理器发送的内存分配请求消息,内存分配请求消息中包含内存需求信息;根据内存需求信息确定处理器的本地处理节点中是否存在满足内存需求信息的内存控制器;若存在,则在满足内存需求信息的内存控制器中确定满足内存需求信息的内存管理区,将满足内存需求信息的内存管理区对应的内存分配给处理器。通过在满足要求的内存控制器中确定满足要求的内存管理区分配给需求的处理器,不需要在不满足要求的处理节点中确定内存控制器及内存管理区,能够快速找到满足要求的存储区域,提高了内存分配效率。

Description

内存管理方法、 内存管理装置及 NUMA系统 技术领域
本发明实施例涉及计算机技术, 尤其涉及一种内存管理方法、 内存管 理装置及 NUMA系统。 背景技术
随着计算机技术的迅速发展, 人们对计算机数据处理能力的要求曰益 提高, 迫切需要将多个处理器组成一个分布式系统, 非一致访问分布共享 存 4诸 ( Non Uniform Memory Access Architecture , 筒称 NUMA )技术就是 一种分布式系统。
NUMA 系统将若干个处理节点通过高速专用网络连接起来构成多处 理器服务器系统, 每个处理节点由若干个 CPU 或是对称多处理系统 ( Symmetrical Multi-Processing , 筒称 SMP )构成, 以提高数据处理能力。 为了便于管理 NUMA系统的内存, 现有内存管理技术将 NUMA内存系统 筒单划分为节点和管理区两层, 节点控制管理一组访问延迟的内存区域, 管理区属于节点内的一部分。 系统中所有的管理区被组成一个链表, 当某 个管理区内存不足时, 内存管理系统会依次在链表中查找, 直到找到满足 要求的节点和管理区。 但是, NUMA系统逐渐大型化, 其处理节点的数量 和内存大小也随之增大, 所需维护的管理区链表将会很庞大, 而查找满足 需求的管理区的过程可能会遍历管理区链表, 从而导致内存分配以及管理 的效率较低。 发明内容
本发明实施例提供的内存管理方法、 内存管理装置及 NUMA系统, 用以提升内存管理的效率。
第一方面, 本发明实施例提供一种内存管理方法, 包括: 接收处理器 发送的内存分配请求消息, 所述内存分配请求消息中包含内存需求信息; 根据所述内存需求信息和所述处理器的本地节点的内存属性信息判断所 述本地节点对应的内存单元是否满足所述内存需求信息; 若所述处理器的 本地节点对应的内存单元满足所述内存需求信息, 则根据所述内存需求信 息以及所述本地节点对应的第一管理信息确定本地节点中满足所述内存 需求信息的内存控制器, 所述第一管理信息包括本地节点中的内存控制器 的标识及内存控制器的内存属性信息; 根据满足所述内存需求信息的内存 控制器的标识确定与所述内存控制器对应的至少一个第二管理信息, 根据 所述内存需求信息与所述至少一个第二管理信息确定所述内存控制器中 满足所述内存需求信息的内存管理区, 所述第二管理信息包括所述内存控 制器对应的内存单元的标识以及内存单元的属性信息; 根据满足所述内存 需求信息的内存管理区的标识将所述内存管理区对应的内存空间分配给 所述处理器。
结合第一方面, 在第一种可能的实现方式中, 根据满足所述内存需求 信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信 息, 根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器 中满足所述内存需求信息的内存管理区, 所述第一第二管理信息包括所述 内存控制器对应的内存管理区的标识及内存管理区的内存属性信息。
结合第一方面, 在第二种可能的实现方式中, 根据满足所述内存需求 信息的内存控制器的标识确定与所述内存控制器对应的第一第二管理信 息, 根据所述内存需求信息与所述第一第二管理信息确定所述内存控制器 中满足所述内存需求信息的内存条, 所述第一第二管理信息包括所述内存 控制器对应的内存条的标识及内存条的内存属性信息; 根据满足所述内存 需求信息的内存条的标识确定与所述内存条对应的第二第二管理信息, 根 据所述内存需求信息与所述第二第二管理信息确定所述内存条中满足所 述内存需求信息的内存管理区, 所述第二第二管理信息包括所述内存条对 应的内存管理区的标识及内存管理区的内存属性信息。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第 二种可能的实现方式, 在第三种可能的实现方式中, 所述方法还包括: 若 所述处理器的本地节点对应的内存单元不满足所述内存需求信息, 则根据 所述内存需求信息与第三管理信息确定满足所述内存需求信息的节点组, 所述第三管理信息包括节点组的标识及节点组的内存属性信息; 根据满足 所述内存需求信息的节点组的标识确定与其对应的第四管理信息, 根据所 述内存需求信息与所述第四管理信息确定所述节点组中满足所述内存需 求信息的节点, 所述第四管理信息包括所述节点组中的节点的标识以及节 点的内存属性信息。
结合第一方面、 第一方面的第一种可能的实现方式、 第一方面的第二 种可能的实现方式或第一方面的第三种可能的实现方式, 在第四种可能的 实现方式中, 所述方法还包括: 接收处理器发送的内存控制器下线消息, 所述内存控制器下线消息中包括待下线的内存控制器的标识; 根据所述待 下线的内存控制器的标识获取所述待下线的内存控制器对应的内存区域 的类型; 若所述内存区域的类型为非浮动区域, 则将所述待下线的内存控 制器对应的内存区域中的数据信息迁移到空闲内存区域中, 并记录所述待 下线的内存控制器的标识及其对应的内存迁移信息; 对所述待下线的内存 控制器进行下线处理。
结合第一方面、 第一方面的第一种可能的实现方式、 第一方面的第二 种可能的实现方式、 第一方面的第三种可能的实现方式或第一方面的第四 种可能的实现方式, 在第五种可能的实现方式中, 所述方法还包括: 接收 处理器发送的内存控制器上线消息, 所述内存控制器上线消息中包括待上 线的内存控制器的标识; 根据所述待上线的内存控制器的标识获取所待上 线的内存控制器的内存迁移信息; 根据所述待上线的内存控制器的内存迁 移信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所 述待上线的内存控制器对应的内存区域中; 对所述待上线的内存控制器进 行上线处理。
第二方面, 本发明实施例提供一种内存管理装置, 该装置包括第一接 收模块, 用于接收处理器发送的内存分配请求消息, 所述内存分配请求消 息中包含内存需求信息, 并将所述内存分配请求消息发送给节点管理模 块; 节点管理模块, 用于接收所述第一接收模块发送的所述内存分配请求 消息, 根据所述内存分配请求消息中的内存需求信息和所述处理器的本地 节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内 存需求信息; 内存控制器管理模块, 用于若所述处理器的本地节点对应的 内存单元满足所述内存需求信息, 则根据所述内存需求信息以及所述本地 节点对应的第一管理信息确定本地节点中满足所述内存需求信息的内存 控制器, 所述第一管理信息包括本地节点中的内存控制器的标识及内存控 制器的内存属性信息, 将所述满足所述内存需求信息的内存控制器的标识 发送给内存管理区管理模块; 内存管理区管理模块, 用于接收所述内存控 制器管理模块发送的所述满足所述内存需求信息的内存控制器的标识, 根 据所述内存控制器的标识确定与所述内存控制器对应的至少一个第二管 理信息, 根据所述内存需求信息与所述至少一个第二管理信息确定所述内 存控制器中满足所述内存需求信息的内存管理区, 所述第二管理信息包括 所述内存控制器对应的内存单元的标识以及内存单元的属性信息, 将所述 满足所述内存需求信息的内存管理区的标识发送给内存分配模块; 内存分 配模块, 用于接收所述内存管理区管理模块发送的所述满足所述内存需求 信息的内存管理区的标识, 根据所述内存管理区的标识将所述内存管理区 对应的内存空间分配给所述处理器。
结合第二方面, 在第一种可能的实现方式中, 所述内存管理区管理模 块具体用于: 根据满足所述内存需求信息的内存控制器的标识确定与所述 内存控制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一 第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理 区, 所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识 及内存管理区的内存属性信息。
结合第二方面, 在第二种可能的实现方式中, 所述内存管理区管理模 块具体包括: 内存条管理单元, 用于根据满足所述内存需求信息的内存控 制器的标识确定与所述内存控制器对应的第一第二管理信息, 根据所述内 存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述内 存需求信息的内存条, 所述第一第二管理信息包括所述内存控制器对应的 内存条的标识及内存条的内存属性信息; 内存管理区管理单元, 用于根据 满足所述内存需求信息的内存条的标识确定与所述内存条对应的第二第 二管理信息, 根据所述内存需求信息与所述第二第二管理信息确定所述内 存条中满足所述内存需求信息的内存管理区, 所述第二第二管理信息包括 所述内存条对应的内存管理区的标识及内存管理区的内存属性信息。
结合第二方面、 第二方面的第一种可能的实现方式或第二方面的第二 种可能的实现方式, 在第三种可能的实现方式中, 所述装置还包括: 节点 组管理模块, 用于若所述处理器的本地节点对应的内存单元不满足所述内 存需求信息, 则根据所述内存需求信息与第五管理信息确定满足所述内存 需求信息的节点组, 所述第五管理信息包括节点组的标识及节点组的内存 属性信息; 所述节点管理模块, 还用于根据满足所述内存需求信息的节点 组的标识确定与其对应的第六管理信息, 根据所述内存需求信息与所述第 六管理信息确定所述节点组中满足所述内存需求信息的节点, 所述第六管 理信息包括所述节点组中的节点的标识以及节点的内存属性信息。
结合第二方面、 第二方面的第一种可能的实现方、 第二方面的第二种 可能的实现方式或第二方面的第三种可能的实现方式, 在第四种可能的实 现方式中, 所述装置还包括: 第二接收模块, 用于接收处理器发送的内存 控制器下线消息, 所述内存控制器下线消息中包括待下线的内存控制器的 标识, 将所述内存控制器下线消息发送给内存控制器管理模块; 所述内存 控制器管理模块还用于, 接收所述第二接收模块发送的所述内存控制器下 线消息, 根据所述待下线的内存控制器的标识获取所述待下线的内存控制 器对应的内存区域的类型; 若所述内存区域的类型为非浮动区域, 则将所 述待下线的内存控制器对应的内存区域中的数据信息迁移到空闲内存区 域中, 并记录所述待下线的内存控制器的标识及其对应的内存迁移信息; 对所述待下线的内存控制器进行下线处理。
结合第二方面、 第二方面的第一种可能的实现方、 第二方面的第二种 可能的实现方式、 第二方面的第三种可能的实现方式或第二方面的第四种 可能的实现方式, 在第五种可能的实现方式中, 所述装置还包括: 第三接 收模块, 用于接收处理器发送的内存控制器上线消息, 所述内存控制器上 线消息中包括待上线的内存控制器的标识, 将所述内存控制器下线消息发 送给内存控制器管理模块; 所述内存控制器管理模块还用于, 接收所述第 三接收模块发送的所述内存控制器下线消息, 根据所述待上线的内存控制 器的标识获取所待上线的内存控制器的内存迁移信息; 根据所述待上线的 内存控制器的内存迁移信息将所述待上线的内存控制器对应的内存区域 的数据信息回迁到所述待上线的内存控制器对应的内存区域中; 对所述待 上线的内存控制器进行上线处理。 第三方面, 本发明实施例还提供一种 NUM A系统, 该系统包括内存 管理装置和至少一个节点, 所述节点包括至少一个内存控制器和至少一个 处理器, 所述内存控制器与所述处理器具有通信连接; 所述内存管理装置 为本发明前述任一实施例提供的内存管理装置, 用于接收所述处理器发送 的内存分配请求消息, 所述内存分配请求消息中包含内存需求信息; 根据 所述内存需求信息和所述处理器的本地节点的内存属性信息判断所述本 地节点对应的内存单元是否满足所述内存需求信息; 若所述处理器的本地 节点对应的内存单元满足所述内存需求信息, 则根据所述内存需求信息以 及所述本地节点对应的第一管理信息确定本地节点中满足所述内存需求 信息的内存控制器, 所述第一管理信息包括本地节点中的内存控制器的标 识及内存控制器的内存属性信息; 根据满足所述内存需求信息的内存控制 器的标识确定与所述内存控制器对应的至少一个第二管理信息, 根据所述 内存需求信息与所述至少一个第二管理信息确定所述内存控制器中满足 所述内存需求信息的内存管理区, 所述第二管理信息包括所述内存控制器 对应的内存单元的标识以及内存单元的属性信息; 根据满足所述内存需求 信息的内存管理区的标识将所述内存管理区对应的内存空间分配给所述 处理器。
可见, 本发明实施例提供的内存管理方法、 内存管理装置及 NUMA 系统, 通过接收处理器发送的内存分配请求消息, 根据内存分配请求消息 中的内存需求信息确定本地节点中是否存在满足请求消息的内存控制器, 在满足内存需求信息的本地节点中确定满足内存需求信息的内存控制器, 在满足内存需求信息的内存控制器中确定满足内存需求信息的内存管理 区, 将满足内存需求信息的内存管理区分配给发送所述内存分配请求消息 的处理器, 不需要在不满足要求的节点中确定内存控制器及内存管理区, 能够快速找到满足要求的存储区域, 提高了内存管理效率。 附图说明
实施例或现有技术描述中所需要使用的附图作一筒单地介绍, 显而易见 地, 下面描述中的附图是本发明的一些实施例, 对于本领域普通技术人员 来讲, 在不付出创造性劳动性的前提下, 还可以根据这些附图获得其他的 附图。
图 1为本发明实施例提供的内存分配方法的方法流程示意图; 图 2 a为本发明实施例提供的另一内存分配方法的方法流程示意图; 图 2b为本发明实施例提供的另一内存分配方法的方法流程示意图; 图 3为本发明实施例提供的另一内存分配方法的方法流程示意图; 图 4a为本发明实施例提供的内存下线方法的方法流程示意图; 图 4b为本发明实施例提供的另一内存下线方法的方法流程示意图; 图 5a为本发明实施例提供的内存上线方法的方法流程示意图; 图 5b为本发明实施例提供的另一内存上线方法的方法流程示意图; 图 6为本发明实施例提供的内存管理装置实施例的内存分配方法的方 法流程示意图;
图 7为本发明实施例提供的节点下线方法的方法流程示意图; 图 8为本发明实施例提供的节点上线方法的方法流程示意图; 图 9a-图 9d为本发明实施例提供的内存管理装置的逻辑结构示意图; 图 10为本发明实施例提供的另一内存管理装置的逻辑结构示意图; 图 11为本发明实施例提供的 NUMA系统的逻辑结构示意图。
具体实施方式 为使本发明的目的、 技术方案和优点更加清楚, 下面将结合本发明中 的附图, 对本发明中的技术方案进行清楚、 完整地描述, 显然, 所描述的 实施例是本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实 施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其 他实施例, 都属于本发明保护的范围。
图 1为本发明实施例提供的内存分配方法的方法流程示意图, 该方法 可以应用于一内存管理装置中, 该内存管理装置可以位于 NUMA系统的 其中一个节点上, 可以作为操作系统的一部分; 也可以单独作为一个独立 的物理装置。 如图 1所示, 该方法包括:
S101、 接收处理器发送的内存分配请求消息, 所述内存分配请求消息 中包含内存需求信息。
S102、根据所述内存需求信息和所述处理器的本地节点的内存属性信 息判断所述本地节点对应的内存单元是否满足所述内存需求信息。
这里的内存单元可以是本地节点内的任意内存存储单元, 例如内存管 理区、 内存条、 内存控制器对应的内存单元等。
5103、若所述处理器的本地节点对应的内存单元满足所述内存需求信 息, 则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定 本地节点中满足所述内存需求信息的内存控制器, 所述第一管理信息包括 本地节点中的内存控制器的标识及内存控制器的内存属性信息。
5104、根据满足所述内存需求信息的内存控制器的标识确定与所述内 存控制器对应的至少一个第二管理信息, 根据所述内存需求信息与所述至 少一个第二管理信息确定所述内存控制器中满足所述内存需求信息的内 存管理区, 所述第二管理信息包括所述内存控制器对应的内存单元的标识 以及内存单元的属性信息。
S105、根据满足所述内存需求信息的内存管理区的标识将所述内存管 理区对应的内存空间分配给所述处理器。
图 2 a为本发明实施例提供的另一内存分配方法的方法流程示意图, 该方法可以应用于一内存管理装置中, 该内存管理装置可以位于 NUMA 系统的其中一个节点上, 可以作为操作系统的一部分; 也可以单独作为一 个独立的物理装置。 如图 2a所示, 本发明实施例提供的内存分配方法包 括:
S201、 接收处理器发送的内存分配请求消息, 所述内存分配请求消息 中包含内存需求信息。
具体地, 例如在 NUMA系统中, 节点的处理器执行程序时需要申请 内存区域以緩存程序代码, 处理器根据自身需求向系统的内存管理装置发 送内存分配请求消息, 该请求消息中包含该处理器申请的内存区域的内存 需求信息, 该内存需求信息中可以包括: 内存区域大小, 另外还可以包括 内存区域类型。 内存区域类型可以分为浮动区域(也叫做可迁移内存)和 非浮动区域(也叫做不可迁移内存) , 浮动区域中所存储的数据通常为临 时数据, 非浮动区域中所存储的数据通常为长期保存的数据。 例如: 某节 点的处理器发送的内存分配请求消息中包括的需求信息为: 200KB和不可 迁移内存, 则表示该处理器请求分配一块大小为 200KB、 内存区域类型为 非浮动区域的内存区域。
5202、根据所述内存需求信息和所述处理器的本地节点的内存属性信 息判断所述本地节点对应的内存单元是否满足所述内存需求信息;
所述本地节点为所述处理器所属的节点。
在一种实现方式下, 若内存需求信息包括需求的内存区域大小, 则所 述内存属性信息可以包括剩余的内存区域大小。 本地节点的内存属性信息 中包括本地节点剩余的内存区域大小, 若这个剩余内存区域大小满足内存 需求信息中需求的内存区域大小, 那么则确定该本地节点对应的内存单元 满足所述内存需求信息。
在另一种实现方式下, 若内存需求信息包括需求的内存区域大小和需 求的内存区域类型, 则所述内存属性信息可以包括剩余的内存区域大小和 剩余的内存区域类型。
需说明的是, 本发明实施例中节点可以为一个物理的计算节点, 也可 以为逻辑上的多个物理计算节点。 本发明实施例中的 "内存单元" 包括一 个节一个或多个节点上的剩余内存空间、 一个内存控制器管理下的剩余内 存空间、 一个内存条对应的剩余内存空间, 或一个内存管理区对应的剩余 内存空间。
5203、若所述处理器的本地节点对应的内存单元满足所述内存需求信 息, 则根据所述内存需求信息以及所述本地节点对应的第一管理信息确定 本地节点中满足所述内存需求信息的内存控制器。
所述第一管理信息包括本地节点中的内存控制器的标识及内存控制 器的内存属性信息。这里内存需求信息与内存属性信息可以参考步骤 102。
具体的, 通过查询第一管理信息, 若内存需求信息与本地节点中的某 一个内存控制器的内存属性信息匹配, 具体可以为该内存控制器的剩余内 存区域大小大于或等于需求的内存区域大小, 且剩余内存区域类型也满足 需求的内存区域类型, 则确定该内存控制器为满足所述内存需求信息的内 存控制器。
S204a、 根据满足所述内存需求信息的内存控制器的标识确定与所述 内存控制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一 第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管理 区, 所述第一第二管理信息包括所述内存控制器对应的内存管理区的标识 及内存管理区的内存属性信息。
每个内存控制器对应各自的第一第二管理信息, 所述第一第二管理信 息包括该内存控制器对应的内存管理区的标识及该内存管理区的内存属 性信息。 每个内存控制器都对应各自的一个或多个内存管理区, 内存管理 区为内存单元的最小单位。
S205、根据满足所述内存需求信息的内存管理区的标识将所述内存管 理区对应的内存空间分配给所述处理器。
以内存需求信息中需求内存为 200K为例, 首先判断本地节点中的剩 余内存区域是否大于或等于 200K, 若大于或等于, 则再从本地节点的内 存控制器中找到对应的剩余内存空间大于或等于 200K的内存控制器, 然 后在从该内存控制器对应的内存管理区中找到大于或等于 200K的内存管 理区, 最后将所述内存管理区对应的内存空间分配给所述处理器。
可见, 在本实施例中, 通过接收处理器发送的内存分配请求消息, 根 据内存需求信息确定本地处理节点中是否存在满足请求消息的内存控制 器, 在满足请求消息的本地处理节点中确定满足请求的内存控制器, 在满 足请求消息的内存控制器中确定满足请求消息的内存管理区, 将满足请求 消息的内存管理区分配给发送请求消息的处理器, 不需要在其它处理节点 的内存控制器链表及管理区链表中查找, 缩小了查找范围, 减少了查找时 间, 提高了内存分配效率。
图 2 b为本发明实施例提供的另一内存分配方法的方法流程示意图。 如图 2b所示, 该方法包括: 其中步骤 S201-S203以及 S205与图 2a所示 实施例类似, 在此不再赘述。
该方法还包括:
S204b、 根据满足所述内存需求信息的内存控制器的标识确定与所述 内存控制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一 第二管理信息确定所述内存控制器中满足所述内存需求信息的内存条, 所 述第一第二管理信息包括所述内存控制器对应的内存条的标识及内存条 的内存属性信息; S204c、 根据满足所述内存需求信息的内存条的标识确定与所述内存 条对应的第二第二管理信息, 根据所述内存需求信息与所述第二第二管理 信息确定所述内存条中满足所述内存需求信息的内存管理区, 所述第二第 二管理信息包括所述内存条对应的内存管理区的标识及内存管理区的内 存属性信息。
与图 2a所示实施例不同, 图 2b中内存控制器直接对应的是内存条, 不同的内存条又对应不同的内存管理区, 因而进一步细化了内存查找的范 围, 减少了查找时间, 提高了内存分配效率。
在上述实施例的基础上, 进一步地, 如图 3所示, 本发明实施例提供 的内存分配方法还包括:
S301、若所述处理器的本地节点对应的内存单元不满足所述内存需求 信息, 则根据所述内存需求信息与第三管理信息确定满足所述内存需求信 息的节点组, 所述第三管理信息包括节点组的标识及节点组的内存属性信 息;
S302、根据满足所述内存需求信息的节点组的标识确定与其对应的第 四管理信息, 根据所述内存需求信息与所述第四管理信息确定所述节点组 中满足所述内存需求信息的节点, 所述第四管理信息包括所述节点组中的 节点的标识以及节点的内存属性信息。
具体地, 内存管理装置接收处理器的内存分配请求消息以后, 若根据 本地节点的内存属性信息确定本地节点的剩余内存无法满足需求的内存, 那么根据第三管理信息确定满足所述内存需求信息的节点组, 第三管理信 息中包括多个节点组的标识, 以及每个节点组对应的内存属性信息; 通过 第三管理信息确定出满足内存需求的节点组, 再根据该满足内存需求的节 点组对应的第四管理信息中确定该节点组中哪一个节点满足所述内存需 求。
本发明实施例中的 "第一,, 和 "第二,, 等仅作区分, 未经特别说明, 不存在前后顺序限定的意思。 本发明实施例中所述的管理信息既可以实现 为链表, 也可以实现为数组, 或其它类型的数据结构, 本发明实施例对此 不作限定。
具体地, 内存管理装置查找满足内存需求的节点组的节点链表(对应 第四管理信息) , 节点链表为由属于节点组的节点的标识以及内存属性信 息构成的节点链表, 根据节点链表中的节点的内存属性信息确定该节点组 中哪一个节点满足内存需求, 返回该节点对应的节点标识。
查找到满足内存需求的节点之后, 可以参考前述实施例 (图 2a或图 2b ) 的方法从该满足内存需求的节点中进行内存管理区的查找。
可见, 本发明实施例通过增加层次的内存管理方式, 使得在海量节点 和海量内存系统的内存分配发生不足时, 能够很快寻找到适合要求的内存 管理区而无需遍历整个管理区链表, 提升了内存分配效率。 内存上线方法和内存下线方法。
图 4a为本发明实施例提供的内存下线方法的方法流程示意图, 该方 法可以应用于一内存管理装置中, 并与前述实施例提供的内存分配方法无 先后顺序限制, 内存分配和内存上下线都是内存管理的一种。 如图 4a所 示, 本实施例的内存下线方法包括:
步骤 401、 接收处理器发送的内存控制器下线消息, 所述内存控制器 下线消息中包括待下线的内存控制器的标识。
具体地, 当 NUMA系统的某一内存控制器发生错误或系统管理员希 望某一内存控制器下线时, 处理器向内存管理装置发送该内存控制器下线 消息, 该下线消息中包括该待下线内存控制器的标识。
步骤 402、 根据所述待下线的内存控制器的标识获取所述待下线的内 存控制器对应的内存区域的类型;
步骤 403、 若所述内存区域的类型为非浮动区域, 则将所述待下线的 内存控制器对应的内存区域中的数据信息迁移到空闲内存区域中, 并记录 所述待下线的内存控制器的标识及其对应的内存迁移信息;
所述空闲内存区域的大小大于或等于所述待下线的内存控制器对应 的内存区域的大小, 且所述空闲内存区域对应的内存控制器不是所述待下 线的内存控制器。
具体地, 将待下线内存控制器中的数据信息复制到空闲内存区域中; 或者, 将数据信息从原有的内存区域移动到空闲内存区域中。 并将待下线 内存控制器中的数据信息被迁移后的具体位置进行记录以便该待下线内 存控制器再次上线时依据该迁移信息记录将数据迁回。
内存控制器对应各自的内存属性信息, 该内存属性信息包括内存控制 器对应的内存区域大小以及内存区域类型, 因此内存管理装置可以通过该 内存控制器对应的内存属性信息来获取该内存控制器对应的内存区域的 类型。
具体的, 查找内存控制器对应的内存属性信息确定与所述待下线的内 存控制器对应的内存区域大小相匹配的空闲内存区域,并通知 BIOS(Basic Input Output System, 基本输入输出系统)将数据信息迁移到该空闲内存 区域中。 更具体的, 内存管理装置根据待下线内存控制器的内存属性信息 为该待下线的内存控制器分配与其相匹配的空闲内存区域, 内存管理装置 可以遵照上述内存分配方法实施例提供的任一内存分配方法分配一内存 区域大于等于待下线内存控制器内存区域的空闲的内存区域, 内存管理装 置还可以上线一内存控制器, 该上线的内存控制器的内存空间大于或等于 该待下线内存控制器内存区域的内存空间, 内存区域类型与该待下线内存 控制器相同; 确定空闲内存区域之后, 可以通知 BIOS将待下线内存控制 器的数据信息迁移到空闲内存区域中。
步骤 404、 对所述待下线的内存控制器进行下线处理。
另一方面, 若所述内存区域的类型不是非浮动区域, 则直接对所述待 下线的内存控制器进行下线处理。
具体地, 若待下线内存控制器的内存区域是浮动区域, 则可以不用将 该待下线内存控制器的内存区域中的数据进行迁移, 而可以将该待下线内 存控制器直接断电。
进一步的, 图 4b为本发明实施例提供的另一内存下线方法的方法流 程示意图。 如图 4b所示, 该方法还包括:
步骤 403-1、 对所述待下线的内存控制器对应的内存区域进行隔离处 理;
具体地, 将待下线的内存控制器中的数据信息迁移到空闲内存区域中 之前, 禁止对待下线内存控制器的内存区域进行分配或访问处理。
步骤 404-1、 对所述待下线的内存控制器对应的内存区域进行解除隔 离处理。 具体地, 当完成对待下线内存控制器的数据进行迁移并记录之后, 可 以, 解除对待下线内存控制器的隔离。
可见, 本实施例的内存下线方法, 通过记录待下线内存控制器的的数 据信息迁移信息, 实现了数据记录, 能够在内存控制器再次上线时依据该 迁移信息记录将数据迁回, 提高系统对该内存控制器上线后的查找效率, 从而提高系统将该内存控制器的内存区域进行分配的效率。
图 5a为本发明实施例提供的内存上线方法的方法流程示意图。 该方 法可以应用于某一被下线的内存控制器。 如图 5a所示, 该方法包括: 步骤 501、 接收处理器发送的内存控制器上线消息, 所述内存控制器 上线消息中包括待上线的内存控制器的标识;
步骤 502、 根据所述待上线的内存控制器的标识获取所待上线的内存 控制器的内存迁移信息;
步骤 503、 根据所述待上线的内存控制器的内存迁移信息将所述待上 线的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控 制器对应的内存区域中;
步骤 504、 对所述待上线的内存控制器进行上线处理。
进一步的, 如图 5b所示, 该方法还包括:
步骤 503-1、 对所述待上线的内存控制器对应的内存区域进行隔离处 理;
步骤 504-1、 对所述待上线的内存控制器对应的内存区域进行解除隔 离处理。
具体实现方法为前述下线方法的相反操作, 本领域技术人员容易根据 前述下线方法获得, 在此不再赘述。
RAS (Reliability Availability and Serviceability , 可靠性、 可用性和可服 务性)特性是中高端服务器的一个重要特性, 内存 RAS特性是其中的关键 特性之一。 内存镜像保护重要内存不被破坏, 内存迁移实现内存热插拔, 非易失性内存实现内存数据的永久保存。 操作系统内存管理不仅需要高效 管理内存使用, 还需要有效的配合新技术实现内存的 RAS特性。 本发明 实施例通过增加内存管理层次, 结合内存迁移技术, 解决了任意内存热插 拔的技术问题, 同时对系统性能影响很小。 在内存热插后, 也能自动识别 内存迁移记录,选择将热拔时迁移的内存回迁到本地,减少远端访问延迟。 图 6为本发明实施例提供的内存管理装置实施例的内存分配方法的方 法流程示意图, 包括:
在本实施例中, 内存分配方法由内存管理装置的 5个管理模块来执行, 该五个管理模块负责对内存管理装置的内存区域进行内存分配等管理, 该 5个管理模块依次为: 节点组管理模块、 节点管理模块、 控制器管理模块、 内存条管理模块和管理区管理模块。 其中,
节点组管理模块通过对应的节点链表管理内存区域;
节点管理模块通过对应的控制器链表管理节点的内存区域;
控制器管理模块通过对应的内存条链表管理控制器的内存区域; 内存条管理模块通过对应的管理区链表管理内存条的内存区域; 管理区管理模块管理管理区的内存区域。
系统运行时,某一节点的 CPU需要 200KB的内存区域存放相应的指令, 该 CPU向内存管理装置的节点组管理模块请求分配 200KB的内存区域, 节 点组管理模块为该 CPU分配内存区域的方法包括:
S601、 接收处理器的内存分配请求消息, 该请求消息中包括请求分配的 内存区 i或大小。
具体地, 节点组管理模块接收处理器发送内存分配请求消息, 该请求 消息中包括请求的内存区域大小, 例如为 200KB。
进一步地, 该请求消息中还可以包括请求分配的内存区域的属性, 该属 性例如可以为是否为浮动区域, 例如请求节点组管理模块分配一大小为 200KB的浮动内存区域。
5602、 确定满足请求的内存区域大小的节点组。
具体地, 节点组管理模块根据所述请求消息查找各节点组的当前空闲内 存区域, 例如可以查找节点组的内存属性信息, 找到当前空闲的内存区域大 于等于 200KB的节点组, 该当前空闲的内存区域大于等于 200KB的节点组可 以为距离本地节点路径最近的节点组, 也可以为预先设定的节点组, 还可以 为优选的节点组, 此处不作限定。
5603、 在满足要求的节点组中确定满足请求的内存区域大小的节点。 具体地, 节点管理模块在满足要求的上述节点组中查找节点链表, 根据 节点链表中各节点的当前空闲内存区域大小等属性, 确定当前空闲内存区域 大于等于 200KB的节点。
5604、 在满足要求的节点中确定满足请求的内存区域大小的控制器。 具体地, 控制器管理模块在满足要求的上述节点对应的控制器链表中查 找满足要求的内存控制器, 根据控制器链表中各控制器的当前空闲内存区域 大小, 确定当前空闲内存区域大于等于 200KB的控制器。
5605、 在满足要求的控制器中确定满足请求的内存区域大小的内存条。 具体地, 内存条管理模块在满足要求的上述控制器对应的内存条链表中 查找满足要求的内存条, 根据内存条链表中各内存条的当前空闲内存区域大 小, 确定当前空闲内存区域大于等于 200KB的内存条。
进一步地, 还可以确定当前空闲内存区域之和大于等于 200KB的多个内 存条。
5606、 在满足要求的内存条中确定满足要求的内存管理区, 并将所述内 存管理区管理的内存区域分配给处理器。
具体地, 内存条管理模块在上述满足要求的内存条中确定 200KB的内存 管理区域分配给发送该内存分配请求消息的 CPU, 以存放相应的指令。
在本实施例中, 通过 5个层级的管理模块对内存管理装置的内存区域进 行管理, 各个层级的管理模块管理相应的链表, 系统分配内存时能够通过查 找相应管理模块的链表在满足要求的模块上依次向下一层级查找, 直到找到 满足要求的内存区域以进行分配, 提高了内存分配效率。
进一步地,还可以依据内存管理装置的复杂程度将管理内存管理装置内 存区域的管理模块层级增加一区域管理模块, 用于管理若干个节点组管理模 块,还可以依据内存管理装置的复杂程度缩小管理区的大小或将管理内存管 理装置内存区域的管理模块层级减少
图 7为本发明实施例提供的节点下线方法的方法流程示意图, 如图 7所 示, 本实施例的内存下线方法包括:
701、 接收节点下线消息。
具体地, 例如需要将某一节点下线, 内存管理装置的节点管理模块可以 接收节点下线消息, 该节点下线消息中可以包括需要下线的节点标识, 该下 线消息中还可以包括节点是否为浮动区域的属性信息, 所述浮动区域为数据 可迁移的内存区域。
702、 判断节点是否已经下线, 若是则执行 403; 若否则执行 704。
具体地, 节点管理模块通过查找该节点的属性信息确定该节点是否已经 下线, 若该节点已经下线则执行下述 703 ; 若该节点尚未下线则执行 704。
703、 下线成功。
704、 扫描节点的内存控制器链表。
具体地, 节点管理模块查找该节点的内存控制链表, 根据内存控制器链 表中各个内存控制器的属性信息逐个确定内存控制器是否已经下线。
705、 确定内存控制器是否已经下线, 若是则执行 704; 若否则执行 706。 706、 隔离待下线内存控制器对应的内存区域。
具体地, 内存管理装置的内存控制器管理模块可以将未下线的内存控制 器即待下线内存控制器的内存空间进行隔离, 禁止对该控制器的内存区域进 行内存分配或数据访问等操作。
707、 判断待下线内存控制器的内存区域是否为非浮动区域, 若是则执行 711 ; 若否则执行 708。
708、 将待下线内存控制器下线。
若待下线内存控制器的内存区域为浮动区域, 则直接将该内存控制器进 行下线处理, 下线处理例如可以为将该待下线内存控制器断电。
709、待下线内存控制器是否下线成功,若是则执行 701 ;若否则执行 710。 若该待下线内存控制器成功下线, 则返回 701 , 继续检测是否收到新的下 线消息。
710、 下线失败。
待下线内存控制器
711、 为待下线内存控制器选取合适的空闲内存区域, 若选取成功则执行 712, 若未选取成功则执行 710。
若待下线内存控制器的内存区域为非浮动区域, 则需要在对该待下线内 存控制器下线之前进行数据搬移。
具体地, 可以向节点管理模块发送内存分配请求消息, 请求节点管理模 块分配一块内存区域大于等于该下线控制器内存区域的内存控制器, 节点管 理模块依据该内存分配请求消息进行内存分配, 该内存下线方法该可以遵照 上述内存分配方法实施例提供的任一内存分配方法确定一内存区域大于等于 该下线控制器内存区域的空闲的第一内存控制器。
712、 将待下线内存控制器中的数据信息迁移到空闲内存区域。
具体地,可以由内存管理装置的控制器管理模块通知 BIOS执行内存迁移 操作, 将该待下线控制器的内存区域上的数据迁移到所述第一内存区域。
713、 判断迁移是否成功, 若成功则执行 414 ; 若不成功则执行 41 0。
714、 记录待下线内存控制器的迁移信息。
具体地, 控制器管理模块可以记录该待下线内存控制器的迁移信息, 包 括该下线控制器与第一内存区域的对应关系, 以便于该下线控制器再次上线 时还可以依据该迁移记录信息将数据从第一内存区域搬回到该下线控制器, 提高对该下线控制器的访问效率, 控制器管理模块可以将该迁移信息记录存 储在系统的其它可用的控制器中。
715、 解除对待下线内存控制器的内存区域的隔离。
完成对该待下线内存控制器的数据迁移之后, 内存控制器管理模块解除 对待下线内存控制器的内存区域的隔离。
进一步地, 节点管理模块还可以接收系统发送的控制器或内存条上 线消息, 节点管理模块依据该控制器或内存条上线消息及迁移信息记录将 数据迁回到上线的控制器或内存条。
图 8为本发明实施例提供的节点上线方法的方法流程示意图, 如图 8 所示, 本实施例的内存上线方法包括:
801、 接收节点上线消息。
具体地, 例如 NUMA系统需要更多的内存空间以满足需要, 此时, 将某一节点上线, 内存管理装置的节点管理模块接收节点的上线消息, 该 节点上线消息中可以包括该上线节点的标识, 还可以包括该上线节点是否 为浮动区域的属性信息。
802、 判断节点是否已经上线, 若是则执行 803 ; 若否则执行 804。 具体地, 节点管理模块通过查找该节点的属性信息确定该节点是否已 经上线,若该节点已经上线则执行下述 503 ;若该节点尚未上线则执行 504。
803、 上线成功。
804、 扫描节点的内存控制器链表。 节点管理模块查找该节点的内存控制链表, 根据内存控制器链表中各 个内存控制器的属性信息逐个确定内存控制器是否已经上线。
805、 确定内存控制器是否已经上线, 若是则执行 804; 若否则执行
806。
若已经上线, 则继续查找直到找到未上线的内存控制器, 并执行 806。
806、 获取待上线内存控制器的迁移记录。
具体地, 内存管理装置的内存控制器模块可以根据该上线节点的节点 标识获取该节点下线之前保留的迁移记录。
807、 确定是否可以迁回, 若不可以迁回则执行 808; 若可以迁回则执 行 811。
若该迁移记录完整, 且该待上线内存控制器的原始数据可以被迁回, 则执行 811 ; 若该迁移记录不完整或该待上线内存控制器的原始数据已经 受到损坏以不能被迁回, 则执行 808。
808、 内存控制器上线。
将该待上线的内存控制器上线。
809、 内存控制器是否上线成功, 若上线成功则执行 801 ; 若上线不成 功则执行 810。
810、 上线失败。
811、 隔离待上线内存控制器的内存区域。
具体地, 内存管理装置的内存控制器管理模块可以将待上线内存控制 器的内存空间进行隔离, 禁止对该控制器的内存区域进行内存分配或数据 访问等操作。
812、 将数据迁回待上线内存控制器。
依据迁移记录, 通过 BIOS将该待上线内存控制器的原始数据迁回到 待上线内存控制器。
813、 判断迁移是否成功, 若成功则执行 814; 若不成功则执行 810。
814、 解除对待上线内存控制器的内存区域的隔离。
可见, 本发明实施例通过增加层次的内存管理方式, 使得在海量节点 和海量内存系统的内存分配发生不足时, 能够很快寻找到适合要求的内存 管理区而无需遍历整个管理区链表, 提升了内存分配效率。 图 9a为本发 明实施例提供的内存管理装置的逻辑结构示意图, 如图 9a所示, 本实施 例的内存管理装置 100包括:
第一接收模块 101 , 用于接收处理器发送的内存分配请求消息, 所述 内存分配请求消息中包含内存需求信息, 并将所述内存分配请求消息发送 给节点管理模块 102;
节点管理模块 102 , 用于接收第一接收模块 101发送的所述内存分配 请求消息, 根据所述内存分配请求消息中的内存需求信息和所述处理器的 本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所 述内存需求信息;
内存控制器管理模块 103 , 用于若所述处理器的本地节点对应的内存 单元满足所述内存需求信息, 则根据所述内存需求信息以及所述本地节点 对应的第一管理信息确定本地节点中满足所述内存需求信息的内存控制 器, 所述第一管理信息包括本地节点中的内存控制器的标识及内存控制器 的内存属性信息, 将所述满足所述内存需求信息的内存控制器的标识发送 给内存管理区管理模块;
内存管理区管理模块 104 , 用于接收内存控制器管理模块 103发送的 所述满足所述内存需求信息的内存控制器的标识, 根据所述内存控制器的 标识确定与所述内存控制器对应的至少一个第二管理信息, 根据所述内存 需求信息与所述至少一个第二管理信息确定所述内存控制器中满足所述 内存需求信息的内存管理区, 所述第二管理信息包括所述内存控制器对应 的内存单元的标识以及内存单元的属性信息, 将所述满足所述内存需求信 息的内存管理区的标识发送给内存分配模块 105 ;
内存分配模块 105 , 用于接收内存管理区管理模块 104发送的所述满 足所述内存需求信息的内存管理区的标识, 根据所述内存管理区的标识将 所述内存管理区对应的内存空间分配给所述处理器。
在一种实现方式下, 内存管理区管理模块 104具体用于: 根据满足所 述内存需求信息的内存控制器的标识确定与所述内存控制器对应的第一 第二管理信息, 根据所述内存需求信息与所述第一第二管理信息确定所述 内存控制器中满足所述内存需求信息的内存管理区, 所述第一第二管理信 息包括所述内存控制器对应的内存管理区的标识及内存管理区的内存属 性信息。
在另一种实现方式下, 内存管理区管理模块 104具体包括: 内存条管理单元, 用于根据满足所述内存需求信息的内存控制器的标 识确定与所述内存控制器对应的第一第二管理信息, 根据所述内存需求信 息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信 息的内存条, 所述第一第二管理信息包括所述内存控制器对应的内存条的 标识及内存条的内存属性信息;
内存管理区管理单元, 用于根据满足所述内存需求信息的内存条的标 识确定与所述内存条对应的第二第二管理信息, 根据所述内存需求信息与 所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存 管理区, 所述第二第二管理信息包括所述内存条对应的内存管理区的标识 及内存管理区的内存属性信息。
进一步的, 如图 9b所示, 本发明实施例提供的内存管理装置 200还 包括:
节点组管理模块 201用于若所述处理器的本地节点对应的内存单元不 满足所述内存需求信息, 则根据所述内存需求信息与第五管理信息确定满 足所述内存需求信息的节点组, 所述第五管理信息包括节点组的标识及节 点组的内存属性信息;
节点管理模块 202还用于根据满足所述内存需求信息的节点组的标识 确定与其对应的第六管理信息, 根据所述内存需求信息与所述第六管理信 息确定所述节点组中满足所述内存需求信息的节点, 所述第六管理信息包 括所述节点组中的节点的标识以及节点的内存属性信息。
进一步的, 如图 9c所示, 本发明实施例提供的内存管理装置 300还 包括:
第二接收模块 301 , 用于接收处理器发送的内存控制器下线消息, 所 述内存控制器下线消息中包括待下线的内存控制器的标识, 将所述内存控 制器下线消息发送给内存控制器管理模块。
内存控制器管理模块 103还用于, 接收所述第二接收模块 301发送的 所述内存控制器下线消息, 根据所述待下线的内存控制器的标识获取所述 待下线的内存控制器对应的内存区域的类型; 若所述内存区域的类型为非 浮动区域, 则将所述待下线的内存控制器对应的内存区域中的数据信息迁 移到空闲内存区域中, 并记录所述待下线的内存控制器的标识及其对应的 内存迁移信息; 对所述待下线的内存控制器进行下线处理。
进一步的, 在所述将所述待下线的内存控制器对应的内存区域中的数 据信息迁移到空闲内存区域之前, 内存控制器管理模块 103还用于对所述 待下线的内存控制器对应的内存区域进行隔离处理。 在所述对所述待下线 的内存控制器进行下线处理之前, 内存控制器管理模块 103还用于对所述 待下线的内存控制器对应的内存区域进行解除隔离处理。
进一步的, 如图 9d所示, 本发明实施例提供的内存管理装置 400还 包括:
第三接收模块 401 , 用于接收处理器发送的内存控制器上线消息, 所 述内存控制器上线消息中包括待上线的内存控制器的标识, 将所述内存控 制器下线消息发送给内存控制器管理模块;
内存控制器管理模块 103还用于, 接收所述第三接收模块发送的所述 内存控制器下线消息, 根据所述待上线的内存控制器的标识获取所待上线 的内存控制器的内存迁移信息; 根据所述待上线的内存控制器的内存迁移 信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述 待上线的内存控制器对应的内存区域中; 对所述待上线的内存控制器进行 上线处理。
进一步的, 在所述根据所述待上线的内存控制器的内存迁移信息将所 述待上线的内存控制器对应的内存区域的数据信息回迁到所述待上线的 内存控制器对应的内存区域中之前, 内存控制器管理模块 103还用于对所 述待上线的内存控制器对应的内存区域进行隔离处理。 在所述对所述待上 线的内存控制器进行上线处理之前, 内存控制器管理模块 103还用于对所 述待上线的内存控制器对应的内存区域进行解除隔离处理。
本发明实施例提供的各种内存管理装置的具体实现可以参考前述方 法实施例, 在此不再赘述。
需要说明的是, 图 9所示的几种实施例中的模块划分仅为举例说明, 其中涉及的功能模块可以合并也可以进一步细分,例如第一接收模块 101、 第二接收模块 301和第三接收模块 401可以合并为一个接收不同信息的功 能模块。 本领域技术人员根据本发明实施例公开的功能模块划分容易想到 其它的功能模块划分方式, 因此对模块的划分本发明实施例不作限定。
如图 10所示, 为本发明实施例提供的另一内存管理装置的逻辑结构 示意图, 该内存管理装置 500可以实现为一计算机系统。 接收器 501和发 送器 502用于与除内存管理装置之外的其它装置或系统进行通信。 存储器 504用于存储数据, 具体包括应用程序数据、 处理器执行的结果数据或处 理器执行需要的数据。 处理器 503用于执行本发明实施例提供的内存分配 方法、 内存上下线方法等内存管理方法。
在一种实现方式下, 存储器 504用于存储实现本发明实施例提供的任 意一种内存管理方法的应用程序; 处理器 503用于读取存储器 504中的应 用程序, 并执行。
以一种内存分配方法为例: 接收器 501用于接收某一节点 (例如 NUMA系统中的某一服务器)的处理器发送的内存分配请求消息, 所述内 存分配请求消息中包含内存需求信息;
在一种实现方实现方式下, 处理器 503根据所述内存需求信息和所述 处理器的本地节点的内存属性信息判断所述本地节点对应的内存单元是 否满足所述内存需求信息; 若所述处理器的本地节点对应的内存单元满足 所述内存需求信息, 则根据所述内存需求信息以及所述本地节点对应的第 一管理信息确定本地节点中满足所述内存需求信息的内存控制器, 所述第 一管理信息包括本地节点中的内存控制器的标识及内存控制器的内存属 性信息; 根据满足所述内存需求信息的内存控制器的标识确定与所述内存 控制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一第二 管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区, 所 述第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内 存管理区的内存属性信息; 根据满足所述内存需求信息的内存管理区的标 识将所述内存管理区对应的内存空间分配给所述处理器。
在另一种实现方式下, 处理器 503根据满足所述内存需求信息的内存 控制器的标识确定与所述内存控制器对应的第一第二管理信息, 根据所述 内存需求信息与所述第一第二管理信息确定所述内存控制器中满足所述 内存需求信息的内存条, 所述第一第二管理信息包括所述内存控制器对应 的内存条的标识及内存条的内存属性信息; 根据满足所述内存需求信息的 内存条的标识确定与所述内存条对应的第二第二管理信息, 根据所述内存 需求信息与所述第二第二管理信息确定所述内存条中满足所述内存需求 信息的内存管理区, 所述第二第二管理信息包括所述内存条对应的内存管 理区的标识及内存管理区的内存属性信息。
进一步的, 处理器还用于若所述处理器的本地节点对应的内存单元不 满足所述内存需求信息, 则根据所述内存需求信息与第三管理信息确定满 足所述内存需求信息的节点组, 所述第三管理信息包括节点组的标识及节 点组的内存属性信息; 根据满足所述内存需求信息的节点组的标识确定与 其对应的第四管理信息, 根据所述内存需求信息与所述第四管理信息确定 所述节点组中满足所述内存需求信息的节点, 所述第四管理信息包括所述 节点组中的节点的标识以及节点的内存属性信息。
发送器 502用于向除内存控制器或内存控制器所在的节点之外的其它 节点发送内存分配请求消息。 具体的, 当通过处理器确定满足内存需求的 节点非内存控制器所在的节点, 那么通过内存控制器的发送器向该满足内 存需求的节点发送内存分配请求消息, 之后确定内存管理区的过程如前述 实施例所述, 在此不在赘述。
另外, 本发明实施例提供的内存管理装置还可以用来执行前述实施例 所提供的任一内存上线方法或任一内存下线方法。
以其中一种内存上线方法为例: 接收器 501用于接收某一节点的处理 器发送的内存控制器下线消息, 所述内存控制器下线消息中包括待下线的 内存控制器的标识。 处理器 503根据所述待下线的内存控制器的标识获取 所述待下线的内存控制器对应的内存区域的类型; 若所述内存区域的类型 为非浮动区域, 则将所述待下线的内存控制器对应的内存区域中的数据信 息迁移到空闲内存区域中, 并记录所述待下线的内存控制器的标识及其对 应的内存迁移信息; 对所述待下线的内存控制器进行下线处理。
以其中一种内存下线方法为例: 接收器 501用于接收某一节点的处理 器发送的内存控制器上线消息, 所述内存控制器上线消息中包括待上线的 内存控制器的标识。 处理器 503根据所述待上线的内存控制器的标识获取 所待上线的内存控制器的内存迁移信息; 根据所述待上线的内存控制器的 内存迁移信息将所述待上线的内存控制器对应的内存区域的数据信息回 迁到所述待上线的内存控制器对应的内存区域中; 对所述待上线的内存控 制器进行上线处理。
存储于存储器 504中的应用程序可以划分为前述装置实施例所述的功 能模块, 也可以不作模块划分或采取其它的模块划分方式, 本发明实施例 对此不作限定。
需说明的是, 图 10提供的计算机系统所有模块均通过处理器连接, 而在本发明的其它一些实施例中, 所有模块, 包括处理器, 可以通过总线 连接, 该总线可以是一条或多条通信线路。
本发明实施例提出的内存管理装置中的内存多层次管理方式, 结合各 层次的内存分配和迁移等管理技术, 实现了内存镜像、 内存保护、 内存快 速恢复等内存 RAS技术的有效应用。
图 11为本发明实施例提供的 NUMA系统的逻辑结构示意图,如图 11 所示, NUMA系统 600包括至少一个节点 61和内存管理装置 62, 节点 61 包括至少一个内存控制器 611和至少一个处理器 612以及总线 613 , 内存 控制器 611与处理器 612具有通信连接。 该总线 613可以是 IS A ( Industry Standard Architecture, 工业标准体系结构) 总线、 PCI ( Peripheral
Component, 夕卜部设备互连) 总线或 EISA ( Extended Industry Standard Architecture , 扩展工业标准体系结构)总线等。 所述总线可以是一条或多 条物理线路, 当是多条物理线路时可以分为地址总线、 数据总线、 控制总 线等。 在其它实施例中, 处理器与内存控制器也可以不通过总线而直接连 接。
本发明实施例提供的 NUMA系统 600中内存管理装置 62作为一个独 立的计算机系统存在, 内存管理装置 62通过节点 61中的通信接口 614与 NUMA系统的多个节点通信。这里的 "节点,,不一定是物理上的一台主机, 可能是物理上的多台主机。在本发明其它一些实施例中, 内存管理装置 62 也可以位于 NUMA系统的其中一个节点上, 通过该节点的通信接口与其 它节点通信。
具体地, 一个节点 61中包括至少一个内存控制器 611 , NUMA系统 600中的任一处理器 612可以访问任一内存控制器 611 , 相同处理节点中 的处理器 612通过总线 613共享本地节点的内存控制器 611 , 不同节点之 间可以通过内存管理装置 62互相访问内存控制器 611。
内存管理装置 62可以为上述内存管理装置实施例中所述的任一内存 管理装置, 用于接收所述处理器发送的内存分配请求消息, 所述内存分 配请求消息中包含内存需求信息; 根据所述内存需求信息和所述处理器的 本地节点的内存属性信息判断所述本地节点对应的内存单元是否满足所 述内存需求信息; 若所述处理器的本地节点对应的内存单元满足所述内存 需求信息, 则根据所述内存需求信息以及所述本地节点对应的第一管理信 息确定本地节点中满足所述内存需求信息的内存控制器, 所述第一管理信 息包括本地节点中的内存控制器的标识及内存控制器的内存属性信息; 根 据满足所述内存需求信息的内存控制器的标识确定与所述内存控制器对 应的至少一个第二管理信息, 根据所述内存需求信息与所述至少一个第二 管理信息确定所述内存控制器中满足所述内存需求信息的内存管理区, 所 述第二管理信息包括所述内存控制器对应的内存单元的标识及内存单元 的内存属性信息; 根据满足所述内存需求信息的内存管理区的标识将所述 内存管理区对应的内存空间分配给所述处理器。
其它具体实现可以参考本发明前述方法或装置实施例所述, 在此不再 赘述。
可见, 本实施例提供的内存管理方法、 内存管理装置以及 NUMA系 统, 通过接收处理器发送的内存分配请求消息, 根据内存分配请求消息中 的内存需求信息确定本地节点中是否存在满足所述内存需求信息的内存 控制器, 在满足所述内存需求信息的本地节点中确定满足所述内存需求信 息的内存控制器, 在满足所述内存需求信息的内存控制器中确定满足所述 内存需求信息的内存管理区, 将满足所述内存需求信息的内存管理区分配 给发送所述内存分配请求消息的处理器, 不需要在不满足要求的节点中确 定内存控制器及内存管理区, 能够快速找到满足要求的存储区域, 提高了 内存分配效率; 进一步的, 本发明实施例通过增加节点组管理层次和内存 条管理层次, 进一步细化了存储区域的管理, 提供了内存分配效率。
进一步的, 本发明实施例提出的内存管理装置通过增加内存控制器管 理模块, 结合内存迁移技术, 解决了任意内存热插拔的技术问题, 同时对 系统性能影响很小。 在内存热插后, 自动识别内存迁移记录, 选择将热拔 时迁移的内存回迁到本地, 减少远端访问延迟。
进一步的, 本发明实施例提出的内存管理装置, 通过内存的多层次管 理, 结合各层次的内存分配释放管理技术, 实现了内存镜像、 内存保护、 内存快速恢复等内存 RAS技术的有效应用。
需说明的是, 以上所描述的装置实施例仅仅是示意性的, 其中所述作 示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也 可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全 部模块来实现本实施例方案的目的。 另外, 本发明提供的装置实施例附图 中, 模块之间的连接关系表示它们之间具有通信连接, 具体可以实现为一 条或多条通信总线或信号线。 本领域普通技术人员在不付出创造性劳动的 情况下, 即可以理解并实施。
本说明书中的各个实施例均采用递进的方式描述, 各个实施例之间相 同相似的部分互相参见即可, 每个实施例重点说明的都是与其他实施例的 不同之处。 尤其, 对于装置和系统实施例而言, 由于其基本相似于方法实 施例, 所以描述得比较筒单, 相关之处参见方法实施例的部分说明即可。
通过以上的实施方式的描述, 所属领域的技术人员可以清楚地了解到 本发明可借助软件加必需的通用硬件的方式来实现, 当然也可以通过专用 硬件包括专用集成电路、 专用 CPU、 专用存储器、 专用元器件等来实现。 一般情况下, 凡由计算机程序完成的功能都可以很容易地用相应的硬件来 实现, 而且, 用来实现同一功能的具体硬件结构也可以是多种多样的, 例 如模拟电路、 数字电路或专用电路等。 但是, 对本发明而言更多情况下软 件程序实现是更佳的实施方式。 基于这样的理解, 本发明的技术方案本质 上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该 计算机软件产品存储在可读取的存储介质中, 如计算机的软盘, U盘、 移 动硬盘、只读存储器( ROM , Read-Only Memory )、随机存取存储器( RAM, Random Access Memory ) 、 磁碟或者光盘等, 包括若干指令用以使得一台 计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明 各个实施例所述的方法。 最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非 对其限制; 尽管参照前述各实施例对本发明进行了详细的说明, 本领域的 普通技术人员应当理解: 其依然可以对前述各实施例所记载的技术方案进 行修改, 或者对其中部分或者全部技术特征进行等同替换; 而这些修改或 者替换, 并不使相应技术方案的本质脱离本发明各实施例技术方案的范 围。

Claims

权 利 要 求 书
1、 一种内存管理方法, 其特征在于, 所述方法包括:
接收处理器发送的内存分配请求消息, 所述内存分配请求消息中包含 内存需求信息;
根据所述内存需求信息和所述处理器的本地节点的内存属性信息判 断所述本地节点对应的内存单元是否满足所述内存需求信息;
若所述处理器的本地节点对应的内存单元满足所述内存需求信息, 则 根据所述内存需求信息以及所述本地节点对应的第一管理信息确定本地 节点中满足所述内存需求信息的内存控制器, 所述第一管理信息包括本地 节点中的内存控制器的标识及内存控制器的内存属性信息;
根据满足所述内存需求信息的内存控制器的标识确定与所述内存控 制器对应的至少一个第二管理信息, 根据所述内存需求信息与所述至少一 个第二管理信息确定所述内存控制器中满足所述内存需求信息的内存管 理区, 所述第二管理信息包括所述内存控制器对应的内存单元的标识以及 内存单元的属性信息;
根据满足所述内存需求信息的内存管理区的标识将所述内存管理区 对应的内存空间分配给所述处理器。
2、 根据权利要求 1所述的方法, 其特征在于, 所述根据满足所述内 存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个 第二管理信息, 根据所述内存需求信息与所述至少一个第二管理信息确定 所述内存控制器中满足所述内存需求信息的内存管理区, 包括:
根据满足所述内存需求信息的内存控制器的标识确定与所述内存控 制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一第二管 理信息确定所述内存控制器中满足所述内存需求信息的内存管理区, 所述 第一第二管理信息包括所述内存控制器对应的内存管理区的标识及内存 管理区的内存属性信息。
3、 根据权利要求 1所述的方法, 其特征在于, 所述根据满足所述内 存需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个 第二管理信息, 根据所述内存需求信息与所述至少一个第二管理信息确定 所述内存控制器中满足所述内存需求信息的内存管理区, 包括: 根据满足所述内存需求信息的内存控制器的标识确定与所述内存控 制器对应的第一第二管理信息, 根据所述内存需求信息与所述第一第二管 理信息确定所述内存控制器中满足所述内存需求信息的内存条, 所述第一 第二管理信息包括所述内存控制器对应的内存条的标识及内存条的内存 属性信息;
根据满足所述内存需求信息的内存条的标识确定与所述内存条对应 的第二第二管理信息, 根据所述内存需求信息与所述第二第二管理信息确 定所述内存条中满足所述内存需求信息的内存管理区, 所述第二第二管理 信息包括所述内存条对应的内存管理区的标识及内存管理区的内存属性 信息。
4、 根据权利要求 1或 2或 3所述的方法, 其特征在于, 所述方法还 包括:
若所述处理器的本地节点对应的内存单元不满足所述内存需求信息, 则根据所述内存需求信息与第三管理信息确定满足所述内存需求信息的 节点组, 所述第三管理信息包括节点组的标识及节点组的内存属性信息; 根据满足所述内存需求信息的节点组的标识确定与其对应的第四管 理信息, 根据所述内存需求信息与所述第四管理信息确定所述节点组中满 足所述内存需求信息的节点, 所述第四管理信息包括所述节点组中的节点 的标识以及节点的内存属性信息。
5、 根据权利要求 1~4任一项所述的方法, 其特征在于,
所述内存需求信息包括需求的内存区域大小, 所述内存属性信息包 括: 剩余的内存区域大小。
6、 根据权利要求 5所述的方法, 其特征在于, 所述内存需求信息还 包括需求的内存区域类型, 所述内存属性信息还包括: 剩余的内存区域类 型。
7、 根据权利要求 6所述的方法, 其特征在于, 所述内存区域类型包 括浮动区域和非浮动区域。
8、 根据权利要求 1-4任一项所述的方法, 其特征在于, 所述方法还包 括:
接收处理器发送的内存控制器下线消息, 所述内存控制器下线消息中 包括待下线的内存控制器的标识;
根据所述待下线的内存控制器的标识获取所述待下线的内存控制器 对应的内存区域的类型;
若所述内存区域的类型为非浮动区域, 则将所述待下线的内存控制器 对应的内存区域中的数据信息迁移到空闲内存区域中, 并记录所述待下线 的内存控制器的标识及其对应的内存迁移信息;
对所述待下线的内存控制器进行下线处理。
9、 根据权利要求 8所述的方法, 其特征在于, 在所述将所述待下线 的内存控制器对应的内存区域中的数据信息迁移到空闲内存区域之前, 所 述方法还包括:
对所述待下线的内存控制器对应的内存区域进行隔离处理; 在所述对所述待下线的内存控制器进行下线处理之前, 所述方法还包 括:
对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
10、 根据权利要求 8或 9所述的方法, 其特征在于, 所述空闲内存区 域的大小大于或等于所述待下线的内存控制器对应的内存区域的大小, 且 所述空闲内存区域对应的内存控制器不是所述待下线的内存控制器。
11、 根据权利要求 8~10任一项所述的方法, 其特征在于, 所述方法 还包括:
接收处理器发送的内存控制器上线消息, 所述内存控制器上线消息中 包括待上线的内存控制器的标识;
根据所述待上线的内存控制器的标识获取所待上线的内存控制器的 内存迁移信息;
根据所述待上线的内存控制器的内存迁移信息将所述待上线的内存 控制器对应的内存区域的数据信息回迁到所述待上线的内存控制器对应 的内存区域中;
对所述待上线的内存控制器进行上线处理。
12、 根据权利要求 11所述的方法, 其特征在于,
在所述根据所述待上线的内存控制器的内存迁移信息将所述待上线 的内存控制器对应的内存区域的数据信息回迁到所述待上线的内存控制 器对应的内存区域中之前, 所述方法还包括:
对所述待上线的内存控制器对应的内存区域进行隔离处理;
在所述对所述待上线的内存控制器进行上线处理之前, 所述方法还包 括:
对所述待上线的内存控制器对应的内存区域进行解除隔离处理。
13、根据权利要求 1-12任一项所述的方法, 其特征在于, 所述管理信 息为链表或数组。
14、 一种内存管理装置, 其特征在于, 包括:
第一接收模块, 用于接收处理器发送的内存分配请求消息, 所述内存 分配请求消息中包含内存需求信息, 并将所述内存分配请求消息发送给节 点管理模块;
节点管理模块, 用于接收所述第一接收模块发送的所述内存分配请求 消息, 根据所述内存分配请求消息中的内存需求信息和所述处理器的本地 节点的内存属性信息判断所述本地节点对应的内存单元是否满足所述内 存需求信息;
内存控制器管理模块, 用于若所述处理器的本地节点对应的内存单元 满足所述内存需求信息, 则根据所述内存需求信息以及所述本地节点对应 的第一管理信息确定本地节点中满足所述内存需求信息的内存控制器, 所 述第一管理信息包括本地节点中的内存控制器的标识及内存控制器的内 存属性信息, 将所述满足所述内存需求信息的内存控制器的标识发送给内 存管理区管理模块;
内存管理区管理模块, 用于接收所述内存控制器管理模块发送的所述 满足所述内存需求信息的内存控制器的标识, 根据所述内存控制器的标识 确定与所述内存控制器对应的至少一个第二管理信息, 根据所述内存需求 信息与所述至少一个第二管理信息确定所述内存控制器中满足所述内存 需求信息的内存管理区, 所述第二管理信息包括所述内存控制器对应的内 存单元的标识以及内存单元的属性信息, 将所述满足所述内存需求信息的 内存管理区的标识发送给内存分配模块;
内存分配模块, 用于接收所述内存管理区管理模块发送的所述满足所 述内存需求信息的内存管理区的标识, 根据所述内存管理区的标识将所述 内存管理区对应的内存空间分配给所述处理器。
15、 根据权利要求 14所述的装置, 其特征在于, 所述内存管理区管 理模块具体用于: 根据满足所述内存需求信息的内存控制器的标识确定与 所述内存控制器对应的第一第二管理信息, 根据所述内存需求信息与所述 第一第二管理信息确定所述内存控制器中满足所述内存需求信息的内存 管理区, 所述第一第二管理信息包括所述内存控制器对应的内存管理区的 标识及内存管理区的内存属性信息。
16、 根据权利要求 14所述的装置, 其特征在于, 所述内存管理区管 理模块具体包括:
内存条管理单元, 用于根据满足所述内存需求信息的内存控制器的标 识确定与所述内存控制器对应的第一第二管理信息, 根据所述内存需求信 息与所述第一第二管理信息确定所述内存控制器中满足所述内存需求信 息的内存条, 所述第一第二管理信息包括所述内存控制器对应的内存条的 标识及内存条的内存属性信息;
内存管理区管理单元, 用于根据满足所述内存需求信息的内存条的标 识确定与所述内存条对应的第二第二管理信息, 根据所述内存需求信息与 所述第二第二管理信息确定所述内存条中满足所述内存需求信息的内存 管理区, 所述第二第二管理信息包括所述内存条对应的内存管理区的标识 及内存管理区的内存属性信息。
17、 根据权利要求 14-16任一项所述的装置, 其特征在于, 所述装置 还包括:
节点组管理模块, 用于若所述处理器的本地节点对应的内存单元不满 足所述内存需求信息, 则根据所述内存需求信息与第五管理信息确定满足 所述内存需求信息的节点组, 所述第五管理信息包括节点组的标识及节点 组的内存属性信息;
所述节点管理模块, 还用于根据满足所述内存需求信息的节点组的标 识确定与其对应的第六管理信息, 根据所述内存需求信息与所述第六管理 信息确定所述节点组中满足所述内存需求信息的节点, 所述第六管理信息 包括所述节点组中的节点的标识以及节点的内存属性信息。
18、 根据权利要求 14-17任一项所述的装置, 其特征在于, 所述装置 还包括:
第二接收模块, 用于接收处理器发送的内存控制器下线消息, 所述内 存控制器下线消息中包括待下线的内存控制器的标识, 将所述内存控制器 下线消息发送给内存控制器管理模块;
所述内存控制器管理模块还用于, 接收所述第二接收模块发送的所述 内存控制器下线消息, 根据所述待下线的内存控制器的标识获取所述待下 线的内存控制器对应的内存区域的类型; 若所述内存区域的类型为非浮动 区域, 则将所述待下线的内存控制器对应的内存区域中的数据信息迁移到 空闲内存区域中, 并记录所述待下线的内存控制器的标识及其对应的内存 迁移信息; 对所述待下线的内存控制器进行下线处理。
19、 根据权利要求 18所述的装置, 其特征在于, 所述内存控制器管 理模块还用于, 对所述待下线的内存控制器对应的内存区域进行隔离处 理; 以及,对所述待下线的内存控制器对应的内存区域进行解除隔离处理。
20、 根据权利要求 18或 19所述的装置, 其特征在于, 所述装置还包 括:
第三接收模块, 用于接收处理器发送的内存控制器上线消息, 所述内 存控制器上线消息中包括待上线的内存控制器的标识, 将所述内存控制器 下线消息发送给内存控制器管理模块;
所述内存控制器管理模块还用于, 接收所述第三接收模块发送的所述 内存控制器下线消息, 根据所述待上线的内存控制器的标识获取所待上线 的内存控制器的内存迁移信息; 根据所述待上线的内存控制器的内存迁移 信息将所述待上线的内存控制器对应的内存区域的数据信息回迁到所述 待上线的内存控制器对应的内存区域中; 对所述待上线的内存控制器进行 上线处理。
21、 根据权利要求 20所述的装置, 其特征在于,
所述内存控制器管理模块还用于, 对所述待上线的内存控制器对应的 内存区域进行隔离处理; 以及, 对所述待上线的内存控制器对应的内存区 域进行解除隔离处理。
22、 一种非一致访问分布共享存储 NUMA系统, 其特征在于, 所述 系统包括内存管理装置和至少一个节点, 所述节点包括至少一个内存控制 器和至少一个处理器, 所述内存控制器与所述处理器具有通信连接; 所述内存管理装置为权利要求 14-21任一项所述的内存管理装置, 用 于接收所述处理器发送的内存分配请求消息, 所述内存分配请求消息中包 含内存需求信息; 根据所述内存需求信息和所述处理器的本地节点的内存 属性信息判断所述本地节点对应的内存单元是否满足所述内存需求信息; 若所述处理器的本地节点对应的内存单元满足所述内存需求信息, 则根据 所述内存需求信息以及所述本地节点对应的第一管理信息确定本地节点 中满足所述内存需求信息的内存控制器, 所述第一管理信息包括本地节点 中的内存控制器的标识及内存控制器的内存属性信息; 根据满足所述内存 需求信息的内存控制器的标识确定与所述内存控制器对应的至少一个第 二管理信息, 根据所述内存需求信息与所述至少一个第二管理信息确定所 述内存控制器中满足所述内存需求信息的内存管理区, 所述第二管理信息 包括所述内存控制器对应的内存单元的标识以及内存单元的属性信息; 根 据满足所述内存需求信息的内存管理区的标识将所述内存管理区对应的 内存空间分配给所述处理器。
PCT/CN2013/079892 2013-02-18 2013-07-23 内存管理方法、内存管理装置及numa系统 WO2014124576A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP13791712.6A EP2784670B1 (en) 2013-02-18 2013-07-23 Memory management method, memory management device and numa system
US14/094,360 US8806169B1 (en) 2013-02-18 2013-12-02 Memory management method, memory management apparatus and NUMA system
US14/282,576 US9026766B2 (en) 2013-02-18 2014-05-20 Memory management method, memory management apparatus and NUMA system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310052291.4 2013-02-18
CN201310052291.4A CN103136110B (zh) 2013-02-18 2013-02-18 内存管理方法、内存管理装置及numa系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/094,360 Continuation US8806169B1 (en) 2013-02-18 2013-12-02 Memory management method, memory management apparatus and NUMA system

Publications (1)

Publication Number Publication Date
WO2014124576A1 true WO2014124576A1 (zh) 2014-08-21

Family

ID=48495960

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/079892 WO2014124576A1 (zh) 2013-02-18 2013-07-23 内存管理方法、内存管理装置及numa系统

Country Status (4)

Country Link
US (2) US8806169B1 (zh)
EP (1) EP2784670B1 (zh)
CN (1) CN103136110B (zh)
WO (1) WO2014124576A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136110B (zh) * 2013-02-18 2016-03-30 华为技术有限公司 内存管理方法、内存管理装置及numa系统
CN103649923B (zh) * 2013-06-29 2015-07-29 华为技术有限公司 一种numa系统内存镜像配置方法、解除方法、系统和主节点
CN103425592B (zh) * 2013-08-05 2016-08-10 大唐移动通信设备有限公司 一种多进程系统中的内存管理方法及装置
CN103607428B (zh) * 2013-10-30 2017-11-17 华为技术有限公司 一种访问共享内存的方法和装置
CN103729300B (zh) * 2013-12-25 2017-11-28 华为技术有限公司 非易失内存的管理方法和相关装置
CN104268089B (zh) * 2014-09-15 2018-03-09 杭州华为数字技术有限公司 一种信息更新的方法、装置及系统
CN104252419B (zh) * 2014-09-16 2017-09-19 华为技术有限公司 一种内存分配的方法及装置
CN104268101B (zh) * 2014-09-22 2017-12-05 无锡城市云计算中心有限公司 一种存储空间分配方法及装置
CN105701020B (zh) * 2014-11-28 2018-11-30 华为技术有限公司 一种内存访问的方法、相关装置和系统
CN105224246B (zh) * 2015-09-25 2018-11-09 联想(北京)有限公司 一种信息以及内存配置方法和装置
EP3314517A4 (en) * 2016-01-27 2019-02-27 Hewlett-Packard Development Company, L.P. FUNCTIONAL VERIFICATION
CN107015914B (zh) * 2016-01-28 2020-12-22 长城汽车股份有限公司 数据标定方法及系统
CN107783727B (zh) * 2016-08-31 2022-01-14 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN106383666B (zh) * 2016-09-07 2020-05-01 东信和平科技股份有限公司 一种数据存储方法及装置
CN109388490B (zh) 2017-08-07 2020-11-17 华为技术有限公司 一种内存分配方法和服务器
CN108196958B (zh) * 2017-12-29 2020-09-29 北京泽塔云科技股份有限公司 资源调度分配方法、计算机系统及超融合架构系统
CN109032510B (zh) * 2018-06-29 2021-07-09 山石网科通信技术股份有限公司 基于分布式结构的处理数据的方法和装置
CN110968599B (zh) * 2018-09-30 2023-04-07 北京国双科技有限公司 一种基于Impala的查询方法和装置
CN115269198A (zh) * 2022-08-10 2022-11-01 抖音视界有限公司 基于服务器集群的访问请求处理方法及相关设备
CN115729849B (zh) * 2022-11-04 2024-02-20 超聚变数字技术有限公司 内存管理方法及计算设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1347034A (zh) * 2000-09-25 2002-05-01 汤姆森许可贸易公司 数据内存管理系统和方法以及相关多处理器网络
CN101158927A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种内存共享的系统和装置及方法
CN101246466A (zh) * 2007-11-29 2008-08-20 华为技术有限公司 多核系统中共享内存的管理方法和装置
US20090077326A1 (en) * 2007-09-14 2009-03-19 Ricoh Company, Limited Multiprocessor system
CN102439570A (zh) * 2011-10-27 2012-05-02 华为技术有限公司 针对多步长非一致性内存访问numa架构的内存管理方法及装置
CN103136110A (zh) * 2013-02-18 2013-06-05 华为技术有限公司 内存管理方法、内存管理装置及numa系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870256B2 (en) * 2005-03-25 2011-01-11 Hewlett-Packard Development Company, L.P. Remote desktop performance model for assigning resources
WO2007039641A1 (de) 2005-10-06 2007-04-12 Gutehoffnungshütte Radsatz Gmbh Verfahren zur berührungslosen dynamischen erfassung des profils eines festkörpers
US20070180186A1 (en) * 2006-01-27 2007-08-02 Cornwell Michael J Non-volatile memory management
US9185160B2 (en) * 2007-02-12 2015-11-10 Oracle America, Inc. Resource reservation protocol over unreliable packet transport
US7882319B2 (en) * 2007-09-27 2011-02-01 Oracle America Inc. Method and system for memory management
CN101478567B (zh) 2009-01-09 2011-09-21 南京联创科技集团股份有限公司 基于网格划分的内存管理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1347034A (zh) * 2000-09-25 2002-05-01 汤姆森许可贸易公司 数据内存管理系统和方法以及相关多处理器网络
US20090077326A1 (en) * 2007-09-14 2009-03-19 Ricoh Company, Limited Multiprocessor system
CN101158927A (zh) * 2007-10-25 2008-04-09 中国科学院计算技术研究所 一种内存共享的系统和装置及方法
CN101246466A (zh) * 2007-11-29 2008-08-20 华为技术有限公司 多核系统中共享内存的管理方法和装置
CN102439570A (zh) * 2011-10-27 2012-05-02 华为技术有限公司 针对多步长非一致性内存访问numa架构的内存管理方法及装置
CN103136110A (zh) * 2013-02-18 2013-06-05 华为技术有限公司 内存管理方法、内存管理装置及numa系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2784670A4 *

Also Published As

Publication number Publication date
US20140258669A1 (en) 2014-09-11
US20140237209A1 (en) 2014-08-21
US8806169B1 (en) 2014-08-12
EP2784670A4 (en) 2015-04-01
CN103136110A (zh) 2013-06-05
CN103136110B (zh) 2016-03-30
US9026766B2 (en) 2015-05-05
EP2784670A1 (en) 2014-10-01
EP2784670B1 (en) 2019-03-06

Similar Documents

Publication Publication Date Title
WO2014124576A1 (zh) 内存管理方法、内存管理装置及numa系统
US8458413B2 (en) Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment
US9639277B2 (en) Storage system with virtual volume having data arranged astride storage devices, and volume management method
US8473462B1 (en) Change tracking for shared disks
US9652265B1 (en) Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US10747673B2 (en) System and method for facilitating cluster-level cache and memory space
KR102545167B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
JP5718533B1 (ja) ストレージシステムのデータ移行方法
US20070168470A1 (en) Storage apparatus and control method for the same, and computer program product
CN103748545A (zh) 数据存储系统和数据存储控制方法
KR20120086322A (ko) 가상 머신 저장 공간 관리를 위한 방법 및 시스템, 및 물리적 호스트
JP2007140728A (ja) 記憶装置システム及び記憶制御方法
US20110219048A1 (en) Multiple File System and/or Multi-Host Single Instance Store Techniques
JP7467593B2 (ja) リソース割振り方法、記憶デバイス、および記憶システム
KR20120050891A (ko) 스토리지 시스템에서 요청에 대한 응답과 연관된 지연의 감소
CN107329704B (zh) 一种缓存镜像方法及控制器
US20140032601A1 (en) File system sharing
WO2015039569A1 (zh) 副本存储装置及副本存储方法
WO2019000949A1 (zh) 分布式存储系统中元数据存储方法、系统及存储介质
CN107577733B (zh) 一种数据复制的加速方法及系统
JP6584529B2 (ja) ファイルにアクセスするための方法および装置、ならびに記憶システム
WO2023273803A1 (zh) 一种认证方法、装置和存储系统
KR102276912B1 (ko) 스토리지 시스템 및 이의 동작 방법
JP6000391B2 (ja) ストレージシステムのデータ移行方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2013791712

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13791712

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE