Intel® Ethernet 800 Series Application Device Queues (ADQ)

Software Developer's Guide

ID Date Version Classification
626536 04/03/2023 Public
Document Table of Contents

Application Device Queues (ADQ) Technology

Similar to cars on a highway, data needs to travel quickly and efficiently from the point of origin to its destination, but is often impeded by too much traffic and unexpected delays. ADQ provides dedicated express lanes for high-priority applications, which helps increase application predictability, reduce application latency, and improve application throughput.

ADQ can improve application performance in the following ways:

  • Takes advantage of silicon features to steer, load-balance, and isolate incoming application traffic to a dedicated set of hardware queues.
  • Allows application of Quality of Service (QoS), such as minimum and maximum bandwidth control, to a set of queues.
  • Optimizes how data polling is performed. This can be achieved in two methods:
    • Application dependent polling method (ADQ1.0): Provides hints to the application for each application thread to service incoming and outgoing traffic from a single device queue, using an optimized producer/consumer model. Requires small application modifications to align application threads to device queues.
    • Application independent polling method (New in ADQ2.0): Built on standard new API (NAPI) polling in the kernel, polling threads (called independent pollers) remove packets from device queues and redirect them to socket queues associated with application threads. This eliminates the need for application modification since it allows application threads to directly poll device queues and context switches are reduced by pre-filling socket queues.

While both application dependent polling and application independent polling are fully supported by Intel® Ethernet 800 Series Network Adapters, this document focuses on the software application changes needed to support application dependent polling.

This document outlines how to evaluate if an application is likely to benefit from ADQ enablement using ADQ1.0 and ADQ2.0, and then provides guidelines and examples of how to modify application code if desired to take full advantage of ADQ1.0 technology.

For more information about how to configure and test ADQ1.0 and ADQ2.0, refer to the Intel® Ethernet Controller E810 Application Device Queues (ADQ) Configuration Guide, which is available from the Intel Resource and Documentation Center.