Per-Processor Memory Allocators with Local Freed Lists
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In computer systems with multiple processing resources, managing memory locality and synchronization overhead in memory allocation processes is challenging due to the need for concurrent execution across different processing resources, leading to inefficiencies and increased complexity.
Innovation Solution
Implementing a memory allocator for each processor resource with locally and remotely freed lists, where objects are allocated and freed to optimize memory locality and reduce synchronization overhead by prioritizing local allocations and using atomic swaps for remote allocations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If synchronization mechanisms are used to manage memory allocations across multiple processing resources, then memory allocation safety is ensured, but allocator overhead increases significantly
Solution Approach 1:
The system divides memory management into separate memory allocators, each dedicated to a specific processing resource. Each allocator maintains its own freed list that is exclusively accessible by its corresponding processing resource, eliminating the need for synchronization mechanisms while ensuring memory allocation safety across multiple processing resources.
2Productivity
If memory is allocated from remote allocators across processing resources, then memory utilization is improved, but memory locality deteriorates
Solution Approach 1:
Each processing resource is pre-configured with its own dedicated memory allocator and freed list. When memory becomes available, it is allocated to the local allocator in advance, allowing the processing resource to access memory locally without needing to request from remote allocators, thus maintaining both high memory utilization and fast access speeds.
3Adaptability or versatility
If multiple memory allocators are used to support concurrent execution, then concurrency capability is improved, but system complexity increases
Solution Approach 1:
The system implements one memory allocator per processing resource, with each allocator completely independent and maintaining its own freed list. This segmentation allows each processing resource to operate concurrently without interfering with others, providing high concurrency capability while keeping each individual allocator simple and manageable.
Data Source
AI summary
A memory allocator is provided for each processor resource in a process of a computer system. Each memory allocator includes a set of pages, a locally freed list of objects, and a remotely freed list of objects. Each memory allocator requests the pages from an operating system and allocates objects to all execution contexts executing on a corresponding processing resource. Each memory allocator attempts to allocate an object from the locally freed list before allocating an object from the remotely freed list or an allocated page.


