Systems and methods for S-list partitioning
First Claim
1. A method of memory allocation for memory that is accessible within an operating system environment of a multicore processor, the method including controlling the allocation of the memory to memory-requesting portions of the multicore processor by:
- obtaining a plurality of partitioned lockless list structures, each of the partitioned lockless list structures including a respective plurality of list elements, each of the respective list elements corresponding to a respective portion of the memory that is currently eligible for allocation, the plurality of partitioned lockless list structures being partitioned by application of an adaptive hash to each of a plurality of key values that correspond to elements of a topology of an architecture of the multicore processor;
upon a request for allocating one or more of the respective portions of the memory to a core processor for use as allocated memory, searching said plurality of partitioned lockless list structures for an available list element that corresponds to an available respective portion of the memory that is currently eligible for allocation for use as allocated memory, the searching performed using an adaptive hash that is keyed to respectively hash to each of the plurality of partitioned lockless list structures;
upon finding said available list element, allocating said available respective portion of the memory to said core processor for use as allocated memory; and
dynamically balancing said available list elements among said plurality of said lockless list structures according to a balancing metric that is configured to optimize the allocation of the memory.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and techniques of the management of the allocation of a plurality of memory elements stored within a plurality of lockless list structures are presented. These lockless list structures (such as Slists) may be made accessible within an operating system environment of a multicore processor—and may be partitioned within the system. Memory elements may also be partitioned among these lockless list structures. When a core processor (or other processing element) makes a request for allocating a memory element to itself, the system and/or method may search among the lockless list structures for an available memory element. When a suitable and/or available memory element is found, the system may allocate the available memory element to requesting core processor. Dynamically balancing of memory elements may occur according to a suitable balancing metric, such as maintain substantial numerical equality of memory elements or avoid over-allocation of resources.
-
Citations
20 Claims
-
1. A method of memory allocation for memory that is accessible within an operating system environment of a multicore processor, the method including controlling the allocation of the memory to memory-requesting portions of the multicore processor by:
-
obtaining a plurality of partitioned lockless list structures, each of the partitioned lockless list structures including a respective plurality of list elements, each of the respective list elements corresponding to a respective portion of the memory that is currently eligible for allocation, the plurality of partitioned lockless list structures being partitioned by application of an adaptive hash to each of a plurality of key values that correspond to elements of a topology of an architecture of the multicore processor; upon a request for allocating one or more of the respective portions of the memory to a core processor for use as allocated memory, searching said plurality of partitioned lockless list structures for an available list element that corresponds to an available respective portion of the memory that is currently eligible for allocation for use as allocated memory, the searching performed using an adaptive hash that is keyed to respectively hash to each of the plurality of partitioned lockless list structures; upon finding said available list element, allocating said available respective portion of the memory to said core processor for use as allocated memory; and dynamically balancing said available list elements among said plurality of said lockless list structures according to a balancing metric that is configured to optimize the allocation of the memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system for controlling memory allocation for memory that is accessible within an operating system environment of a multicore processor by controlling the allocation of the memory to memory-requesting portions of the multicore processor, the system comprising:
-
a first processor that initially partitions an initial lockless list structure into a plurality of partitioned lockless list structures, using an adaptive hash that is keyed according to an architecture of the multicore processor; a second processor that initially partitions a plurality of list elements among said plurality of partitioned lockless list structures, each of the respective list elements corresponding to a respective portion of the memory that is currently eligible for allocation; a third processor that, upon a request for allocating memory to a memory-requesting core processor, searches said plurality of partitioned lockless list structures for an available one of the respective list elements, and upon finding said available one of the respective list elements, allocates, to the memory-requesting core processor, said respective portion of the memory that is currently eligible for allocation that corresponds to the found said available one of the respective list elements; and a fourth processor that dynamically balances said list elements among said plurality of said partitioned lockless list structures according to a balancing metric, said balancing metric applied to distribute the list elements among said partitioned lockless list structures. - View Dependent Claims (13, 14, 15)
-
-
16. A method comprising:
controlling allocation of memory to memory-requesting portions of a multicore processor by; obtaining a plurality of partitioned lockless list structures, each of the partitioned lockless list structures including a respective plurality of list elements, each of the respective list elements corresponding to a respective portion of the memory that is currently eligible for allocation, the plurality of partitioned lockless list structures being partitioned using an adaptive hash that is keyed according to an architecture of the multicore processor; upon a request for allocating one or more of the respective portions of the memory to a core processor for use as allocated memory, searching said plurality of partitioned lockless list structures for an available list element that corresponds to an available respective portion of the memory that is currently eligible for allocation for use as allocated memory, the searching performed using the adaptive hash; upon finding said available list element, allocating said available respective portion of the memory to said core processor for use as allocated memory; and dynamically balancing said available list elements among said plurality of said lockless list structures according to a balancing metric that is configured to optimize the allocation of the memory. - View Dependent Claims (17, 18, 19, 20)
Specification