Software Queue Contention Reduction via Adaptive Polling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Network elements face contention and delays due to serialized access to software queues, which is necessary to prevent data errors but can lead to inefficiencies in packet processing during data bursts.

Innovation Solution

Implementing a queue management thread that prioritizes checking and clearing the software queue based on flow indicators, either by delaying its operation during data bursts or by asserting higher priority to reduce contention and ensure packets are not left in the queue for extended periods.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If serialized access to the software queue is implemented using a mutex function, then data errors are prevented, but contention and delays occur during packet processing

Engineering Contradiction:
Improvedata error preventionVSAvoidpacket processing throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies dynamics by making the mutex lock/release mechanism adaptive based on queue state. The queue management thread dynamically adjusts its behavior by checking whether packets remain in the software queue before attempting to access it. This dynamic approach allows the system to maintain serialization for reliability while reducing unnecessary contention during data bursts, thereby improving throughput.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements feedback through the queue management thread that continuously monitors the software queue state and flow indicators. Based on this feedback, the thread determines when to access the software queue and when to delay access, optimizing the balance between preventing data errors and maintaining high packet processing throughput during data bursts.

Inventive Principle:
Principle #23Feedback

2Productivity

If the queue management thread checks the software queue frequently to prevent packets from being left in the queue, then packet processing efficiency is improved, but contention for the software queue increases

Engineering Contradiction:
Improvepacket processing efficiencyVSAvoidcontention delay
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by having the queue management thread check flow indicators and determine whether packets likely remain in the software queue before actually accessing it. This preliminary assessment allows the thread to avoid unnecessary access attempts during data bursts, reducing contention delay while still ensuring packets are cleared efficiently when needed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The queue management thread dynamically adjusts its checking frequency and access timing based on real-time queue state and flow conditions. During data bursts, the thread delays access to reduce contention, while during lower-activity periods, it actively checks and clears the queue to maintain processing efficiency, optimizing the balance between productivity and time loss.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9235449B1Systems and methods for reducing contention for a software queue in a network element
Publication Date: 2016.01.12 ADTRAN INC
  • US9235449B1 patent drawing
  • US9235449B1 patent drawing
  • US9235449B1 patent drawing

AI summary

A network element has at least one receiver, a software queue, and at least one transmitter. A data path thread moves data packets from a receive queue of the receiver to the software queue, and a transmit driver moves data packets from the software queue to a transmit queue of the transmitter. A flow indicator associated with the software queue is controlled to indicate when at least one data packet remains in the software queue. A queue management thread polls the flow indicator to determine when the software queue should be accessed for ensuring that data packets do not remain in the software queue for extended time periods between data bursts.