Network Adapter Settings for Maximizing throughput

Advanced ethernet adapter driver settings are extremely configurable finding sensible values can be tricky without testing the connection. This post explains what each setting means and lists recommended values that will maximise your home network’s throughput and minimise CPU overhead (based on my own experience.) A maximum transfer rate of 114Mb/s was achieved with these settings on a 1 Gigabit connection. This is quite impressive considering the theoretical maximum for these connections is 125Mb/s. My computers use different types of Ethernet adapters (Realtek and Intel) and the terminology is different between these two models but I try my best to accommodate for both vendors.

Adaptive Inter-Frame Spacing (Intel)

Recommended Setting: Disabled

Effect on Throughput: negative, in quiet networks

Effect on CPU Utilisation: none

This introduces a time gap between packages sent into the network to help compensate for excessive packet collisions on the network. This would only be an issue on large networks (no home network would ever need this, trust me.) Only one computer can send data across a network at a time and TCP uses multiplexing protocols to decide which computer and for how long they get to send. If multiple computers send packets at the same, they collide on the Ethernet line which causes them to corrupt. This is why time gaps between sent packets could improve performance on very busy networks. The effect is negligible on home networks.

Enable PME

Recommended Setting: Disabled

Effect on Throughput: none

Effect on CPU Utilisation: none

The setting is in brackets because it is really up to you to decide if you need this feature. PME stands for Power Management Event and the feature wakes up your computer on receipt of a signal from the network.

Energy Efficient Ethernet

Recommended Setting: Disabled

Effect on Throughput: negative

Effect on CPU Utilisation: positive

If you favour performance over energy efficiency then turn any energy saving features off. This feature may be called “Advanced EEE” (Energy Efficient Ethernet) for Realtek Ethernet Adapters

Flow Control

Recommended Setting: Rx & Tx Enabled

Effect on Throughput: positive, reduces packet loss

Effect on CPU Utilisation: positive, as fewer packets are wrapped and sent

It is a really good idea to enable this. Flow control allows the receiving device to tell the sending device that it is struggling to keep up with all the incoming packets. This allows the sender to slow down and therefore reduce the amount of lost and timed out packets being sent through the network. Disabling this would mean that TCP re-transmits timed out and lost packets as the sender didn’t receive an ACK for those packets. This means that there are now even more packets in the network and the receiving host has even more incoming packets to process. There are advantages and disadvantages to enabling this setting. If you are a flow control expert please correct me in the comments and I will append your advise.

Gigabit Master Slave Mode

Recommended Setting: Automatic

Effect on Throughput: none (negative is both hosts have same mode or the connection is 10/100Mbps)

Effect on CPU Utilisation: none

Multi-port devices such as routers are automatically assigned Master mode. Leave Auto Detect to let the network adapters figure this out by themselves (based on the IEEE 802.3ab standard.) If a device is forced to master mode and connects the another Ethernet adapter in master mode, the connection can either disconnect or downshift to 100Mbps. If you are experiencing slow connections, this should be a setting to change you should keep an eye on. If in doubt, use the recommended setting.

Green Ethernet (Realtek)

Recommended Setting: Enabled

Effect on Throughput: none

Effect on CPU Utilisation: none

When enabled, this Realtek adapter feature senses the length of the plugged in Ethernet cable and adjusts the voltage of the output signal accordingly. This should have no effect on CPU and network throughput and it saves energy.

Interrupt Moderation

Recommended Setting: Enabled

Effect on Throughput: none

Effect on CPU Utilisation: none Interrupt moderation, when enabled, allows you to set an interrupt moderation rate which determined how frequently, the system stops performing everyday tasks to focus on processing incoming or outgoing packets.

Interrupt Moderation Rate

Recommended Setting: Adaptive

Effect on Throughput: higher rate, more throughput

Effect on CPU Utilisation: higher rate, more CPU usage

Sets the rate at which the Ethernet adapter interrupts the system to perform networking related tasks (such as processing incoming and outgoing packets). A lower rate makes the system respond to new packets quicker but may reduce the performance of other applications running on the system. A larger value implied the adapter interupts the system less frequently. This makes the system more responsive and this setting is especially useful for sending and receiving large amounts of data.

IPv4 Checksum Offload

Recommended Setting: Rx & Tc Enabled

Effect on Throughput: none

Effect on CPU Utilisation: positive

Offloading checksum calculation to hardware components is always a good idea to relief the processor from having to do that work. Same goes for TCP and UDP Checksum Offload (IPv4 and IPv6).

Jumbo Packet (MTU)

Recommended Setting: [9014 Bytes]

Effect on Throughput: positive

Effect on CPU Utilisation: positive

