The Broadband Guide
SG
search advanced
 Username:
 Password:
Register
 forgot password?

Gaming Tweaks

Tweaks to optimize Windows for low latency online gaming
2014-04-01 (updated: 2016-05-24) by
Tags: , ,

Online Gaming can often benefit from some fine-tuning of Windows TCP/IP settings and the Network Adapter properties. This article is intended to supplement our general broadband tweaks and list only TCP/IP settings that are specific to online gaming and reducing network latency. Some of these settings are also mentioned in our general tweaking articles, however, the emphasis here is on latency rather than throughput, and we have complemented the tweaks with more gaming-specific recommendations and settings that give priority to multimedia/gaming traffic, and may be outside of the scope of other broadband tweaks that focus on pure throughput.

Some proficiency in using Command Prompt/PowerShell and editing the Windows Registry is expected. The Windows Registry can be accessed from the Start/Windows button -> type: regedit. Backing up your Registry before any edits is highly recommended, as mistakes can cause serious issues for the operating system.


Disable Nagle's Algorithm

This tweak works with all versions of Windows from Windows XP to Windows 8.1/10/2012 server. This is the same as listed in our general tweaking articles per OS.

Nagle's algorithm is designed to allow several small packets to be combined together into a single, larger packet for more efficient transmissions. While this improves throughput efficiency and reduces TCP/IP header overhead, it also briefly delays transmission of small packets. Disabling "nagling" can help reduce latency/ping in some games. Keep in mind that disabling Nagle's algorithm may also have some negative effect on file transfers. Nagle's algorithm is enabled in Windows by default. To implement this tweak and disable Nagle's algorithm, modify the following registry keys.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}
There will be multiple NIC interfaces listed there, for example: {1660430C-B14A-4AC2-8F83-B653E83E8297}. Find the correct one with your IP address listed. Under this {NIC-id} key, create a new DWORD value:
"TcpAckFrequency"=1 (DWORD value, not present by default interpreted as 2, 1=disable nagling, specifies number of outstanding ACKs before ignoring delayed ACK timer). For gaming performance, recommended is 1 (disable). For pure throughput and data streaming, you can experiment with small values over 2. Wifi performance may see a slight improvement with disabled TcpAckFrequency as well.

