Intel® Ethernet Controller E810 Application Device Queues (ADQ)

Configuration Guide

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

Verify ADQ Application Traffic and Independent Pollers (If Applicable)

  1. Verify that ADQ application traffic is on the correct queues.

    While ADQ application traffic is running, watch ethtool statistics to check that only the ADQ queues are being used (have significant traffic) with busy poll (pkt_​busy_​poll) for ADQ traffic. If non busy poll (pkt_​not_​busy_​poll) have significant counts and/or if traffic is not confined to ADQ queues, recheck the configuration steps carefully.

    Example:

    watch -d -n 0.5 "ethtool -S $iface | grep busy | column"

    The above watch command displays pkt_​busy_​poll and pkt_​not_​busy_​poll counters for both Tx and Rx packets, refreshing the counters every half (0.5) second. For a configuration with 2 traffic classes, where TC0 has 2 queues configured for non-ADQ traffic and TC1 has 4 queues for ADQ traffic, the following is example watch output on the ADQ server when an application benchmark is initiated from client(s):

    Every 0.5s: ethtool -S ens2f0 | grep busy | column tx_busy: 0 rx_0.pkt_busy_poll: 0 tx_0.pkt_busy_poll: 0 rx_0.pkt_not_busy_poll: 7720 tx_0.pkt_not_busy_poll: 529 rx_1.pkt_busy_poll: 0 tx_1.pkt_busy_poll: 0 rx_1.pkt_not_busy_poll: 3615 tx_1.pkt_not_busy_poll: 4649 rx_2.pkt_busy_poll: 104353 tx_2.pkt_busy_poll: 108492 rx_2.pkt_not_busy_poll: 2692 tx_2.pkt_not_busy_poll: 1539 rx_3.pkt_busy_poll: 104219 tx_3.pkt_busy_poll: 108593 rx_3.pkt_not_busy_poll: 2829 tx_3.pkt_not_busy_poll: 1214 rx_4.pkt_busy_poll: 104227 tx_4.pkt_busy_poll: 108393 rx_4.pkt_not_busy_poll: 2879 tx_4.pkt_not_busy_poll: 1481 rx_5.pkt_busy_poll: 103973 tx_5.pkt_busy_poll: 108413 rx_5.pkt_not_busy_poll: 2922 tx_5.pkt_not_busy_poll: 1518 rx_6.pkt_busy_poll: 104332 Notes:
    • The pkt_​busy_​poll counters are enabled by the -DADQ_​PERF_​COUNTERS CFLAG during ice driver compile. If the counters are not listed in ethtool -S output, verify ice was built using the compile command listed in Step 1 of Install ice Driver with ADQ Flags.
    • The pkt_​busy_​poll counters are refreshed and incremented on the ADQ server while application traffic is actively running on the client(s).
    • If pkt_​not_​busy_​poll counters are being incremented on ADQ queues, refer to Troubleshooting for guidance.
  2. Verify independent poller threads (if applicable).

    When ADQ application traffic is running with one or more independent pollers configured, system monitoring tools such as top/htop and ps will show N ksoftirqd kernel threads running (with kernel version 5.12+), where N is the number of kernel independent poller threads. For example, if TC1 is configured with 8 queues and tc1_​qps_​per_​poller is set to 4, there will be 2 ksoftirqd poller threads in the top output, and htop output will show 2 CPU cores used @100% by kernel poller threads.

    Application traffic can be pinned either to the same CPU cores, or different cores, than the independent poller threads. There may be slight performance improvements using different CPU cores for the kernel pollers. However, if reducing the total number of CPU cores used by ADQ is important, overlapping application threads and independent poller threads is an option.