Windows Insider

Speed Up Terminal Server

Streamline your Terminal Services for Windows 2003 with these Registry tweaks.

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.

Featured

comments powered by Disqus

Subscribe on YouTube