Memory Block Allocation Near Preferred Addresses for NVMe I/O
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing computing systems lack a mechanism for applications to specify a preferred location for storage space allocation, leading to inefficient data retrieval and storage operations due to the input-output size limits of storage devices, particularly in non-volatile memory systems like NVMe SSDs.
Innovation Solution
A block allocator system that uses data structures, such as radix trees, to efficiently allocate memory blocks near a specified address within the input-output size limit of the storage device, optimizing data retrieval by ensuring that data is stored within an optimal range for efficient read operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If memory is allocated without considering preferred address locations, then allocation simplicity is maintained, but data retrieval efficiency deteriorates due to spanning across input-output size limits
Solution Approach 1:
The system performs preliminary actions by pre-calculating input-output size limits and establishing allocation rules that preferentially select memory blocks within these limits. The block allocator is pre-configured with knowledge of storage device characteristics, enabling it to make informed allocation decisions without real-time complex calculations during data operations.
Solution Approach 2:
A block allocator intermediary layer is introduced between the application and the physical storage device. This intermediary manages the complexity of address allocation internally while presenting a simplified interface to applications, thereby improving data retrieval efficiency without requiring applications to directly handle allocation complexity.
2Productivity
If memory blocks are allocated far from the requested address, then allocation flexibility increases, but the number of read operations increases due to spanning across input-output size limits
Solution Approach 1:
The allocation system applies local quality by making allocation decisions localized to the requested address region. When an application requests memory near a specific address, the block allocator prioritizes finding free blocks within a localized range around that address, particularly within input-output size limits, rather than searching the entire address space. This reduces the number of read operations while maintaining sufficient flexibility through the use of free lists and alternative block selection when local allocation is not possible.
3Productivity
If the allocation threshold is set strictly within input-output size limits, then read operation efficiency is improved, but the pool of available memory blocks decreases
Solution Approach 1:
The block allocator implements dynamic allocation strategies that adapt to the current state of free memory blocks. The system dynamically adjusts allocation behavior by maintaining multiple free lists categorized by block size and location characteristics. When allocating memory, the system dynamically selects from available blocks based on current availability, allowing it to meet input-output size limits when possible while still utilizing larger or more distant blocks when necessary, thus balancing read efficiency with available memory quantity.
Data Source
Figure 1A
Figure 1B
Figure 1C
AI summary
A system and methods for memory block allocation. In some embodiments, a method includes: receiving, from an application, a memory allocation request, the memory allocation request including: a number of blocks, and a first address; determining that memory at the first address is allocated; identifying a second address, differing from the first address by less than a first threshold; and allocating the number of blocks of memory at the second address.