Jumbo packet increase the payload size per packet sent across the network, thereby reducing TCP/IP overhead and CPU utilisation. Enable this only if your connection is 1Gigabits per second and all devices on your network support this feature. Also make sure to set the Jumbo Frame size to the same value across all your devices. In my case 9014bytes is the largest value all of my networking hardware supports. Jumbo Frames are implemented differently across different vendors, so if you run into problems try disabling this before tweaking other settings.

Large Send Offload V2 (IPv4) and Large Send Offload V2 (IPv6)

Recommended Setting: Disabled

Effect on Throughput: negative

Effect on CPU Utilisation: negative

Crutledge explains this concept beautifully in his post Large Send Offload and Network Performance (A good read!). The idea is that the TCP/IP software stacks buffers data messages before sending them to the Ethernet adapter. The adapter itself then segments it into smaller chunks that fit into the frame size (normally 1500bytes, or, if you set Jumbo Frames, they will be that size instead.) using an algorithm implemented in its hardware (super fast!). Crutledge then explains that this frees up CPU “from having to handle segmenting of large TCP messages into smaller packets”. He goes on to explain that problems start because different network devices have to agree on the same frame size. If a switch does not support the Jumbo Frame Size it silently drops the frame. The idea is that without the buffering introduced by LSO, smaller packets would be sent into the network that are more likely to be accepted by routes and switched because of their standard size. To quote him again, “And this is where a performance enhancement feature becomes a performance degradation nightmare”. I encourage to read his article (its relatively short and concise) to find out more about this.

Locally Administered Address

Recommended Setting: Disabled

Effect on Throughput: none

Effect on CPU Utilisation: none

This allows you to set a static IP address for this machine. I leave this disabled to assign IP’s automatically. My router at home does a good job of assigning the same IP based on MAC addresses anyway.

Recommended Setting: Disabled

Effect on Throughput: none

Effect on CPU Utilisation: negative

When enabled the Ethernet adapter will log all state changes in a file. In a home network, I don’t see any reason why you would want to read those logs. To reduce CPU overhead (however small that may be) I would just disable this feature.

Maximum Number of RSS Queues

Recommended Setting: 2 Queues Effect on Throughput: Effect on CPU Utilisation:

Packet Priority & VLAN

Recommended Setting: Packet Priority & VLAN Enabled Effect on Throughput: Effect on CPU Utilisation:

Protocol ARP Offload

Recommended Setting: Enabled Effect on Throughput: Effect on CPU Utilisation:

Protocol NS Offload

Recommended Setting: Enabled Effect on Throughput: Effect on CPU Utilisation:

Receive Buffer MAX

Recommended Setting: 512 Effect on Throughput: Effect on CPU Utilisation:

Receive Side Scaling

Recommended Setting: Disabled Effect on Throughput: Effect on CPU Utilisation:

This involves the distribution of incoming network processing across multiple processor cores. For example, multiple TCP connections are created to load different elements on a website. These connections are distributed across different cores to improve performance. Does not affect throughput, only CPU utilisation. Network benchmark tools may show that total performance decreases when this tool is enabled. Users who care about CPU utilisation are encouraged to enable this feature, otherwise leave it disabled.

Reduce Speed on Power Down

Recommended Setting: Disabled

Effect on Throughput: negative

Effect on CPU Utilisation: none

If you are concerned about energy consumption over performance, enable this feature. Otherwise disable it.

Speed & Duplex

Recommended Setting: 1.0 Gbps Full Duplex

Effect on Throughput: positive

Effect on CPU Utilisation: none

This has got to be the biggest throughput improvement of all. Assuming all of you networking hardware supports 1.0 Gigabits per second this will increase your throughput from 12.5Mb/s (on 100Gbps connection) to an impressive 125Mb/s. These max values are theoretical. On my network the max throughput I was able to achieve was 114Mb/s on a single cable.

System Idle Power Saver

Recommended Setting: Disabled

Effect on Throughput: negative

Effect on CPU Utilisation: negative

Anything power saving related is going to affect performance.

TCP Checksum Offload (IPv4) and TCP Checksum Offload (IPv6)

Recommended Setting: Rc & Tx Enabled

Effect on Throughput: none

Effect on CPU Utilisation: none

It’s always a good idea to offload calculations to hardware whenever possible. Hardware is super fast.

Transmit Buffers

Recommended Setting: 128 Effect on Throughput: Effect on CPU Utilisation:

UDP Checksum Offload (IPv4) and UDP Checksum Offload (IPv6)

Recommended Setting: Rc & Tx Enabled

Effect on Throughput:

Effect on CPU Utilisation:

Recommended Setting: Auto Detect

Effect on Throughput: none

Effect on CPU Utilisation: none

Wake Settings

These settings are really up to you. If you want to wake your computer using magic packets then enable these settings.

Wake computer on incoming connection.

Wake on Magic Packet

Wake computer on incoming magic packet.

Wake on Pattern Match

Wake computer on pattern match.