Pre-Allocated Shared Memory for Parallel Packet Processing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing malloc libraries face inefficiencies due to lack of persistent memory support, enumeration support, inflexible CPU utilization, and synchronous processing, leading to memory inaccuracies, lock contentions, and reduced throughput.
Innovation Solution
The PmemMalloc library provides pre-allocated, partitioned shared memory blocks with enhanced enumeration support, enabling parallel processing across multiple CPU cores, equal CPU distribution, and asynchronous programming to prioritize and defer computations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If existing malloc libraries are used for memory allocation, then memory can be dynamically allocated with OS integration, but processing time increases and computational efficiency decreases due to lack of enumeration support and serial processing requirements
Solution Approach 1:
The patent pre-allocates memory blocks before packet processing begins, eliminating the need for dynamic memory allocation during packet processing. This preliminary action removes memory allocation overhead and enables parallel enumeration operations across multiple CPU cores, directly reducing processing time while improving computational efficiency
Solution Approach 2:
The patent segments memory into fixed blocks that can be independently allocated and processed. This segmentation allows different CPU cores to work on different memory blocks simultaneously, enabling parallel processing and enumeration operations that reduce overall processing time while maintaining high computational efficiency
2Reliability
If existing malloc libraries allocate memory dynamically with OS integration, then memory management is flexible, but data persistence is lost when applications restart or OS overwrites allocated data
Solution Approach 1:
The patent pre-allocates memory blocks and maintains them across application restarts and OS operations. By establishing memory blocks before processing and preserving them throughout system operations, the patent ensures data persistence while maintaining flexible memory management through controlled allocation and deallocation mechanisms
3Productivity
If enumeration operations are restricted to a single CPU core with existing malloc libraries, then memory allocation is simplified, but CPU utilization becomes unequal and processing throughput decreases
Solution Approach 1:
The patent segments enumeration operations across multiple CPU cores, with each core handling specific memory blocks or packet processing tasks. This segmentation enables parallel enumeration operations, improving processing throughput while achieving equal CPU utilization across all available cores
Solution Approach 2:
The patent transitions enumeration from a single-dimensional serial process on one CPU core to a multi-dimensional parallel process across multiple CPU cores. This dimensional change enables simultaneous enumeration operations on different memory blocks, significantly improving throughput and CPU utilization
4Loss of time
If existing malloc libraries use synchronous programming models, then packet processing follows strict ordering, but processing time increases due to O(N) computations and inability to defer operations
Solution Approach 1:
The patent performs memory allocation and initial packet processing setup in advance, before the main processing loop begins. This preliminary action eliminates the need for O(N) computations during packet processing and allows operations to be deferred to appropriate times, reducing processing time while maintaining operational simplicity through structured processing phases
Data Source
AI summary
The present disclosure relates to systems, methods, and computer-readable media for utilizing a new memory allocation function library called PmemMalloc. For example, the PmemMalloc library allocates pre-allocated, partitioned, and fixed shared memory blocks. In addition, by utilizing the PmemMalloc library, the memory allocation system described herein overcomes problems with persistence and enumeration that encumber existing malloc libraries. Indeed, the PmemMalloc library enables the memory allocation system to perform servicing computation in parallel across multiple CPU cores/threads, distribute computation equally among threads, prioritize servicing, among other improvements. Notably, the PmemMalloc library provides major constructs (e.g., persistence, enumeration, and debuggability) not available existing malloc libraries. Additionally, as detailed in this disclosure, the PmemMalloc library migrates various computations out of application-based packet processing to memory block-based deferred enumeration, which improves both packet processing and efficient use of CPU cores on a computing device.


