Method, system and computer program product for managing memory in a non-uniform memory access system
First Claim
1. A method for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, the method comprising the steps of:
- creating a policy module associated with an application;
attaching the policy module to a section of the application'"'"'s virtual address space; and
using the policy module for memory management operations that are related to the section of the application'"'"'s virtual address space;
wherein said step of creating a policy module includes the step of specifying a plurality of methods related to the memory management operations;
wherein said step of specifying a plurality of methods includes one or more of the following steps;
selecting a placement policy;
selecting a replication policy;
selecting a migration policy;
selecting a paging policy;
selecting a recovery policy;
selecting a page size; and
selecting a policy flag.
13 Assignments
0 Petitions
Accused Products
Abstract
A memory management and control system that is selectable at the application level by an application programmer is provided. The memory management and control system is based on the use of policy modules. Policy modules are used to specify and control different aspects of memory operations in NUMA computer systems, including how memory is managed for processes running in NUMA computer systems. Preferably, each policy module comprises a plurality of methods that are used to control a variety of memory operations. Such memory operations typically include initial memory placement, memory page size, a migration policy, a replication policy and a paging policy. One method typically contained in policy modules is an initial placement policy. Placement policies may be based on two abstractions of physical memory nodes. These two abstractions are referred to herein as “Memory Locality Domains” (MLDS) and “Memory Locality Domain Sets” (MLDSETs). By specifying MLDs and MLDSETS, rather than physical memory nodes, application programs can be executed on different computer systems regardless of the particular node configuration and physical node topology employed by the system. Further, such application programs can be run on different machines without the need for code modification and/or re-compiling.
-
Citations
18 Claims
-
1. A method for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, the method comprising the steps of:
-
creating a policy module associated with an application;
attaching the policy module to a section of the application'"'"'s virtual address space; and
using the policy module for memory management operations that are related to the section of the application'"'"'s virtual address space;
wherein said step of creating a policy module includes the step of specifying a plurality of methods related to the memory management operations;
wherein said step of specifying a plurality of methods includes one or more of the following steps;
selecting a placement policy;
selecting a replication policy;
selecting a migration policy;
selecting a paging policy;
selecting a recovery policy;
selecting a page size; and
selecting a policy flag.
-
-
2. A system for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, said system comprising:
-
means for creating a policy module associated with the application;
means for attaching said policy module to a section of the application'"'"'s virtual address space; and
means for using said policy module for memory management operations that are related to said section of the application'"'"'s virtual address space;
wherein said means for creating a policy module includes means for specifying a plurality of methods related to said memory management operations;
wherein said means for specifying a plurality of methods includes any combination of;
means for selecting a placement policy;
means for selecting a replication policy;
means for selecting a migration policy;
means for selecting a paging policy;
means for specifying a page size; and
means for specifying a policy flag.
-
-
3. A computer program product comprising a computer useable medium having computer program logic stored therein, said computer program logic for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, wherein said computer program logic comprises:
-
means for enabling the computer to create a policy module associated with the application;
means for enabling the computer to attach said policy module to a section of the application'"'"'s virtual address space; and
means for enabling the computer to use said policy module for memory management operations that are related to said section of the application'"'"'s virtual address space;
wherein said means for enabling the computer to create a policy module includes means for enabling the computer to accept a specification for a plurality of methods related to said memory management operations;
wherein said means for enabling the computer to accept a specification for a plurality of methods includes any combination of;
means for enabling the computer to accept a selection for a placement policy;
means for enabling the computer to accept a selection for a replication policy;
means for enabling the computer to accept a selection for a migration policy;
means for enabling the computer to accept a selection for a recovery policy;
means for enabling the computer to accept a selection for a page size; and
means for enabling the computer to accept a selection for a policy flag. - View Dependent Claims (4, 5, 6, 7)
said means for enabling the computer to accept a selection for a placement policy;
said means for enabling the computer to accept a selection for a replication policy;
said means for enabling the computer to accept a selection for a migration policy; and
said means for enabling the computer to accept a selection for a recovery policy.
-
-
5. The computer program product according to claim 4, wherein said combination of means for enabling the computer to accept a specification for a plurality of methods further includes:
said means for enabling the computer to accept a selection for a page size.
-
6. The computer program product according to claim 4, wherein said combination of means for enabling the computer to accept a specification for a plurality of methods further includes:
said means for enabling the computer to accept a selection for a policy flag.
-
7. The computer program product according to claim 3, wherein said combination of means for enabling the computer to accept a specification for a plurality of methods includes each of the following:
-
said means for enabling the computer to accept a selection for a placement policy;
said means for enabling the computer to accept a selection for a replication policy;
said means for enabling the computer to accept a selection for a migration policy;
said means for enabling the computer to accept a selection for a recovery policy;
said means for enabling the computer to accept a selection for a page size; and
said means for enabling the computer to accept a selection for a policy flag.
-
-
8. A system for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, said system comprising:
-
a policy module (PM) create module that creates a policy module associated with the application; and
a PM attachment module that attaches said policy module to a section of the application'"'"'s virtual address space;
wherein said policy module is used for memory management operations that are related to said section of the application'"'"'s virtual address space;
wherein said PM create module specifies a plurality of methods related to said memory management operations, wherein said PM create module includes any combination of;
a placement policy selector;
a replication policy selector;
a migration policy selector;
a paging policy selector;
a page size specifier; and
a policy flag specifier. - View Dependent Claims (9, 10, 11, 12)
said placement policy selector;
said replication policy selector;
said migration policy selector; and
said paging policy selector.
-
-
10. The system for memory management according to claim 9, wherein said PM create module combination further includes:
said page size specifier.
-
11. The system for memory management according to claim 9, wherein said PM create module combination further includes:
said policy flag specifier.
-
12. The system for memory management according to claim 8, wherein said PM create module combination includes each of the following:
-
said placement policy selector;
said replication policy selector;
said migration policy selector;
said paging policy selector;
said page size specifier; and
said policy flag specifier.
-
-
13. A method for memory management in a distributed shared memory multi-node computer system capable of executing a plurality of applications, each comprising one or more threads and having a virtual address space that is shared among the threads, the method comprising the steps of:
-
creating a policy module associated with an application;
attaching the policy module to a section of the application'"'"'s virtual address space; and
using the policy module for memory management operations that are related to the section of the application'"'"'s virtual address space;
wherein said step of creating a policy module includes the step of specifying a plurality of methods related to the memory management operations;
wherein said step of specifying a plurality of methods includes any combination of the following steps;
selecting a placement policy;
selecting a replication policy;
selecting a migration policy;
selecting a paging policy;
selecting a recovery policy;
selecting a page size; and
selecting a policy flag. - View Dependent Claims (14, 15, 16, 17, 18)
said step of selecting a placement policy;
said step of selecting a replication policy;
said step of selecting a migration policy; and
said step of selecting a paging policy.
-
-
15. The method for memory management according to claim 14, wherein said combination of steps for specifying a plurality of methods further comprises:
said step of selecting a recovery policy.
-
16. The method for memory management according to claim 14, wherein said combination of steps for specifying a plurality of methods further comprises:
said step of selecting a page size.
-
17. The method for memory management according to claim 14, wherein said combination of steps for specifying a plurality of methods further comprises:
said step of selecting a policy flag.
-
18. The method for memory management according to claim 13, wherein said combination of steps for specifying a plurality of methods includes each of the following:
-
said step of selecting a placement policy;
said step of selecting a replication policy;
said step of selecting a migration policy;
said step of selecting a paging policy;
said step of selecting a recovery policy;
said step of selecting a page size; and
said step of selecting a policy flag.
-
Specification