Intel® Ethernet Controller E810 Application Device Queues (ADQ)
Configuration Guide
Verify ADQ Application Traffic and Independent Pollers (If Applicable)
-
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.
- The pkt_busy_poll counters are enabled by the
- 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 andps 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 andtc1_qps_per_poller is set to 4, there will be 2 ksoftirqd poller threads in thetop output, andhtop 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.