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

Default Design

By default, NGINX server has the following design:

  • A multi-threaded process creates N threads.
  • Each thread creates an epoll object.
  • Each thread creates a listen socket that uses SO_​REUSEPORT.
  • Each thread calls an accept connection syscall and waits to be woken up to handle an incoming connection.
  • The kernel assigns the accepted connection to a thread's epoll object via JHASH-based selection. This is calculated using src IP + dest IP + src port + dest port.
  • Each thread processes an epoll object:
    • Performs epoll_​wait.
    • When epoll_​wait returns from syscall, the thread performs read/recv/write/send on sockets