Here are settings useful to maximize performance of a hardware network interface. Virtual guests benefit by these being applied to their virtual host, only. Not all of these exist on every NIC. There are also many settings which should not be touched, or should be touched only when the toucher knows what they are doing! The below have always helped when this writer has found them available to try. Do be warned, the NIC will go offline for 2-10 seconds after you Apply most of these.
- Install the most current drivers for NICs and also motherboard chipset. In at least one case, the server vendor had only an outdated and unreliable driver available for download, the one which worked well for years came from Intel’s web site.
- “DMA Coalescing” on.
- “Enable PME” off.
- “Energy Efficient Ethernet” off.
- “Green Ethernet” off.
- “Gigabit Lite” off.
- “Adaptive Inter-Frame Spacing” on.
- All offloading on.
- “Interrupt Moderation” on.
- “Interrupt Moderation Rate” should be “Adaptive”.
- “Scaling”, should be “on” or “Enabled”.
- “Receive Side Scaling” on.
- “Receive Side Scaling Queues” to maximum.
- There are cache settings on all server-class NICs, 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 server NICs the defaults are usually 256 or 512, and the maximums are 2048; for a few other kinds, one or the other is 5000 or more; for others it is much less. Each descriptor takes 2K of RAM, which in today’s multigigabyte 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.
- 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 fixed through group policy.
- In SBS 2008, only one NIC (or one NIC team) is permitted to represent the server on the network. If there are two active NICs, you will have to turn one off, or crashes and unpredictable behavior will result sooner or later.
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:
- Turn “Adaptive Inter-Frame Spacing” on.
- Turn “Enable PME” off.
- For flow control, “Off” is preferred, but some network architectures rather rare today will only function properly with it on.
- Interrupt Moderation should be on, Interrupt Moderation Rate should be Adaptive.
- Turn all offloading on.
- 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.
- Turn “Scaling”, to “on” or “Enabled”. Sometimes this is called “Receive Side Scaling”.
- “Receive Side Scaling Queues”, or “Queues”, or anything close. Set this to maximum. It’s usually one per CPU core.
- 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.
- 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.
- 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.
The Intel network interface card is a great piece of hardware. However, if its driver is not complete and/or not up to date, the whole PC or server in which it exists often will exhibit poor performance, hesitations, and web-site and LAN connection problems of many sorts. After this driver work is done, it’s a great idea to set it up for performance, but it is best to do the driver first.
First of all, here’s how to check if the driver is likely good — not necessarily up to date, but still likely to be good, and possibly not to be updated given the time and effort and onsite hands needed. Go to Device Manager, go to the properties of the NIC object, and pull up the Advanced tab. You should see something very like this:
Note how the Settings list is fully populated, no blank space visible. If you see any blank space in that box, you are looking at a common problem situation. A great many PCs and some servers shipped by at least two major vendors, for many years, have been shipped with incomplete Intel NIC drivers. These drivers you really do want to replace ASAP with the most recent ones. In at least a few cases I have seen, the hardware vendor didn’t include any update on its web site; thus far, in every case, the download from Intel made things work far better.
At least one major vendor uses Intel NICs but places its own name in Device Manager, and thus far when tested the Intel downloads have worked just fine, and in one server, improved things tremendously.
There is also a circumstance where an Intel NIC has a reasonably recent driver, but the monitoring application’s add-ins are not installed or not working or not visible. Sometimes this occurs due to an unusual terminal server setup. It looks like this:
There are some Intel NICs, older ones, for which updates don’t exist for Microsoft’s newest operating systems. In this case, the screenshot immediately above will pertain, and this means the driver is as good as it will get.
But in most cases we have good work to do. Below are my steps for driver issues and updates.
If this is a server, this should be done in person or with BIOS-level GUI remote control, this is fairly radical change; you need to turn off server offerings while you’re doing this, and networking is temporarily halted twice during the actual successful install. For workstations, in-person may not be required, but hands onsite of some helpful kind are essential.
- Whether or not the driver you’re seeing is incomplete, definitely the first step is to replace it with the current. Intel releases more NIC driver updates than any other vendor I have studied, and at least subjectively each update seems to bring improvement.
- Finding the most recent driver is simple but not always obvious. If your OS is 32-bit, search the Intel web site for ‘Prowin32’. If your OS is 64-bit, search for ‘Prowinx64’ (remember the X). Itanium drivers still exist for download, these can be found by searching for ‘Prowin64’ (no X). There are usually downloads for older operating systems yet, these will indicate more complex searches.
- But you may not be able to update the driver. This is especially true on almost all PCs from one major vendor, and has been seen on others as well. This is the case when you see something like “This version of X is not supported for updates”, when you try to run the download. In some of these cases, you can remove the Intel monitoring application but leave the driver, as a Change in the Programs and Features applet in the Control Panel. If you can do this, the next time you run the update and install it will go fine, and it will install a version of the monitoring application which will update next time. But lately I have been seeing cases like this where one can either remove the driver and everything, or nothing.
- If the driver will not update and you cannot remove just the application, you should probably either be working onsite or have hands onsite which are comfortable traversing Explorer to the location in which you saved the update installer. You should then completely remove the OEM Intel NIC item in Programs and Features, and then run the update installer. In one remote case recently, after removal, Windows automatically searched for and found a working NIC driver, before the hands onsite had completed traversing in Explorer; but I am not certain this can be relied on in all cases.
Here is a tool which lets you find vendor name by MAC address, or MAC address by vendor name:
And another which just identifies vendors by MAC addresses.
Saw this for the first time; on a Windows 7 laptop, all network devices except two, were yellow-flagged, and in their properties it said code 31, which means not able to load the driver files. In this condition, I found that I could not uninstall any network objects in Device Manager: it permitted me to do so, but immediately after the deletion was done, the objects remained.
I googled it a lot, found zero of real use, except the underlying pattern that apparently one very badly-behaved network driver or virtual device, can hose the whole Windows 7 networking stack in this very way.
In this case, there was a certain high-profile vendor’s VPN client installed, and it was this vendor’s items which were not yellow-flagged, but instead, were marked disabled. So I focussed on that, deleted the .sys file involved, and deleted every registry entry for them also, in safe mode, excepting only the LEGACY entries which I could not get permission to delete, even running regedit as administrator. No change: the objects remained after reboot.
I then tried System Restore, and took the OS back to the point before the issue began to occur. This had a very positive result; networking came back. The VPN client will need reinstalling, but I will update the machine all the way as next step, and then install the latest version of the VPN client.
JEB’s Network Interface Checklist
version 2.4, 2/3/2011
- Any changes to NIC configuration may cause the network interface to cease connecting for a little while. If it’s a server, this counts as “server down” for at least a few minutes. Occasionally, if a driver is old or the machine has not been rebooted in a long time, a reboot may be necessary for the NIC to work again after certain changes are made. It is generally best to not make changes unless there are performance issues or specific concerns about network behavior — but without these changes, overall performance often goes down more than 50%.
- Install the most current drivers. If the NIC is Intel or Broadcom, install the driver downloaded from Intel or Broadcom, not from Dell or other third-party packager. Often a third-party packager will have separated the application (e.g., “Intel PROset Application”) from the driver (“Intel PROset Driver”); in such a case, the application needs to be removed before the update installation begins. For Intel drivers, the fastest route for the download is to go to http://downloadcenter.intel.com, search for “prowin32”, and click the link with the latest version (15.1.1 at this writing). The link will take you to a page with both 32-bit and 64-bit drivers.
- For Server 2000, Server 2003, and XP, turn all offloading off. This is actually a requirement, not just a recommendation, discussed in certain Microsoft reference materials. In one case in the recent past, SBS simply failed to serve file or print to any workstation, unless this was done; in all cases thus far there has been an increase in general network reliability and performance when this is done. On Intel NICs, this is often under “Performance Options”.
- For Server 2008, Server 2008R2, Vista, and Windows 7, turn all offloading on.
- For anything including “Scaling”, set it to “off” or “Disabled”, for 2000, XP, or Server 2003. This is another Microsoft essential. There is a pack which is included in 2003SP2 which is said to make “Scaling” help, but it does not always help.
- For flow control, “Respond Only” (or “Rx Enabled”) is preferred, but if this is not available, set it to “On”. This is not the same as “Rx Enabled” or “TX Enabled” under offloading!
- For Receive Descriptors and Transmit Descriptors on most NICs, set them to the maximum, unless the server is desperately low on RAM. For some the maximums are 2048, for some one or the other is 5000, for others it is much less. Each descriptor takes 2K of RAM. Some Broadcom gigabit NICs will yellow-flag if they are set to 2048; for these, set receive to 750, transmit to 1500.
- For Adaptive Inter-frame Spacing, set it to “on” or “Enabled”.
- In the NIC’s “Power Management” tab, turn everything off. This may have to be modified if Wake-On-LAN is used.
- In Server 2008, only one NIC (or one NIC team) is permitted to represent the server on the network. If there are two active NICs, you will have to turn one off, or crashes and unpredictable behavior will result sooner or later.
- In Server 2008, IPv6 must be turned on, and not deleted. It does not have to be configured, but it must be turned on.
- It is very much preferable, for Server 2008 and most especially for SBS 2008, for a working IPv6 subnet to be configured, even if the server(s) are the only devices which are able to use IPv6.
If you have a Broadcom NIC listed for use with “Broadcom Advanced Control Suite 3”, you can team both Broadcom and Intel NICs. Only catch: you will need one static IP on your LAN for each.
This one comes from the excellent David Childers.
When you start up nslookup in a command prompt, there’s a way to get some very good additional information.
C:\Documents and Settings\davidc>nslookup -d2
SendRequest(), len 41
opcode = QUERY, id = 1, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
184.108.40.206.in-addr.arpa, type = PTR, class = IN
Got answer (78 bytes):
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0
220.127.116.11.in-addr.arpa, type = PTR, class = IN
type = PTR, class = IN, dlen = 25
name = ***-***.********.local
ttl = 1200 (20 mins)
Default Server: ***-***.********.local
As you can see, by using the command nslookup -d2, the entirety of the conversation that nslookup is having with the DNS server is displayed.
If you believe that nslookup has locked up or died, you will be able to see the timeouts occurring as it waits for response from the DNS server.
I hope that helps!