Memory allocator for a multiprocessor computer system
First Claim
1. In a multiprocessor system having an operating system and having shared memory distributed among a plurality of nodes, a method of dynamically allocating memory on a specified node of the system, the method comprising:
- receiving a request to allocate memory on a specified node;
in response to the request, allocating memory on the specified node; and
indicating an address for the allocated memory.
0 Assignments
0 Petitions
Accused Products
Abstract
Methods for dynamically allocating memory in a multiprocessor computer system such as a non-uniform memory access (NUMA) machine having distributed shared memory. The methods include allocating memory by specified node, memory class, or memory pool in response to requests by the system (kernel memory allocation) or a user (application memory allocation). Through these methods memory is allocated more efficiently in a NUMA machine. For example, allocating memory on a specified node in a NUMA machine, such as the same node on which a process requiring the memory is running, reduces memory access time. Allocating memory from a specified memory class allows device drivers with restricted DMA ranges to operate with dynamically allocated memory. Other benefits of these methods include minimizing expensive remote-memory accesses using a distributed reference count mechanism and lock-free cache access.
70 Citations
26 Claims
-
1. In a multiprocessor system having an operating system and having shared memory distributed among a plurality of nodes, a method of dynamically allocating memory on a specified node of the system, the method comprising:
-
receiving a request to allocate memory on a specified node;
in response to the request, allocating memory on the specified node; and
indicating an address for the allocated memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. In a multiprocessor system with shared memory, a method of dynamically allocating memory among the multiple processors, the method comprising
providing a pool of available memory blocks per processor; -
if a first processor makes a memory allocation request for memory from the first processor'"'"'s pool, allocating the memory for the first processor without acquiring a lock on the pool; and
if a second processor makes a memory allocation request for memory from the first processor'"'"'s pool, allocating the memory for the second processor from the first processor'"'"'s pool after acquiring a lock on the pool. - View Dependent Claims (23)
-
-
24. In a multiprocessor system with shared memory, a data structure in memory for dynamically allocating memory among the multiple processors, comprising:
-
a first field for identifying memory blocks in a first processor'"'"'s memory pool available for allocation; and
a second field for identifying a lock for accessing the memory block identified in the first field;
the available memory blocks being accessible by the first processor without acquiring a lock in the second field and being accessible by a second processor only after acquiring a lock in the second field. - View Dependent Claims (25)
-
-
26-35. -35.
Specification