Windows Insider
Speed Up Terminal Server
Streamline your Terminal Services for Windows 2003 with these Registry tweaks.
- By Greg Shields
- 06/01/2006
Ever yearn for the good old days, back before Terminal Services? When managing
a server meant a trip to the data center -- and occasionally catching a quick nap
in its dark recesses? Back when traveling to a remote job site or conference
guaranteed a few days of hiding from your real job?
Terminal Services changed all that, bringing the office to any location with a reasonable Internet connection. Terminal Server has become a critical component of many networks, and keeping it running at peak performance is crucial.
Doug Brown is President and CTO of DABCC Inc., a company that specializes in
consulting and services for Citrix and Terminal Services implementations. He
also wrote the popular "Methodology
in a Box" (MIAB), a free document that guides the neophyte from project
planning all the way through to the final configuration tweaks of a Terminal
Server or Citrix deployment.
Doug was willing to share some of the most useful optimization tips. Some of these Registry tweaks have been around for a while, but others are new to Windows Server 2003. All are designed to streamline your Terminal Server resources.
Here are a few that specifically improve the performance of Terminal Services on Windows 2003. Remember that as with any modifications to your system's Registry, test everything thoroughly before you implement.
Eliminate IE Flickering: Configure this setting to force off-screen composition
of Internet Explorer, which eliminates the flickering effect. In HKEY_ CURRENT_USER\Software\Microsoft\Internet
Explorer\Main, set the DWORD value for Force Offscreen Composition to 1.
Disable Office 2003 Customer Experience Improvement Program: Configure
this setting to prevent Office from prompting the user to participate in this
program. To enable, in HKEY_ CURRENT_USER\Software\Microsoft\Office\Common,
set the DWORD value for QMEnable to 1.
Disable File Locking: Configure this setting to modify the file locking
behavior on the server. This will enhance performance, but it's known to have
issues with some database applications. To enable, in HKEY_LOCAL_ MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters,
set the DWORD value for UseLockReadUnlock to 1.
Disable NTFS Last-Accessed Time Stamping: Configure this setting to
prevent the system from updating the last accessed time stamp on files, which
can enhance performance. Some applications require this to be accurate, so test
prior to implementing. To enable, in HKEY_LOCAL_ MACHINE\System\CurrentCon trolSet\Control\FileSystem,
set the DWORD value for NtfsDisable LastAccessUpdate to 1.
Turn off Lazy Writes: This setting prevents the system from caching write
operations before writing them to disk. This can speed operation over the network.
Configure the following two keys: In HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\
LanmanServer\Parameters, set the DWORD value for IRPStackSize to 15. Also, in
HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\ LanmanWorkstation\Parameters,
set the DWORD value for UtilizeNT Caching to 0.
Improve Windows Kernel Performance: Prevents the system from paging
kernel mode drivers and system code to disk, which can decrease performance.
To configure: In HKEY_LOCAL_ MACHINE\System\CurrentCon trolSet\Control\Session
Manager\ Memory Management, set the DWORD value for DisablePagingExecutive to
1.
Increase the Network Request Buffer: This setting boosts performance
by increasing the size of the network request buffer, which determines how much
data is stored before it is sent to the client. This setting can also improve
LAN Manager file writing performance. Increasing the size of this buffer will
consume RAM, so adjust and monitor carefully. To enable, in HKEY_ LOCAL_MACHINE\System\Current
ControlSet\Services\LanmanServer\Parameters, increase the DWORD value for SizReqBuf
to a value between 1024 and 65535.
Eliminate Session Hangs During Logoff: Terminal Server sessions can
sometimes hang when the user attempts to log off. One solution: Modify available
network buffers and open connections. Configure the following keys: In HKEY_LOCAL_MACHINE\
System\CurrentControlSet\Services\ LanmanServer\Parameters, set the DWORD value
for MaxWorkItems to 8196, MaxMpxCt to 2048, MaxRaw WorkItems to 512, MaxFreeConnections
to 100, and MinFreeConnections to 32. In KEY_LOCAL_MACHINE\ System\CurrentControlSet\
Services\LanmanServer\Parameters, set the DWORD value for MaxCmds to 2048. Also,
in HKEY_LOCAL_ MACHINE\System\Current ControlSet\Control\SessionManager\ ConfigurationManager,
set the value for RegistryLazyFlushInterval to 60. Lastly, ensure that the Enable
Advanced Performance feature is enabled when viewing device properties of all
disk drives on the system.
Speed up Application Load Times: Increase the perceived performance
of your Terminal Server by pre-loading commonly used files into memory. This
works well on systems with plenty of available RAM. To enable, in HKEY_ LOCAL_MACHINE\System\
CurrentControlSet\Control\Session Manager\Memory Management\ PrefetchParameters,
set the DWORD value for EnablePrefetcher to 3.
Disable Caching of Roaming Profiles: Excess roaming profiles on a Terminal
Server can consume disk and Registry quota space. Configuring this setting can
eliminate waste but increase user's login time. To enable, in HKEY_ LOCAL_MACHINE\Software\
Microsoft\Windows NT\Current Version\Winlogon, set the DWORD value for DeleteRoamingCache
to 1.
Disable Unused Subsystems: Not using the POSIX subsystem on your Terminal
Server? Disable it and navigate to the registry location HKEY_LOCAL_ MACHINE\System\CurrentCon
trolSet\Control\Session Manager\ Subsystems and delete the Posix key. Disable
the File Indexing Service: File Indexing Service is great for quickly searching
for files, but your Terminal Server arguably shouldn't have that many user files
on it and the indexing process can consume huge system resources. To disable
it, navigate to the properties menu of each drive on your system and deselect
the box for Allow Indexing Service to index this disk for fast file searching.
There's more where these tips came from at www.dabcc.com.
Of course, all Terminal Services has brought me is fewer trips to the server
room, more opportunities to work from home and on the road, and more hours per
week on my time card. On second thought, let's not speed up Terminal Server.
Keep it weak and feeble. Starve it and it'll go away! Back to the glory days
of 1994!
More Information
Here's code for a .REG file that'll allow you to configure all of the tweaks
mentioned above at once:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\
Main]
"Force Offscreen Composition"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common]
"QMEnable"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanWorkstation\Parameters]
"UseLockReadUnlock"=dword:00000001
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\
FileSystem]
"NtfsDisableLastAccessUpdate"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Lanman Server\Parameters]
"IRPStackSize"=dword:0000000f
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\
Lanman WorkStation\Parameters]
"UtilizeNTCaching"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Session Manager\Memory Management]
"DisablePagingExecutive"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters]
"SizReqBuf"=dword:0000ffff
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Lanmanserver\Parameters]
"MaxWorkItems"=dword:00002004
"MaxMpxCt"=dword:00000800
"MaxRawWorkItems"=dword:00000200
"MaxFreeConnections"=dword:00000064
"MinFreeConnections"=dword:00000020
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
Lanmanworkstation\Parameters]
"MaxCmds"=dword:00000800
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\
Session Manager\Configuration Manager]
"RegistryLazyFlushInterval"=dword:0000003c
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
SessionManager\Memory Management\PrefetchParameters]
"EnablePrefetcher"="3"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\Winlogon]
"DeleteRoamingCache"=dword:00000001
About the Author
Greg Shields is Author Evangelist with PluralSight, and is a globally-recognized expert on systems management, virtualization, and cloud technologies. A multiple-year recipient of the Microsoft MVP, VMware vExpert, and Citrix CTP awards, Greg is a contributing editor for Redmond Magazine and Virtualization Review Magazine, and is a frequent speaker at IT conferences worldwide. Reach him on Twitter at @concentratedgreg.