Set Up Your NIC for Performance

article #749, updated 2995 days ago

When configuring a NIC for performance, it is very important first to bring the driver up to date; there are special needs in this area for Intel NICs. It will usually do quite a lot of good to bring a NIC driver up to date, if it’s not. In order to do a whole lot more good, after drivers are as good and as up to date as possible, please continue below!

These settings apply to hardware NICs only. There have been warnings posted by Microsoft against changing settings against virtual NICs. Concerning virtual machines, it is the host’s NICs which should be optimized as much as possible.

It may also be worthwhile to note, that several more steps were best and strongly recommended by Microsoft, differently and changing over time, in different versions of Windows before Vista/2008. The below are very good for Vista/2008 and thenceforth.

To continue. Some of the items below are in an “Advanced” tab and then “Performance” category in some manufacturers’ NIC properties, the location varies. Some of them may not be present in any given NIC. But except for a very few, most of the items below will be represented, and if you have one of those few you might think about an upgrade to a nice juicy Intel server-class PCIe NIC:

  1. Turn “Adaptive Inter-Frame Spacing” on.
  2. Turn “Enable PME” off.
  3. For flow control, “Off” is preferred, but some network architectures rather rare today will only function properly with it on.
  4. Interrupt Moderation should be on, Interrupt Moderation Rate should be Adaptive.
  5. Turn all offloading on.
  6. There are cache settings on almost all NICs these days, separate for send and receive. They are usually called “Receive Buffers” and “Transmit Buffers”, or “Receive Descriptors” and “Transmit Descriptors”. Set them to the maximum. For current Intel NICs the defaults are usually 256 or 512, and the maximums are 2048; for a few others, one or the other is 5000 or more; for others it is much less. Each descriptor takes 2K of RAM, which in today’s world is well worthwhile. Some older Broadcom gigabit NICs will yellow-flag if they are set to 2048; for these, set receive to 750, transmit to 1500.
  7. Turn “Scaling”, to “on” or “Enabled”. Sometimes this is called “Receive Side Scaling”.
  8. “Receive Side Scaling Queues”, or “Queues”, or anything close. Set this to maximum. It’s usually one per CPU core.
  9. Turn “Green Ethernet”, “Smart Power Down”, “Reduce Speed On Power Down”, “Energy Efficient Ethernet”, all off. Some of these may be in the Power Management tab, some not.
  10. In the NIC’s “Power Management” tab, turn everything off. This may have to be abridged if Wake-On-LAN is used. Some NICs, notably some Realtek, will automatically turn power management back on at boot; this needs to be locked in place through group policy.
  11. In SBS 2008, only one NIC (or one NIC team) is permitted to represent the server on the network. If there are two active separated NICs, you will have to turn one off, or crashes and unpredictable behavior will result sooner or later.