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

Adapting Applications to Take Advantage of ADQ

To optimize the single producer/consumer model, ADQ technology creates a unique pipe between the application's working thread that processes packets from a network connection, and the adapter’s hardware queue that the network connection is received on. To align the application processing the data worker threads to the specific adapter hardware queues (an application hint), a relatively minor change to the application or kernel might be required. That way, packet processing is optimized while leaving the application thread free to move between CPU cores.

A major factor in selecting an approach to enabling ADQ for a particular application is the application's model for network connection handling among multiple threads.

This guide covers two approaches that are commonly used for each incoming connection:

  • Listen-Accept is performed by the listening thread, and processing is performed by the worker thread. Examples of applications that use this approach include Memcached and Aerospike.
  • Listen, Accept, and Processing are all performed by the same application thread. An example of an application that uses this approach is NGINX.

You can use one of these approaches to make similar changes to your own application and realize the predictability, latency, and throughput advantages of ADQ.

Note:For applications that are not multi-threaded and instead use multiple instances for scaling, no application change is needed. Examples of such applications include open source Redis, Netperf, and Pelikan Cache. Thread/queue alignment is done for these applications during the ADQ configuration steps using Intel® Ethernet Flow Director perfect filters. See the Redis testing section in the Ethernet Controller E810 Application Device Queues (ADQ) Configuration Guide for an example of such a configuration.