I was experiencing severe performance issues for ages and never could really pinpoint the source. CS:GO was pretty much unplayable because headshots were hardly ever registered as such even though I was 200% sure I nailed a headshot. And lately in Natural Selection 2 (NS2), attacking enemy and not getting the kills.
Someone from the NS2 dev team and a TAW NS2 clan member (TAW DCDarkling) suggested to check the game networking stats (you can usually enable it in most games by opening console menu in a game and using “net_stats 1” command to enable packet statistics) and they were off the charts. Big packet loss and a lot of out of order packets. And I figured out a rather simple solution without the need to change ISP as initially suggested by people 😛
I’m using Intel Pro LAN on my Sabertooth X99. And all I had to do to fix the issues was to change the advanced settings for it. I remember seeing the same/similar settings on Marvell and Realtek controllers so things are pretty similar.
The thing is, all these technologies/settings on network adapters ensure data transmission reliability at expense of increased delay. Which by itself is no problem for regular downloads, but very bad for online gaming. You can’t fix or change how game server behaves, but you can at least ensure client side (your system) is behaving as good as possible for gaming. I’ve seen a dramatic improvement, experience my vary depending on many other factors so don’t expect this guide to magically overcome old copper connections to your house or badly done internet wiring through your home…
Setting network card settings (Windows 8.1 and Windows 10)
Right click on Start button and select Device Manager. Look for Network adapters and double click it. Right click on a network adapter listed in this category and select Properties. Click on Advanced tab.
- Disable Adaptive Inter-Frame Spacing
- Disable all power saving settings (Green, Eco, Power Saving etc)
- Disable Flow Control
- Disable Interrupt Moderation
- Set Interrupt Moderation Rate to OFF
- Set Enable PME to DISABLED
- Disable all features with “Offload” in the name
- Disable Packet Priority & VLAN
- Disable Jumbo Packet
Most of options in this category ensure reliability, but cause delay in network traffic, resulting in game network data being late when it should have already been processed, meaning kills you were suppose to make in a game never happen in time, which is always bad.
- Set Receive Buffers and Transmit buffers to 96
Connection buffers are a different beast. In one way they help prevent data loss if data can’t be processed in time by your system, but having data in the buffers means it will have a delay again before it actually reaches the game engine (because it’s sitting in the buffers, waiting to get through). If you have a really fast system, using very low values will help reducing the delay because network adapter will be forced to “flush” them faster. With low end systems it may cause packet loss because network adapter will simply drop/reject packets that can’t be fit into the buffers. My Intel Pro LAN only goes as low as 80, but I know Realtek Gigabit LAN goes even below 32. If adapter allows even lower values, experiment with them.
- Set Receive Side Scaling (RSS) to ENABLED
- Set number of RSS Queues to a higher value value (2 in my case)
Receive Side Scaling (RSS) helps utilize multiple CPU cores in order to process received network packets faster and spread CPU utilization across many CPU cores. Having this enabled will ensure Receive and Transmit buffers will not get overflown by data, allowing you to have them set to a very low value. It may induce a slight DPC delay because multiple cores have to synchronize communication between each other, but I think faster processing in general helps more than slightly higher DPC delay penalizes it. RSS Queues number defines how many CPU cores will be utilized for network data processing. Value of 2 means 2 out of my 6 cores (Intel 5820K) will be used for networking. Checked the second Realtek LAN chip on my motherboard and it allows me to set up to 4 RSS queues.
After I’ve changed the settings, average received packet loss has dropped from 10-12% down to 0% (which is what you want at all times!). Out of Order value also dropped from ridiculous 480 down to like 9 or 12 after being in a game for several minutes. Which is acceptable though I’ll try to fiddle some more to make it even lower if possible.
I’ve also noticed my kill:death (kd) ratio has improved dramatically as well as less complaining over kills that didn’t happen even though they should have. So, try it, if you have horrible networking issues like I had, you can’t really make it worse lol 😉
Please note that I’m not an expert in networking, all the stuff described above is what I’ve learned from reading various networking documents and my past knowledge on how computers and networking works. If you have any corrections, please, tell us down below in comments section and I’ll update the info. I may also update this article in the future if I find any other game changing settings that improve things even further.