In the same location, add a new DWORD value:
TCPNoDelay=1 (DWORD, not present by default, 0 to enable Nagle's algorithm, 1 to disable)

To configure the ACK interval timeout (only has effect if nagling is enabled), find the following key:
TcpDelAckTicks=0  (DWORD value, not present by default interpreted as 2, 0=disable nagling, 1-6=100-600 ms). Note you can also set this to 1 to reduce the nagle effect from the default of 200ms without disabling it.

For Server Operating Systems that have Microsoft Message Queuing (MSMQ) installed, or if you have the MSMQ registry hive present, also add TCPNoDelay to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
TCPNoDelay=1 (DWORD, not present by default, 0 to enable Nagle's algorithm, 1 to disable)

Note: Reportedly, disabling Nagle's algorithm can reduce the latency in many MMOs like Diablo III and WoW (World of Warcraft) by almost half! Yes, it works with Windows 7 and Windows 8.


Network Throttling Index Gaming Tweak

Works with all current versions of Windows from Vista to 8.1/10/2012 Server.

Windows implements a network throttling mechanism to restrict the processing of non-multimedia network traffic to 10 packets per millisecond (a bit over 100 Mbits/second). The idea behind such throttling is that processing of network packets can be a resource-intensive task, and it may need to be throttled to give prioritized CPU access to multimedia programs. In some cases, such as Gigabit networks and some online games, for example, it is beneficial to turn off such throttling all together for achieving maximum throughput.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"NetworkThrottlingIndex"=dword:ffffffff (DWORD, default: 10, recommended: 10 for media sharing, ffffffff for gaming and max throughput, valid range: 1 through 70 decimal or ffffffff to completely disable throttling)

It is only recommended to change this setting in saturated Gigabit LAN environments, where you do not want to give priority to multimedia playback. Reportedly, disabling throttling by using ffffffff can also help reduce ping spikes in some online games. Games that may be affected by this throttling: Source Engine games (TF2, Left 4 Dead, CS:S), HoN, CoD, Overlord series.


System Responsiveness Gaming Tweak

Exists in all versions of Windows from Vista to 8.1/10/2012 Server.

Multimedia applications use the "Multimedia Class Scheduler" service (MMCSS) to ensure prioritized access to CPU resources, without denying CPU resources to lower-priority background applications. This reserves 20% of CPU by default for background processes, your multimedia streaming and some games can only utilize up to 80% of the CPU. This setting, in combination with the "NetworkThrottlingIndex" can help some games and video streaming. We recommend reducing the reserved CPU for background processes from the default of 20%.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"SystemResponsiveness"=dword:00000000  (default: 20, recommended: decimal 10 for general applications, 0 for pure gaming/streaming)

Note: In Server operating systems (Windows 2008/2012 Server), SystemResponsiveness is set to 100 by default, denoting that background services should take priority over any multimedia applications.


More Gaming Tweaks

This section includes gaming-specific tweaks not listed in our general tweaking articles (and not implemented by the TCP Optimizer).

In the same Registry hive as the above two tweaks, you can also change the priority of Games, compared to other types of traffic. These tweaks only affect games that communicate with e Multimedia Class Scheduler Service (MMCSS). Below is a list of the settings and default/recommended values:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games]
"Affinity"=dword:00000000  (DWORD, default: 0, recommended: 0. Both 0x00 and 0xFFFFFFFF indicate that processor affinity is not used)
"Background Only"="False"   (REG_SZ, default: "False", recommended: "False", possible values are True or False). Indicates whether this is a background task.
"Clock Rate"=dword:00002710  (DWORD, default: 2710, recommended: 2710). The maximum guaranteed clock rate the system uses if a thread joins disk task, in 100-nanosecond intervals.
"GPU Priority"=dword:00000008  (DWORD, default: 2, recommended: 8. range: 0-31). The GPU priority. Not used in Windows XP and 2003.
"Priority"=dword:00000002   (DWORD, default: 2, recommended: leave alone if using "Scheduling Category" below, set to 6 otherwise for gaming, possible values are 1-8). The task priority, ranging from 1(low) to 8(high). Note  for tasks with Scheduling Category of "High", this value is always treated as 2.
"Scheduling Category"="High"   (REG_SZ, default: "Medium", recommended: "High". possible values: Low, Medium, High)
"SFIO Priority"="High"  (REG_SZ, default: "Normal", recommended: "High") The scheduled I/O priority, possible values are Idle, Low, Normal, or High.


Reference: Multimedia Class Scheduler Service



ECN Capability

ECN (Explicit Congestion Notification, RFC 3168) is a mechanism that provides routers with an alternate method of communicating network congestion. It is aimed to decrease retransmissions. In essence, ECN assumes that the cause of any packet loss is router congestion. It allows routers experiencing congestion to mark packets and allow clients to automatically lower their transfer rate to prevent further packet loss. Traditionally, TCP/IP networks signal congestion by dropping packets. When ECN is successfully negotiated, an ECN-aware router may set a bit in the IP header (in the DiffServ field) instead of dropping a packet in order to signal congestion. The receiver echoes the congestion indication to the sender, which must react as though a packet drop were detected. ECN is disabled by default in modern Windows TCP/IP implementations, as it is possible that it may cause problems with some outdated routers that drop packets with the ECN bit set, rather than ignoring the bit.

Possible settings are: enabled, disabled, default (restores the state to the system default).
Default state: disabled

Recommendation: "enabled" only for short-lived, interactive connections and HTTP requests with routers that support it, in the presence of congestion/packet loss, "disabled" otherwise (for pure bulk throughput with large TCP Window, no regular congestion/packet loss, or outdated routers without ECN support).

To change using netsh:

netsh int tcp set global ecncapability=enabled
(alternative syntax:  netsh int tcp set global ecn=enabled)

To change using PowerShell cmdlets in Windows 8.1/2012 Server R2 :

Set-NetTCPSetting -SettingName InternetCustom -EcnCapability Disabled
(for Windows 8/2012, the name of the template in the above command is "Custom" instead of "InternetCustom")

Notes:

ECN is only effective in combination with AQM (Active Queue Management) router policy. It has more noticeable effect on performance with interactive connections, online games, and HTTP requests, in the presence of router congestion/packet loss. Its effect on bulk throughput with large TCP Window are less clear. Currently, we only recommend enabling this setting in the presence of packet loss, with some ECN-capable routers, after testing that it does not interfere with your connection. The setting may also have negative impact on throughput with some residential US ISPs. EA multiplayer games that require a profile logon do not support ECN (you will not be able to logon). However, it can also reduce latency in some games with ECN-capable routers in the presence of packet loss (dropped packets).

See also: Wikipedia - ECN, RFC 3168


Disable Receive Segment Coalescing State (RSC)

This is applicable to Windows 8/10/2012 Server, not available for earlier Windows versions.

Receive Segment Coalescing (RSC) allows the NIC to coalesce multiple TCP/IP packets that arrive within a single interrupt into a single larger packet (up to 64KB) so that the network stack has to process fewer headers, resulting in 10% to 30% reduction in I/O overhead depending on the workload, thereby improving throughput. Receive Segment Coalescing (RCS) is able to collect packets that are received during the same interrupt cycle and put them together so that they can be more efficiently delivered to the network stack. While this reduces CPU utilization and improves thorughput, it can also have a negative impact on latency. That is why we recommend you disable it where latency is more important than throughput.

Possible states: enabled, disabled, default. Default state: disabled
Recommended: disabled for pure gaming latency, enabled for better throughput.
To enable using netsh:

netsh int tcp set global rsc=disabled

To change using PowerShell cmdlets:

Disable-NetAdapterRsc -Name *  (use to disable RSC for all adapters)
Enable-NetAdapterRsc -Name *  (use to enables RSC for all adapters that support it)
Get-NetAdapterRsc -Name *       (use to view adapters that support RSC)

Notes: Only supported by some network adapters. May need "Checksum Offload" enabled as well to work.


Disable Large Send Offload (LSO)

Windows 8/10/2012 Server, not available in earlier Windows versions

Large Send Offload lets the network adapter hardware to complete data segmentation, rather than the OS. Theoretically, this feature may improve transmission performance, and reduce CPU load. The problem with this setting is buggy implementation on many levels, including Network Adapter Drivers. Intel and Broadcom drivers are known to have this enabled by default, and may have many issues with it. In addition, in general any additional processing by the network adapter can introduce some latency which is exactly what we are trying to avoid when tweaking for gaming performance. We recommend disabling LSO at both the Network Adapter properties, and at the OS level with the setting below.

Default: adapter-dependent
Recommended: disable (both in network adapter properties and in the TCP/IP stack at the OS level)

Disable-NetAdapterLso -Name *    (disable LSO for all visible network adapters)
Enable-NetAdapterLso -Name *    (to enable LSO for both IPv4 and IPv6 on all network adapters, not recommended)
Get-NetAdapterLso -Name *  (get a list of network adapters that support LSO)

Notes: Default state is network adapter dependent. Needs Checksum Offload to be enabled to work.


Advanced Concepts

Disable Coalescing: Some network adapters support advanced settings, such as DMA Coalescing, DCA Coalescing, Receive Segment Coalescing (RSC). In general, any type of packet or memory coalescing can reduce CPU utilization (also power consumption) and increases throughput, as it allows the network adapter to combine multiple packets, however, coalescing can also have negative impact on latency, especially with more aggressive settings. That is why it should be either disabled, or used very conservatively for gaming.  Any type of network adapter packet/memory coalescing allows the NIC to collect packets before it interacts with other hardware. This may increase network latency. For gaming, disable "DMA coalescing" and "Receive Side Coalescing State (RSC)", where applicable.

NetDMA: This setting needs to be supported by the NIC, BIOS, and CPU (Intel I/O Acceleration Technology - I/OAT). It allows the network adapter direct memory access (DMA), theoretically reducing CPU usage. It is ok to enable for OSes that support it (according to Microsoft it is no longer supported in Windows 8/10). Note that NetDMA is not compatible with TCP Chimney Offload (Chimney offload should be disabled for gaming anyway).

TCP Offloading: TCP Offloads can improve throughput in general, however, they've been plagued by driver issues in the past, and, they also put more strain on the network adapter. For pure gaming, disable any TCP Offloads, such as "Large Send Offload (LSO)", for example. For pure gaming and lowest possible latency, the only safe offload that should be left to the network adapter is "Checksum Offload".

Disable Interrupt Moderation: If your Network Adapter supports this setting, it should be disabled for the lowest possible latency (at the expense of a bit higher CPU utilization).

For some of those settings specific to your OS, see our tweaking articles. To disable at the network adapter, see our Network Adapter Optimization article.


Router Settings

Most broadband users have some type of NAT router that sits between them and the internet. There are some settings that may help your router better prioritize gaming traffic and improve gaming experience.

Enable upstream QoS in your router. It may be useful to enable upstream QoS at the router, if available, to prioritize the different types of traffic. Upstream QoS is important, because typically residential connections have much lower upstream cap, and when upstream bandwidth is all utilized, it can introduce some delay in the downstream traffic as well. Note this is only recommended for newer routers, where the router has ample computing power to handle the QoS overhead.

Enable WMM if using Wi-Fi. If you must use Wi-Fi, enable WMM, and try to avoid USB Wi-Fi adapters.

Use Open Source Firmware. Many NAT router models support open source firmware, such as dd-wrt, Tomato, etc. If your router's default firmware does not support advanced functionality that you may need (QoS, WMM, VLANs, etc.), you may be able to flash dd-wrt instead. It is not uncommon for open source firmware to make your connection more stable and reduce router overhead/delay.

Enable CTF (Cut Through Forwarding) - CTF is Broadcom proprietary NAT acceleration. It is a software module that allows routers based on their hardware/firmware to achieve near-gigabit performance and lower CPU utilization through various methods, including bypassing parts of the Linux stack. It is a great feature to use, however there is a catch - it is only available when not using certain other incompatible features that need the Linux functionality (like QoS). You'd have to pick which feature you prefer by testing. In our experience CTF performs better, as the lower CPU/memory utilization and minimal processing trumps QoS in both throughput and latency.

TCP/UDP Timeouts - tweaking the TCP/UDP timeouts can have a noticeable impact on your connection by freeing up resources for active connections. Some of the more advanced router firmwares (Tomato, ASUS Merlin, dd-wrt) have a number of tweakable timeout settings that we've already covered in our Wireless Network Speed Tweaks article linked below.

Note: If using dd-wrt, or on Wi-Fi, check our wireless network speed tweaks, some of the advanced router settings are applicable to wired connections as well.


General Online Gaming Recommendations

  • Use brand-name, wired Ethernet cards when possible - avoid Wi-Fi, especially with USB client adapters.
  • When tweaking TCP/IP (using our general tweaking articles), enable CTCP, enable DCA, and try disabling most "TCP Offloading" settings, with the exception of "Checksum Offload" in both the OS and the Network Adapter Properties.
  • Disable "Flow Control" and "Interrupt Moderation" in your Network adapter properties
  • Disable TCP/IPv6 in Network adapter properties if not using IPv6
  • Reduce the number of background processes, enable QoS at your router and give priority to your traffic.
  • Test your latency to game servers using "tracert" in Command Prompt (or PowerShell).
  • Disable search indexing on your SSD/hard drive (right-click on drive in Explorer -> choose "Properties" -> untick "Allow files on this drive to have contents indexed..." and wait a few minutes, ignore errors for system-protected files)


Notes
Latency can sometimes be reduced by using a VPN provider. Many ISPs provide fast/reliable internet locally between you and their servers, however lack in both speed in latency when it comes to their peering arrangements and backbones for longer distance connections. In such situations, a local to you VPN provider may allow you to avoid the ISP bottleneck by providing a lower latency connection.

Some of the tweaks in our general broadband tweaks articles can benefit gaming as well, like disabling "Windows Scaling Heuristics", disabling TCP 1323 Timestamps to reduce the TCP headers overhead, etc.

Most of the Registry tweaks above (with the exception of "More Gaming Tweaks") can be applied easily by using the TCP Optimizer


See Also

Wireless Network Speed Tweaks - some of the router recommendations apply to wired networks and gaming as well.
Network Adapter Optimization - tweaking your NIC settings can help improve your connection.



We appreciate any feedback and always listen to user suggestions.

  User Reviews/Comments:
    rate:
   avg:
by Nuck Chorris - 2015-05-29 00:32
Is TCP Chimney Offload affect the gaming perfomance?
by Philip - 2015-06-24 21:35
There used to be some issues with TCP Chimney Offload and buggy drivers with older OSes (Windows 2003 Server), however, support has improved over time. You can leave it on as it helps reduce network CPU overhead, and it is needed for some other offloads to work. However, if you're experiencing connectivity issues, or using old network adapter drivers it may be worth to test with it off as well.
by Nuck Chorris - 2015-06-30 02:28
Thank you, I've one more question:

I found some in internet for Counter-Strike
* Run regedit and go to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi ces\Audiosrv"
* Double click on the entry "DependOnService" and delete the line with "MMCSS" from the text box
* Stop and disable the "Multimedia Class Scheduler" service
* Reboot and enjoy lag free games

How do you think is it good or bad for game perfomance?
by Philip - 2015-06-30 09:38
I wouldn't do that... Removing the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AudioSrv\DependOnService will stop three different services under Windows 7:
AudioEndpointBuilder (Windows Audio Endpoint Builder)
RpcSs (Plug and Play)
MMCSS (Multimedia Class Scheduler)

If you'd like to experiment, just stop any of those services one by one (set to start manually) in the Control Panel -> System and Security -> Administrative Tools -> Services

Alternatively, use the gaming tweaks with the TCP Optimizer (Advanced tab), they will have a very similar effect, mainly to do with Multimedia Class Scheduler.

If you must edit that registry key, back it up, just remove services one by one, reboot, and make sure you don't get errors in the log like:

Error 1068: The dependency service or group failed to start..
, or "This computer cannot play audio because the Windows Audio Service is not enabled...", or "The Audio Service is not running", or "There are no supported audio devices available".

If anything would help, it is just stopping MMCSS, and only if you have not used the Optimizer gaming tweaks already.
by defter - 2015-09-16 23:33
would "Disable-NetAdapterLso -Name Ethernet" (Ethernet being the name of my connection) be the correct command to type in to powershell?

or is it "Disable-NetAdapterLso -Ethernet"?
by Philip - 2015-09-17 07:47
Disable-NetAdapterLso -Name * -- this command disables it for all network adapters in the machine (" * " being a wildcard).

Disable-NetAdapterLso -Name Ethernet -- this is the correct syntax to disable LSO for the "Ethernet" named adapter only.
by defter - 2015-09-17 15:36
ah ok, thank you for clearing that up, appreciate it :)

also, i was wondering if the registry changes under "More Gaming Tweaks" were worth it; the reason i ask is because i tried to look up a list of games that used MMCSS but, had no luck finding any solid information.
by Philip - 2015-09-17 17:26
Those additional changes are only used by a smaller subset of games that use MCSS, so it is up to you do make that decision. They wouldn't hurt if you implement them, however, they will only help with such games.
by defter - 2015-09-19 09:34
ah ok, thanks for the response, it's very much appreciated! :)
by igatrinitt - 2015-09-19 19:04
How changing the options of your TCP stack makes your "gaming experience better", exactly? You do know that all realtime traffic is transfered inside UDP, right?
by Philip - 2015-09-19 20:09
Actually, most games use both TCP and UDP. Character movement and other communication that does not have to be reliable (no issue if a frame or two are lost) can be sent using UDP, but other communications are sent using TCP.

Most RTS games, and all Blizzard games afaik (including World of Warcraft, StarCraft II, etc.) use TCP exclusively.

Also, some of the tweaks apply to both protocols as well.
by igatrinit - 2015-09-20 07:03
Ok, that is just not true. Not a single game that requiers realtime responsivness would be run upon TCP. Simply because, at best, TCP has nothing to offer for that kind of traffic, and at worst, it makes the realtime experience bad. I mean yea, some information might be transfered via TCP, like the Shop or the News page in the game client, or the stats, maybe, but not the information that needs to be delivered immediately, like your input commands in the actual game. Especially in the games like SC2, which is played competitively, and WOW, which is just huge.

