Book.book
Book.book
Book.book
Revision 1.0
784543-001
Revision History
2 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
Contents
784543-001 3
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
4 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
1.0 Introduction
This guide provides tuning guidance for optimal networking performance using Intel® Ethernet 700
Series (700 Series) or Intel® Ethernet 800 Series (800 Series) devices in Windows environments. This
guide focuses on hardware, driver, and operating system conditions, as well as settings that help
improve network performance.
Note: Networking performance can be affected by any number of outside influences. Only the most
common and dramatic of these are covered in this guide.
1.1 Terminology
Term Description
VF Virtual Function
VM Virtual Machine
784543-001 5
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
6 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 7
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
8 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 9
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
10 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 11
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
12 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
Note: Some physical PCIe x16 slots are configured electrically as x8 slots. These slots have
insufficient bandwidth for full performance with 100G or quad port 25G devices. The software
device driver detects this situation and writes a message to the system log:
Gb/s available PCIe bandwidth, limited by 8 GT/s x8 link at 0000:xx:xx.0
(capable of 252.048 Gb/s with 16 GT/s x16 link)
Note: If this error occurs, move your adapter to a true PCIe v3.0 x16 slot or greater,
to avoid performance issues.
784543-001 13
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
3.2.1 iperf2
Intel recommends using iperf2 over iperf3 for most benchmarking situations due to their ease of use
and support of multiple threads in a single application instance. Intel recommends running with the
-P option with 2 to 4 threads for 25G connections and around 6 to 8 threads for 100G connections.
Download the latest iperf2 Windows binary:
https://sourceforge.net/projects/iperf2/files/
To run uni-directional traffic from client to server:
1. Start Server.
iperf-2.1.9-win.exe -s -D
2. Start Client:
iperf-2.1.9-win.exe -c <serverIP> -P <threads>
To run bi-directional traffic from client to server and vice versa:
1. Start Server:
iperf-2.1.9-win.exe -s -D -p <port>
2. Start Client:
iperf-2.1.9-win.exe -c <serverIP> -p <port> -P <threads> --full-duplex
or
iperf-2.1.9-win.exe -c <serverIP> -p <port> -P <threads> -d
Note: Both the --full-duplex and -d options in iperf2 allow you to perform bidirectional
testing. However, the --full-duplex option specifically focuses on full duplex testing.
14 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
3.2.2 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.
• Download the latest iperf3 Windows binary:
https://iperf.fr/iperf-download.php#windows
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 -c
<serverIP> -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.
784543-001 15
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
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.
16 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 17
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
18 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 19
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
20 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
Note: Ethernet counters are useful to monitor byte and packet counters across test runs, and to
check for dropped packets (discards) or any errors on the interface. See Section 4.9, “Low
Receive (RX) Performance and/or Discarded Packets” for tips on resolving discarded
RX packets.
784543-001 21
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
22 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 23
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
24 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 25
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
26 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
If you have multiple ports installed in a system, the RSS queues of each adapter port can be adjusted
to use non-overlapping sets of processors within the adapter's local Non-Uniform Memory Access
(NUMA) Node/Socket.
Change the RSS Base Processor Number for each adapter port, so that the combination of the base
processor and the Max Number of RSS Processor settings ensure non-overlapping cores.
For Microsoft Windows systems, do the following:
1. Identify the adapter ports to be adjusted and inspect their RssProcessorArray:
Get-NetAdapterRSS -Name <Adapter Name>
2. Identify the processors with NUMA distance 0. These are the cores in the adapter's local NUMA
Node/Socket, and they provide the best performance.
Note: If Hyper-Threading is enabled in BIOS, the driver does not utilize the hyper-threaded
cores for RSS, and this can impact performance for applications using both physical and
logical (HT) cores.
3. Adjust the RSS Base Processor Number on each port to use a non-overlapping set of processors
within the local set of processors. You can do this manually or using the following PowerShell
command:
Set-NetAdapterAdvancedProperty -Name <Adapter Name> -DisplayName "RSS Base
Processor Number" -DisplayValue <RSS Base Proc Value>
4. Verify the right values have been set:
Get-NetAdapterAdvancedproperty -Name <Adapter Name>
Example:
For a 4-port adapter with local processors 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30:
Set the Maximum Number of RSS Processors to 8 on the 4 interfaces:
Set-NetAdapterAdvancedProperty -Name "E810-1" -DisplayName "Maximum Number of RSS
Queues" -DisplayValue 8
Set-NetAdapterAdvancedProperty -Name "E810-2" -DisplayName "Maximum Number of RSS
Queues" -DisplayValue 8
Set-NetAdapterAdvancedProperty -Name "E810-3" -DisplayName "Maximum Number of RSS
Queues" -DisplayValue 8
Set-NetAdapterAdvancedProperty -Name "E810-4" -DisplayName "Maximum Number of RSS
Queues" -DisplayValue 8
Set the RSS Base Processor Number to 0, 8, 16 and 24 on the 4 interfaces:
Set-NetAdapterAdvancedProperty -Name "E810-1" -DisplayName "RSS Base Processor
Number" -DisplayValue 0
Set-NetAdapterAdvancedProperty -Name "E810-2" -DisplayName "RSS Base Processor
Number" -DisplayValue 8
Set-NetAdapterAdvancedProperty -Name "E810-3" -DisplayName "RSS Base Processor
Number" -DisplayValue 16
Set-NetAdapterAdvancedProperty -Name "E810-4" -DisplayName "RSS Base Processor
Number" -DisplayValue 24
784543-001 27
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
28 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 29
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
CPU utilization Application, web, mail, and database • Maximize interrupt moderation rate.
servers • Keep the default setting for the number of receive descriptors;
avoid setting large numbers of receive descriptors.
• Decrease RSS queues.
• In Hyper-V environments, decrease the maximum number of
RSS CPUs.
Virtualization SR-IOV, IOMMU, Hyper-V, VMs • Can achieve efficient resource utilization, improved
performance, and enhanced security.
• Enable Virtualization in BIOS.
• Enable hardware-assisted virtualization,
such as Intel® VT-d (or IOMMU) and Intel® AMD-V.
• Enable SR-IOV on the interface in device manager, Hyper-V
vSwitch manager, and VM hardware acceleration settings.1
• Allocate appropriate hardware resource.
• Use dynamic memory allocation for VMs.
• Proper storage configuration.
• Optimize networking.
Teaming Configure 2x 700 or 800 series • Teaming ensures uninterrupted connectivity, provides load
interfaces using a supported Teaming balancing, and improves overall network reliability.
method • Teaming can be configured using GUI, PowerShell,
or Intel® ANS.
• Update supported drivers and NVM/firmware.
• Adjust team member properties.
• Select the appropriate teaming mode.
• Configure load balancing algorithms.
1. Best performance is generally achieved with SR-IOV enabled, using VF(s) for the SR-IOV enabled network adapter. For
environments with SR-IOV disabled, VMQ can be used with standard virtual network adapters to enhance network performance for
VMs. See Section 8.1, “SR-IOV/VMs”.
30 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
Web Server This profile is optimized for IIS and HTTP-based web servers.
Virtualization Server This profile is optimized for Microsoft’s Hyper-V virtualization environment.
Storage Server This profile is optimized for Fibre Channel over Ethernet or for iSCSI over DCB performance.
Selecting this profile disables SR-IOV and VMQ.
Storage + Virtualization This profile is optimized for a combination of storage and virtualization requirements.
Notes: Not all options are available on all adapter/operating system combinations.
If you have selected the Virtualization Server Profile or the Storage + Virtualization Profile,
and you uninstall the Hyper-V role, you should select a new profile.
This setting is found on the Advanced tab of the device's Device Manager property sheet or in the
Adapter Settings panel in the Intel® PROSet Adapter Configuration Utility.
• To change this setting in Windows PowerShell, use this cmdlet:
Set-NetAdapterAdvancedProperty -Name <Adapter Name> -DisplayName "Profile" -
DisplayValue "Standard Server"
• For example:
Set-IntelNetAdapterSetting -Name <Adapter Name> -DisplayName "Profile" -
DisplayValue "Standard Server"
784543-001 31
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
32 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
6. Set the Power Management Setting to Performance or High Performance to ensure that the system
operates at maximum performance levels.
7. Disable the CPU C-states, or set them to a lower level (such as C1E).
7.1 Firewalls
Firewalls can impact performance, particularly latency performance. Disable the Firewall if it is not
required.
7.2 OS Version
Most modern versions of the Windows OS are reasonably well optimized for performance. However,
depending on your use case, updating the OS can provide improved performance.
If you are seeing a performance issue that appears to be OS-specific, see Section 1.3, “Known Issues”
to see if there is a mitigation to use a newer version of the OS.
784543-001 33
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
34 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
8.1 SR-IOV/VMs
The tunings listed below can be used to improve performance between VM to VM and VM to Host when
SR-IOV is enabled in Hyper-V.
Note: See Intel® Ethernet Adapters and Devices User Guide, Section 4.31.1, "Single Root I/O
Virtualization (SR-IOV)" for detailed steps to configure SR-IOV.
From the Host OS on both Host 1 and Host 2:
1. Enable RSS on the PF and the vSwitch.
Enable-NetAdapterRss -name "ADAPTER_NAME"
2. Enable 4 queues per VF:
Set-VMNetworkAdapter -VMName "YOUR_TEST_VM_NAME" IovQueuePairsRequested 4
Get-VmNetworkAdapter -VMName * | where {$_.SwitchName -eq
"YOUR_TEST_SWITCH_NAME"} | Set-VmNetworkAdapter -IovQueuePairsRequested 4
3. Ensure the VMs have at least twice as many vCPUs as Receive Side Scaling (RSS) queues.
In this case, set the number of total processors in the VM to 8.
a. To do this, use Section 8.1.1, “Method 1 – PowerShell” or Section 8.1.2, “Method 2 – Windows
GUI”
784543-001 35
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
36 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 37
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
38 784543-001
Did this document help answer your questions?
Intel® Ethernet 700/800 Series
Windows Performance Tuning Guide
784543-001 39
Did this document help answer your questions?
LEGAL
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
This document (and any related software) is Intel copyrighted material, and your use is governed by the express license under which
it is provided to you. Unless the license provides otherwise, you may not use, modify, copy, publish, distribute, disclose or transmit
this document (and related materials) without Intel's prior written permission. This document (and related materials) is provided as
is, with no express or implied warranties, other than those that are expressly stated in the license.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a
particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in
trade.
This document contains information on products, services and/or processes in development. All information provided here is subject
to change without notice. Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps.
The products and services described may contain defects or errors which may cause deviations from published specifications.
Copies of documents that are referenced in this document can be obtained by visiting the Intel Resource and Documentation Center.
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
Other names and brands may be claimed as the property of others.
© 2022-2023 Intel Corporation.
40 784543-001
Did this document help answer your questions?
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: