Following the great article Terminal Server & XenApp Tuning Tips published on this website by Pierre Marmignon, this article defined all tips that I’ve found, test and validate for tuning Windows 2008 R2 and XenApp6.
Source: CitrixTools.Net
Registry Hive
|
Value
|
Type
|
Data
|
Purpose(s)
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
KeepAliveTime
|
REG_DWORD
|
180000
|
Determines how often TCP sends keep-alive transmissions
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
KeepAliveInterval
|
REG_DWORD
|
100
|
Determines how often TCP repeats keep-alive transmissions when no response is received
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
TcpMaxDataRetransmissions
|
REG_DWORD
|
10
|
Determines how many times TCP retransmits an unacknowledged data segment on an existing connection
|
HKLMSystemCurrentControlSetServicesLanmanServerParameters
|
MaxWorkItems
|
REG_DWORD
|
512
|
Server Service Optimization
|
HKLMSystemCurrentControlSetServicesLanmanServerParameters
|
MaxMpxCt
|
REG_DWORD
|
2048
|
Server Service Optimization
|
HKLMSystemCurrentControlSetServicesLanmanServerParameters
|
MaxFreeConnections
|
REG_DWORD
|
100
|
Server Service Optimization
|
HKLMSystemCurrentControlSetServicesLanmanServerParameters
|
MinFreeConnections
|
REG_DWORD
|
32
|
Server Service Optimization
|
HKLMSystemCurrentControlSetServicesLanmanWorkstationParameters
|
UtilizeNTCaching
|
REG_DWORD
|
0
|
Disable Caching
|
HKLMSYSTEMCurrentControlSetServicesMRXSmbParameters
|
OplocksDisabled
|
REG_DWORD
|
1
|
Disables Opportunistic Locking
|
HLMSYSTEMCurrentControlSetServicesLanmanworkstationParameters
|
UseOpportunisticLocking
|
REG_DWORD
|
0
|
Disables Opportunistic Locking
|
HKLMSYSTEMCurrentControlSetServicesLanmanserverParameters
|
EnableOplocks
|
REG_DWORD
|
0
|
Disables Opportunistic Locking
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
EnableRSS
|
REG_DWORD
|
0
|
Disable Receive Side Scaling
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
EnableTCPA
|
REG_DWORD
|
0
|
Disable TCP-acceleration
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
EnableTCPChimney
|
REG_DWORD
|
0
|
Disable TCP Chimney Offload
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
DisableBandwidthThrottling
|
REG_DWORD
|
1
|
The default is 0. By default, the SMB redirector throttles throughput across high-latency network connections in some cases to avoid network-related timeouts. Setting this registry value to 1 disables this throttling, enabling higher file transfer throughput over high-latency network connections
|
HKLMSystemCurrentControlSetServicesLanmanWorkstationParameters
|
MaxThreads
|
REG_DWORD
|
17
|
Maximum Concurrent Threads
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
DisableLargeMtu
|
REG_DWORD
|
0
|
The default is 1. By default, the SMB redirector does not transfer payloads larger than approximately 64 KB per request. Setting this registry value to 0 enables larger request sizes, which can improve file transfer speed.
|
HKLMSYSTEMCurrentControlSetServicesTcpipparameters
|
EnableWsd
|
REG_DWORD
|
0
|
The default is 1 for client operating systems. By default, Windows Scaling Diagnostics (WSD) automatically disables TCP receive window auto tuning when heuristics suspect a network switch component might not support the required TCP option (scaling). Setting this registry setting to 0 disables this heuristic and allows auto tuning to stay enabled. When no faulty networking devices are involved, applying the setting can enable more reliable high-throughput networking via TCP receive window auto tuning. For more information about disabling this setting
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
FileInfoCacheEntriesMax
|
REG_DWORD
|
32768
|
The default is 64 with a valid range of 1 to 65536. This value is used to determine the amount of file metadata that can be cached by the client. Increasing the value can reduce network traffic and increase performance when a large number of files are accessed
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
DirectoryCacheEntriesMax
|
REG_DWORD
|
4096
|
The default is 16 with a valid range of 1 to 4096. This value is used to determine the amount of directory information that can be cached by the client. Increasing the value can reduce network traffic and increase performance when large directories are accessed
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
FileNotFoundCacheEntriesMax
|
REG_DWORD
|
32768
|
The default is 128 with a valid range of 1 to 65536. This value is used to determine the amount of file name information that can be cached by the client. Increasing the value can reduce network traffic and increase performance when a large number of file names are accessed.
|
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParameters
|
MaxCmds
|
REG_DWORD
|
32768
|
The default is 15. This parameter limits the number of outstanding requests on a session. Increasing the value can use more memory, but can improve performance by enabling deeper request pipelining. Increasing the value in conjunction with MaxMpxCt can also eliminate errors encountered due to large numbers of outstanding long-term file requests, such as FindFirstChangeNotification calls. This parameter does not affect connections with SMB 2 servers.
|
Registry Hive
|
Value
|
Type
|
Data
|
Purpose(s)
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
UseDesktopIniCache
|
REG_DWORD
|
1
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
NoRemoteRecursiveEvents
|
REG_DWORD
|
1
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
NoRemoteChangeNotify
|
REG_DWORD
|
1
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
StartRunNoHOMEPATH
|
REG_DWORD
|
1
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
NoRecentDocsNetHood
|
REG_DWORD
|
1
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer
|
NoDetailsThumbnailOnNetwork
|
REG_DWORD
|
1
|
|
HKLMSystemCurrentControlSetServicesMRXSmbParameters
|
InfoCacheLevel
|
REG_DWORD
|
16
|
|
HKCR*shellexPropertySheetHandlersCryptoSignMenu
|
SuppressionPolicy
|
REG_DWORD
|
1048576
|
|
HKCR*shellexPropertySheetHandlers{3EA48300-8CF6-101B-84FB-666CCB9BCD32}
|
SuppressionPolicy
|
REG_DWORD
|
1048576
|
|
HKCR*shellexPropertySheetHandlers{883373C3-BF89-11D1-BE35-080036B11A03}
|
SuppressionPolicy
|
REG_DWORD
|
1048576
|
|
HKLMSOFTWAREMicrosoftWindowsCurrentVersionexplorerSCAPI
|
Flags
|
REG_DWORD
|
1051650
|
|
HKLMSYSTEMCurrentControlSetControlSession Manager
|
SafeDllSearchMode
|
REG_DWORD
|
1
|
|
HKLMSYSTEMCurrentControlSetControlSession Manager
|
SafeProcessSearchMode
|
REG_DWORD
|
1
|
Registry Hive
|
Value
|
Type
|
Data
|
Purpose(s)
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
AutoEndTasks
|
REG_SZ
|
1
|
Determines whether user processes end automatically when the user either logs off.
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
WaitToKillAppTimeout
|
REG_SZ
|
20000
|
Determines how long the system waits for user processes to end after the user attempts to log off
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
MenuShowDelay
|
REG_SZ
|
10
|
Changes the Start menu display interval
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
CursorBlinkRate
|
REG_SZ
|
-1
|
Specifies how much time elapses between each blink of the selection cursor
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
DisableCursorBlink
|
REG_DWORD
|
1
|
Enables / Disables Cursor Blink
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
DragFullWindows
|
REG_SZ
|
0
|
Specifies what appears on the screen while a user drags a window / Only the outline of the window moves
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
SmoothScroll
|
REG_DWORD
|
0
|
Scrolls using smooth scrolling
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
Wallpaper
|
REG_SZ
|
(none)
|
Sets Wallpaper to “None”
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktopWindowsMetrics
|
MinAnimate
|
REG_SZ
|
0
|
Disabled. Window does not animate while being resized
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverrideControl PanelDesktop
|
InteractiveDelay
|
REG_DWORD
|
40
|
Optimizes Explorer and Start Menu responses Times
|
Registry Hive
|
Value
|
Type
|
Data
|
Purpose(s)
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
WaitToKillAppTimeout
|
REG_SZ
|
20000
|
Determines how long the system waits for user processes to end after the user attempts to log off
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
MenuShowDelay
|
REG_SZ
|
10
|
Changes the Start menu display interval
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
CursorBlinkRate
|
REG_SZ
|
-1
|
Specifies how much time elapses between each blink of the selection cursor
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
DisableCursorBlink
|
REG_DWORD
|
1
|
Enables / Disables Cursor Blink
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
DragFullWindows
|
REG_SZ
|
0
|
Specifies what appears on the screen while a user drags a window / Only the outline of the window moves
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
SmoothScroll
|
REG_DWORD
|
0
|
Scrolls using smooth scrolling
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
Wallpaper
|
REG_SZ
|
(none)
|
Sets Wallpaper to “None”
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktopWindowsMetrics
|
MinAnimate
|
REG_SZ
|
0
|
Disabled. Window does not animate while being resized
|
HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsICA-TcpUserOverrideControl PanelDesktop
|
InteractiveDelay
|
REG_DWORD
|
40
|
Optimizes Explorer and Start Menu responses Times
|
Very nice article Julien!
According to Thomas Koetzing paper on “Optimizing Logon and Logoff 1.4” available at http://www.thomaskoetzing.de/index.php?option=com_docman&task=doc_download&gid=135
the registry key HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpUserOverride dosen’t work anymore with Windows 2003 and 2008/2008 R2 I assume.
Here what he had to say on page 22: “With Windows 2003 those global keys don’t work anymore and has to be set on a per user basis.”
I tested it my self with existing profiles and it didn’t work…but I just read this morning that the profile must be NEW. So who’s right, you or Thomas ? 🙂
Also I suggest the following registry keys:
HKLMSSYSTEMCurrentControlSetControlProcessor
Key: “Capabilities” (dword)
Value: 0007e666
http://support.microsoft.com/kb/2000977
HKLMSYSTEMCurrentControlSetServicesTCPIPParameters
Key: “DisableTaskOffload” (dword)
Value: “1”
http://support.microsoft.com/kb/904946
http://support.citrix.com/article/CTX117491
Regards,
Jonathan Pitre
Other tuning options are:
1st) Turn off TCP Offloading (at the NIC AND the OS)
OS:
%SYSTEMROOT%SYSTEM32
etsh.exe int tcp set global chimney=disabled
%SYSTEMROOT%SYSTEM32
etsh.exe int tcp set global rss=disabled
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“EnableRSS”=dword:00000000
“EnableTCPChimney”=dword:00000000
“EnableTCPA”=dword:00000000
“DisableTaskOffload”=dword:00000001
2nd) If dealing with APP-V 4.6 64 Bit RDS Client on W2K8R2 this one could be for you [SCCM related]:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftSoftGrid4.5ClientConfiguration]
“RequireAuthorizationIfCached”=dword:00000000
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftSoftGrid4.5ClientNetwork]
“AllowDisconnectedOperation”=dword:00000001
“Online”=dword:00000000
“DOTimeoutMinutes”=dword:ffffff
“LimitDisconnectedOperation”=dword:00000000
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftSoftGrid4.5ClientPermissions]
“ToggleOfflineMode”=dword:00000000
3rd)
other optimizations:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“EnablePMTUBHDetect”=dword:00000001
“KeepAliveTime”=dword:00007530
“KeepAliveInterval”=dword:00001388
“TcpMaxDataRetransmissions”=dword:00000005
“EnableBcastArpReply”=dword:00000001
“DisableTaskOffload”=dword:00000001
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]
“TreatHostAsStableStorage”=dword:00000001
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem]
“NtfsDisableLastAccessUpdate”=dword:00000001
“DontVerifyRandomDrivers”=dword:00000001
“NtfsDisable8dot3NameCreation”=dword:00000001
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaKerberosParameters]
“MaxTokenSize”=dword:0000FFFF
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem]
“DelayedDesktopSwitchTimeout”=dword:00000005
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl]
ServicesPipeTimeout”=dword:0001d4c0
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesBrowserParameters]
“IsDomainMaster”=”FALSE”
“MaintainServerList”=”No”
—
As always – do NOT use this in a production environment.
Test it in a lab.
Be very careful when touching the autotuning TCP/IP stack. This can backfire.
Talk with the networking gents.