Gaming TweaksTweaks to optimize Windows for low latency online gaming
2014-04-01 (updated: 2018-03-27) by Philip
Tags: gaming, mmo, tweaks
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.
In the same location, add a new DWORD value:
To configure the ACK interval timeout (only has effect if nagling is enabled), find the following key:
For Server Operating Systems that have Microsoft Message Queuing (MSMQ) installed, or if you have the MSMQ registry hive present, also add TCPNoDelay to:
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.
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%.
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.
Turn off LargeSystemCache
For local network large file transfers, this registry settings allows for better throughput and eliminates some file sharing event log errors (Event ID 2017 error). However, reportedly it has issues with some ATI Video card drivers and certain applications performance. Therefore we recommend turning it off (set to zero) for gaming.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
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:
Reference: Multimedia Class Scheduler Service
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).
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
To change using PowerShell cmdlets in Windows 8.1/2012 Server R2 :
Set-NetTCPSetting -SettingName InternetCustom -EcnCapability Disabled
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
netsh int tcp set global rsc=disabled
To change using PowerShell cmdlets:
Disable-NetAdapterRsc -Name * (use to disable RSC for all adapters)
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.
Disable-NetAdapterLso -Name * (disable LSO for all visible network adapters)
Notes: Default state is network adapter dependent. Needs Checksum Offload to be enabled to work.
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.
Use adequate Send/Receive buffers: low send/receive buffers values conserve a bit of memory, however they can result in dropped packets and decreased performance if exhausted, so they shouldn't be set to values less than 256 in general. Higher-end NICS/systems can increase the values a bit to 512, or up to 1024.