Kernel Thread Network Stack Buffering via Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Networked computer systems face bottlenecks in handling high volumes of data traffic due to the reliance on single global buffers and resource locking mechanisms, which limit parallelism and throughput in multi-threaded environments, especially in modern server and cloud storage systems.

Innovation Solution

Implementing a network module that establishes individual data buffers and exclusivity locks for each kernel thread, allowing parallel processing and reducing contention by associating unique buffer lists with each MSI/MSI-X thread context, enhancing the network stack's ability to handle concurrent data frames.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a single global buffer list is used for all kernel threads, then device complexity is reduced and ease of operation is improved, but productivity and throughput deteriorate due to bottlenecks in high-volume network traffic handling

Engineering Contradiction:
Improvenetwork traffic handling throughputVSAvoidbuffer management structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the single global buffer list into multiple per-thread buffer lists, with each kernel thread having its own dedicated buffer list. This segmentation eliminates the bottleneck caused by a single global lock, as each thread can independently manage and access its own buffer list without contending with other threads, thereby significantly improving network traffic handling throughput.

Inventive Principle:
Principle #1Segmentation

2Productivity

If a single global buffer list lock is used for thread synchronization, then ease of operation is improved and device complexity is reduced, but productivity deteriorates due to thread contention and waiting time

Engineering Contradiction:
Improveconcurrent data frame processing speedVSAvoidthread waiting time for buffer access
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the single global buffer lock into multiple per-thread buffer locks. Each kernel thread acquires and releases its own dedicated lock independently, eliminating thread contention and waiting time. This allows all kernel threads to process data frames concurrently without interference, maximizing parallelism and processing speed.

Inventive Principle:
Principle #1Segmentation

3Productivity

If individual data buffers and exclusivity locks are established for each kernel thread, then productivity and parallelism are improved, but device complexity and memory usage increase

Engineering Contradiction:
Improveparallel data frame processing capabilityVSAvoidbuffer and lock management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements per-thread buffer lists and locks, where each kernel thread has its own dedicated buffer list and exclusivity lock. This segmentation enables true parallel processing of data frames across multiple threads, as each thread operates independently on its own buffers without synchronization overhead. The complexity increase is justified by the significant improvement in parallelism and throughput for high-volume network traffic.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The per-thread buffer list structure serves multiple functions: it acts as both the data storage mechanism and the synchronization primitive (through the associated lock). This multi-functionality reduces the need for separate global buffer management structures and simplifies the overall system architecture while maintaining high parallelism.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Productivity

If per-thread buffer lists are implemented for MSI/MSI-X thread contexts, then throughput is improved by eliminating buffer list lock contention, but device complexity increases

Engineering Contradiction:
Improvenetwork stack throughputVSAvoidthread context buffer association complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent associates each MSI/MSI-X thread context with its own dedicated buffer list, segmenting the buffer management space according to thread context. This eliminates contention at the buffer list lock level, as each thread context independently manages its own buffers. The complexity of associating buffers with thread contexts is offset by the elimination of global synchronization bottlenecks, resulting in higher network stack throughput.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10402197B2Kernel thread network stack buffering
Publication Date: 2019.09.03 LIQID INC
  • US10402197B2 patent drawing
  • US10402197B2 patent drawing
  • US10402197B2 patent drawing

AI summary

Systems, methods, apparatuses, and software for data systems are provided herein. In one example, a data system is presented. The system includes a processing system configured to execute an operating system that comprises a network module for handling data frames directed to a plurality of kernel threads and received over one or more network interfaces of the data system. The network module is configured to establish a plurality of data buffers individually associated with the kernel threads, store associated ones of the data frames for the kernel threads in the data buffers as the data frames are processed through a network stack of the data system, and maintain data exclusivity locks for the plurality of data buffers and individually associate the data exclusivity locks with the kernel threads.