Non-Kernel Threaded Network Stack for Resource Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional network communication stacks, particularly in consumer electronics, face inefficiencies due to their monolithic design that executes kernel space processes at high priority, leading to bottlenecks in resource allocation and increased processing overhead, which is not optimized for varying device capabilities and application requirements.

Innovation Solution

A computer system architecture that includes a shared memory with submission and completion queues, a network interface in kernel space, and a device driver in non-kernel space, allowing for efficient data packet management and processing by writing packets into a shared packet pool and queuing pointers for direct access and completion status handling, thereby optimizing packet transmission and reception operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If network communication stack executes as kernel space processes, then resource allocation efficiency is improved, but processing overhead increases and adaptability to varying device capabilities deteriorates

Engineering Contradiction:
Improveresource allocation efficiencyVSAvoidprocessing overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The network communication stack is segmented into multiple threads with different priorities. High-priority threads handle time-sensitive network operations, while low-priority threads handle less critical tasks. This segmentation allows the system to maintain high resource allocation efficiency for critical operations while reducing overall processing overhead by distributing work across multiple priority levels.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system dynamically adjusts thread priorities and resource allocation based on device capabilities and application requirements. The kernel space process can modify scheduling parameters and resource distribution in real-time, allowing adaptability to varying device capabilities while maintaining efficient resource utilization.

Inventive Principle:
Principle #15Dynamics

2Productivity

If network communication stack executes as kernel space processes, then resource allocation efficiency is improved, but adaptability to varying device capabilities and application requirements deteriorates

Engineering Contradiction:
Improveresource allocation efficiencyVSAvoidadaptability to device capabilities
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The kernel space process implements dynamic priority adjustment and resource allocation based on detected device capabilities and application requirements. The system can adapt its behavior in real-time, modifying scheduling parameters and resource distribution to match the specific capabilities of different devices while maintaining high resource allocation efficiency.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes operational parameters such as thread priorities, scheduling intervals, and resource allocation ratios based on device capabilities and application needs. By adjusting these parameters dynamically, the kernel space process maintains efficient resource utilization across diverse device platforms while adapting to specific capability requirements.

Inventive Principle:
Principle #35Parameter changes

3Ease of manufacture

If monolithic design is used, then implementation simplicity is improved, but processing overhead increases

Engineering Contradiction:
Improveimplementation simplicityVSAvoidprocessing overhead
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The monolithic kernel space process is segmented into multiple independent threads, each handling specific network communication tasks. This segmentation reduces processing overhead by allowing concurrent execution of independent tasks while maintaining the simplicity of a unified kernel space implementation. The threads can be managed independently, reducing contention and improving overall processing efficiency.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11954540B2Methods and apparatus for thread-level execution in non-kernel space
Publication Date: 2024.04.09 APPLE INC
  • US11954540B2 patent drawing
  • US11954540B2 patent drawing
  • US11954540B2 patent drawing

AI summary

Methods and apparatus for split memory allocations in non-kernel space. Many modern networking technologies use asymmetric transmit and/or receive resource. Various aspects described herein split memory resources for transmit and receive, configuring each for their respective hardware optimizations. For example, a receive data paths that support batch processing and packet aggregation may be allocated large memory objects (32 KB) that can route data packets on a per-flow basis. In contrast, transmit data paths that support multiple concurrent network connections may be allocated small memory objects (2 KB) that can route data packets one at a time.