I don't have any of those games installed, but if you have, you can run a packet capturer whilst playing them, and I'm pretty sure you'll see UDP conversations. Yet again, I acknowledge some info is transfered via TCP, but that is the info you have to worry about being delivired at all, not being delivered fast. At the end of the day, all that TCP tweaking does is messing with the non-gaming traffic.
by Philip - 2015-09-20 09:45
Like I said:
1) Some of the tweaks affect both UDP and TCP
2) Many games, (RPGs and MMORPGS as well) use exclusively TCP, including WoW (that you quoted!), TERA, Guild Wars, all Flash games, etc.
by igatrinit - 2015-09-20 16:24
Ok first off, I only have a problem with the "Disable Nagle's Algorithm" part, I'm not saying the whole article is wrong. Secondly, I've read up on this, and you're right that some online games, including WoW and SC2, use TCP. BUT, it works mostly for games with position independent mechanics (like said WoW), and doesn't really work for non-traget games (like most shooters, e,g, GS:GO, CoD). And that's why you really should add this info, because right now your post is misleading and might be causing more harm than good in lots of cases.

For the fact that most games use both TCP and UDP, as I've said, if you take CS:GO, it won't use TCP for transfereing your input command to the server, it will only use it for delivering some banners and tracking stats and stuff like that, so tweaking the TCP stack won't make any difference for your gaming experience.
by Mav - 2015-11-09 18:22
.... Guys .... this TCP don´t affect UDP is BS.... one word u all should know is IP

