Intel® Ethernet Controller E810 Application Device Queues (ADQ)

Configuration Guide

ID 609008
Date 04/03/2023
Version 2.8
Document Table of Contents

netperf Server

Note:This section uses application dependent polling (ADQ1.0) for application and testing and does not use an independent poller (ADQ2.0).

The following variables are used in the examples in this section:

$iface The interface in use (PF).
$ipaddrserver The IP Address of the netperf server interface under test.
$app_​port

The starting port of the netperf application.

Note:This should be available on both sever and client. Usually a high number (>2000) is best, but check that it is available (for example: sudo netstat -tulpn | grep LISTEN).
ADQ Setup Script Variables
$bp Global busy_​poll value to be set by ADQ Setup Script (system-wide setting, not to be used with independent poller).
$br Global busy_​read value to be set by ADQ Setup Script (system-wide setting, not to be used with independent poller).
$file_​name Application name to be set and used by ADQ Setup Script (any descriptive string, i.e., netperf).
$portrange TCP ports to be configured by ADQ Setup Script.
$addr Destination IP address of traffic to be configured by ADQ Setup Script.

Using ADQ Setup Script

The ADQ Setup script allows you to quickly and easily configure required ADQ parameters such as traffic classes, priority, filters, and ethtool parameters etc.

  1. To configure ADQ, run the following command: adqsetup --dev=$iface –-priority=skbedit --busypoll=$bp --busyread=$br create $file_name mode shared \ queues $num_queues_tc1 ports $portrange addrs $addr

    See Notes below for customizing the ADQ configuration. Once ADQ is configured by adqsetup, start the netperf server.

    Notes:
    1. The example command above creates both ingress (Rx) and egress (Tx) filters, and Linux cgroups are not needed to be created and can be skipped (cgroup is only needed if --priority=skbedit was NOT specified in adqsetup command).
    2. ADQ Setup script handles symmetric queues and affinity.
    3. The setup script sets per-queue coalesce by default.
    4. Set the transmit and receive interrupt coalescing values to --rxadapt=off --rxusecs=0 --txadapt=off --txusecs=500 for improved ADQ performance.
    5. To configure independent pollers, add the --pollers=$pollers parameter in the adqsetup command (and optionally --pollers_​timeout), and remove the flags to set global --busypoll=$bp --busyread=$br.
    6. Use the cpu parameter in the command to bind the independent pollers to specific CPU cores. Refer to ADQ Setup Using ADQ Setup Script for more information on pinning pollers to specific CPU cores.
    7. The --debug parameter is optional, but it is useful for obtaining complete configuration details.
    8. For more information on how to use the script, refer to ADQ Setup Using ADQ Setup Script.
  2. Start netperf server (netserver).

    If egress TC filters(s) created with skbedit priority:

    netserver -4 -L ${ipaddrserver} -Dd Note:If cgroup priority is set for Application Network traffic (--priority=skbedit is not specified in the command), see Set cgroup Priority for Application Network Traffic (If Needed) for instructions on configuring cgroup and running tasks with cgroup.
Note:Use netserver -h for parameter details. Note: The ADQ Setup script clears the existing configuration before proceeding with the new ADQ configuration. To clear manually, follow the steps in Clear the ADQ Configuration.