Intel® Ethernet 800 Series Application Device Queues (ADQ)
Software Developer's Guide
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.