however data is transfering over TCP or UDP .... the main protocol which tranfers the data is IP

without IP - TCP wouldn´t find it´s Destination and also UDP wouldn´t find it´s destination. Know take ur half-truth and go google and search for IP protocol! U will find some interesting fact´s like the MTU is part of the IP header, not UDP or TCP.

so some tweaks here are valid for booth, TCP and UDP.

there is no lonely TCP or UDP!

its all of the time TCP/IP or UDP/IP
by Nuck Chorris - 2015-12-18 11:05
Hello, I'm find is PowerShell a command "Get-NetOffloadGlobalSetting" and is show that "PacketCoalescingFilter Enabled". This setting affects the games? Is it working without "ReceiveSegmentCoalescing"?
by tobiaslk - 2016-01-30 11:48
Hello would disabling nagle's algorithm help for cs:go or lol?
by tobiaslk - 2016-01-30 12:05
Also it seems like my msmq folder is empty. What should I do?
by Beware - 2016-02-11 20:47
No, don't mess with these settings if you are playing CS; the game uses UDP
by CuriousMan - 2016-07-06 00:26
What are the disadvantages of the GPU Priority set to 31?
by Philip - 2016-07-06 01:55
Setting the GPU priority too high may take away resources from other important processes you need for online gaming, i.e. networking, etc.
comment print discuss top
News Glossary of Terms FAQs Polls Cool Links SpeedGuide Teams SG Premium Services SG Gear Store
Registry Tweaks Broadband Tools Downloads/Patches Broadband Hardware SG Ports Database Security Default Passwords User Stories
Broadband Routers Wireless Firewalls / VPNs Software Hardware User Reviews
Broadband Security Editorials General User Articles Quick Reference
Broadband Forums General Discussions
Advertising Awards Link to us Server Statistics Helping SG About