Intel® Ethernet 700/800 Series

Windows Performance Tuning Guide

ID Date Version Classification
784543 02/06/2024 1.1 Public
Document Table of Contents

​iperf3

Using iperf3 requires multiple instances of an application to take advantage of Receive Side Scaling (RSS), multi-threads, and hardware queues.

Using iperf3 differs from using iperf2 as follows:

  • ​​iperf3 with the -P option set uses multiple streams of traffic inside a single I/O thread.
  • ​​iperf3 supports single-threaded benchmarking with multiple streams from one application thread.
  • ​​iperf2 with the -P option set spawns a separate thread for each instance of -P.
  • ​​iperf2 supports true multi-threaded benchmarking.

Intel recommends running with 2 to 4 application sessions for 25G connections and around 6 to 8 sessions for 100G connections. Each session should specify unique TCP port values using the -p option.

To run uni-directional traffic from client to server:

  1. ​Start Server. iperf3.exe -s
  2. ​Start Client. iperf3.exe -c <serverIP>

To start multiple instances (threads) of iperf3:

  1. ​Use a for-loop to map threads to TCP ports.
  2. ​Run iperf3 in the background using this cmdlet: Start-Process
  3. ​Start Server with 4 instances/threads: for ($i = 0; $i -le 3; $i++) { Start-Process powershell.exe -ArgumentList "-Command", ".\iperf3.exe -s -p ((5200+$i))" }
  4. Start Client with 4 instances/threads: for ($i = 0; $i -le 3; $i++) { Start-Process powershell.exe -ArgumentList "-Command", ".\iperf3.exe -s -p ((5200+$i))" }
Note:​The for loops create four iperf3 server/client processes in the background on ports 5200 to 5203. A new window is created for each process.

To turn off the creation of new windows and send all output to the active window:

  • ​​Add the -NoNewWindow command to the end of the Start-Process commands as follows: Start-Process powershell.exe -ArgumentList "-Command", ".\iperf3.exe -s -p ((5200+$i))" -NoNewWindow Start-Process powershell.exe -ArgumentList "-Command", ".\iperf3.exe -c <serverIP> -p ((5200+$i))" -NoNewWindow
Note:​For 100G connections, increase the for-loop to create 6 to 8 instances/threads.