Intel® Ethernet 800 Series

Linux Performance Tuning Guide

ID Date Version Classification
636781 07/19/2025 Public
Document Table of Contents

​iperf3

If iperf3 is used, multiple instances of the application are required to take advantage of the multi-threads, RSS, and hardware queues. Intel recommends running with the 2-4 application sessions for 25G connections and around 6-8 sessions for 100G connections. Each session should specify a unique TCP port value using the -p option.

  • To run uni-directional traffic from client to server:

    Server command example:

    iperf3 -s -p <port>

    Client command example:

    iperf3 -c <serverIP> -p <port>
  • To run bi-directional traffic from client to server (and vice versa):

    Server command example:

    iperf3 -s -p <port>

    Client command example:

    iperf3 -c <serverIP> -p <port> -P <IO_Streams> --bidir
  • To start multiple instances (threads) of iperf3, Intel recommends using a for-loop to map threads to TCP ports and running iperf3 in the background using & to create multiple processes in parallel:

    Server command example, start 4 threads:

    port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -s -p $port &"; done;

    Client command example, start 4 threads - Transmit test:

    port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; done;

    Client command example, start 4 threads - Receive test:

    port=""; for i in {0..3}; do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; done;

    For 100G connections, increase the for-loop to create 6 or 8 instances/threads.

    Note:When running the network throughout test with a single stream/thread (example: -P 1), AMD processors may not provide expected throughput, particularly with higher bandwidth NICs (if speed is >=25G bandwidth). As a result, application pinning to specific cores is required to achieve higher throughput. See sections 6.8.2, “AMD EPYC” and section 7.2, "Application Settings"