Receive Interrupt Signaling via Event Queues

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In cloud-hosted services and data centers, the software-based packet processing in network adapters leads to significant CPU overhead and limited scalability due to the need for software to check multiple receive queues associated with a shared interrupt vector, causing inefficiencies in handling packet processing and interrupt signaling.

Innovation Solution

Logical partitioning of receive queues into pools, each associated with a respective interrupt vector, allowing explicit notification to an event queue for activity, and automatic disabling of message generation for certain interrupt events to improve receive interrupt signaling efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple receive queues share a single interrupt vector, then system resource utilization is improved, but software must check every receive queue to determine which is ready for processing, increasing processing overhead

Engineering Contradiction:
Improvesystem resource utilizationVSAvoidsoftware processing overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

An event queue is introduced as an intermediary data structure between the receive queues and the interrupt handler. The event queue stores event information including receive queue identifiers and next activity locations, allowing the interrupt handler to quickly determine which specific receive queue needs processing without checking all queues associated with the interrupt vector.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system segments the interrupt handling process into distinct components: the interrupt vector receives the interrupt signal, the event queue contains segmented event information for individual receive queues, and the interrupt handler processes only the relevant segmented event. This segmentation enables efficient identification of the specific receive queue needing attention among many shared queues.

Inventive Principle:
Principle #1Segmentation

2Ease of manufacture

If software polls receive queues to detect new packets, then simple implementation is achieved, but CPU overhead increases significantly

Engineering Contradiction:
Improveimplementation simplicityVSAvoidCPU overhead
Core Design Contradiction:
Ease of manufactureVSUse of energy by moving object

Solution Approach 1:

The system implements self-service interrupt notification where the hardware automatically generates and queues event information in the event queue when packets arrive at receive queues. This eliminates the need for software to actively poll receive queues, as the system itself notifies software of events that require attention, significantly reducing CPU overhead while maintaining implementation simplicity.

Inventive Principle:
Principle #25Self-service

3Speed

If interrupt mode is used to notify software of new packets, then processing speed is improved, but interrupt chatter increases when multiple queues share a vector

Engineering Contradiction:
Improvepacket notification speedVSAvoidinterrupt chatter
Core Design Contradiction:
SpeedVSObject-generated harmful factors

Solution Approach 1:

The event queue acts as a mediator that filters and consolidates interrupt information. Instead of generating separate interrupts for each receive queue event, the system uses the event queue to organize events, allowing the interrupt handler to efficiently identify and process only the relevant receive queue, thereby reducing unnecessary interrupt chatter while maintaining fast notification speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Adaptability or versatility

If dozens or hundreds of receive queues share a single interrupt vector, then system scalability is improved, but it becomes problematic to determine which queue needs processing

Engineering Contradiction:
Improvesystem scalabilityVSAvoidqueue identification complexity
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The event queue serves as an intermediary that stores event information explicitly identifying which receive queue generated the interrupt and where the next activity is located. This intermediary structure enables the interrupt handler to quickly identify the specific receive queue among dozens or hundreds of shared queues, maintaining system scalability while reducing queue identification complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The event information is segmented to include specific identify of the receive queue and the next activity location. This segmentation of event data allows the interrupt handler to process individual queues independently and efficiently, even when many queues share a single interrupt vector, thereby maintaining scalability without increasing identification complexity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11797333B2Efficient receive interrupt signaling
Publication Date: 2023.10.24 INTEL CORP
  • US11797333B2 patent drawing
  • US11797333B2 patent drawing
  • US11797333B2 patent drawing

AI summary

Methods for performing efficient receive interrupt signaling and associated apparatus, computing platform, software, and firmware. Receive (RX) queues in which descriptors associated with packets are enqueued are implemented in host memory and logically partitioned into pools, with each RX queue pool associated with a respective interrupt vector. Receive event queues (REQs) associated with respective RX queue pools and interrupt vectors are also implemented in host memory. Event generation is selectively enabled for some RX queues, while event generation is masked for others. In response to event causes for RX queues that are event generation-enabled, associated events are generated and enqueued in the REQs and interrupts on associated interrupt vectors are asserted. The events are serviced by accessing the events in the REQs, which identify the RX queue for the event and a next activity location at which a next descriptor to be processed is located. After asserting an interrupt, an RX queue may be auto-masked to prevent generation of additional events when new descriptors are enqueued in the RX queue.