The following sections provide information about the Microsoft Services for Network File System (NFS) model for client-server communication.
Services for NFS Model Overview
Microsoft Services for NFS provides a file-sharing solution for enterprises that have a mixed Windows and UNIX environment. This communication model consists of two entities: the client and the server (see Figure 7). Applications on the client request files located on the server through the redirector (Rdbss.sys and NFS mini-redirector Nfsrdr.sys). The mini-redirector uses the NFS protocol to send its request through TCP/IP. The server receives multiple requests from the clients through TCP/IP and routes the requests to the local file system (Ntfs.sys), which accesses the storage stack.
Figure 7. Microsoft Services for Network File System (NFS) Model for Client-Server Communication
The following registry-tuning parameters can affect the performance of NFS file servers:
DefaultNumberOfWorkerThreads
HKLM\System\CurrentControlSet\Services\RpcXdr\Parameters\ (REG_DWORD)
Default is 16. Specifies the number of threads that are used to handle incoming NFS requests. Minimum is 1 and maximum is 4096. Determine the appropriate number of threads based on the workload profile. You can increase the number of threads if the server is not responsive.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 0. Determines whether files are opened for FILE_RANDOM_ACCESS as opposed to FILE_SEQUENTIAL_ONLY, depending on the workload I/O characteristics. Set this value to 1 to force files to be opened for FILE_RANDOM_ACCESS. FILE_RANDOM_ACCESS prevents the file system and cache manager from performing prefetching. For more information on File Access Services, see "Resources" later in this guide.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 5. Controls the lifetime of an NFS cache entry in the file handle cache. This parameter refers to cache entries that have an associated open NTFS file handle. Actual lifetime is approximately equal to RdWrHandleLifeTime multiplied by RdWrThreadSleepTime. Minimum is 1 and maximum is 60.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 5. Controls the lifetime of an NFS cache entry in the file handle cache. This parameter refers to cache entries that do not have an associated open NTFS file handle. The Server for NFS uses these cache entries to store file attributes for a file without keeping an open handle with the file system. Actual lifetime is approximately equal to RdWrNfsHandleLifeTime multiplied by RdWrThreadSleepTime. Minimum is 1 and maximum is 60.
RdWrNfsReadHandlesLifeTime
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 5. Controls the lifetime of an NFS read cache entry in the file handle cache. Actual lifetime is approximately equal to RdWrNfsReadHandlesLifeTime multiplied by RdWrThreadSleepTime. Minimum is 1 and maximum is 60.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 5. Controls the wait interval before running the cleanup thread on the file handle cache. Value is in ticks and is non-deterministic. A tick is equivalent to approximately 100 nanoseconds. Minimum is 1 and maximum is 60.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 4. Specifies the maximum memory to be consumed by file handle cache entries. Minimum is 1 and maximum is 1*1024*1024*1024 (1073741824).
LockFileHandleCacheInMemory
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 0. Specifies whether the physical pages allocated for the cache size specified by FileHandleCacheSizeInMB are locked in memory. Setting this value to 1 enables this activity. Pages are locked in memory (that is, they are not paged to disk), which improves the performance of resolving file handles but reduces the memory available to applications.
MaxIcbNfsReadHandlesCacheSize
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 64. Specifies the maximum number of handles per volume for the read data cache. Read cache entries are created only on systems that have more than 1 GB of memory. Minimum is 0 and maximum is 0xFFFFFFFF.
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 6. Controls the strength of the security on handles given out by NFS Server. You can assign the following values in the bitmask:
0x0 – Disable all security checks on the NFS handles.
0x1 – Add checksum to the client for tamper detection.
0x2 – Use the IP address of the client, in addition to other data, to sign the handle.
0x4 – Validate that the parent path of the NTFS field embedded in the handle is exported when the handle is exported.
0x6 –Use the IP Address of the client, in addition to other data, to sign the handle, and also validate that the parent path of the NTFS field embedded in the handle is exported when the handle is exported.
RdWrNfsDeferredWritesFlushDelay
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 60. Soft timeout that controls the duration of NFS V3 UNSTABLE write data caching. Minimum is 1 and maximum is 600. Actual lifetime is approximately equal to RdWrNfsDeferredWritesFlushDelay multiplied by RdWrThreadSleepTime.
CacheAddFromCreateAndMkDir
HKLM\System\CurrentControlSet\Services\NfsSvr\Parameters\ (REG_DWORD)
Default is 1 (enabled). Controls whether handles opened during NFS V2 and V3 CREATE and MKDIR RPC procedure handlers are retained in the file handle cache. Set this to value 0 to disable adding entries to the cache in CREATE and MKDIR code paths.
AdditionalDelayedWorkerThreads
HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\Executive\ (REG_DWORD)
Increases the number of delayed worker threads created for the specified work queue. Delayed worker threads process work items that are not considered time-critical and can have their memory stack paged out while waiting for work items. An insufficient number of threads reduces the rate at which work items are serviced; a value that is too high consumes system resources unnecessarily.
NtfsDisable8dot3NameCreation
HKLM\System\CurrentControlSet\Control\FileSystem\ (REG_DWORD)
Default is 0. Determines whether NTFS generates a short name in the 8.3 (MS-DOS) naming convention for long file names and for file names that contain characters from the extended character set. If the value of this entry is 0, files can have two names: the name that the user specifies and the short name that NTFS generates. If the name that the user specifies follows the 8.3 naming convention, NTFS does not generate a short name.
Changing this value does not change the contents of a file, but it avoids the short-name attribute creation for the file and also changes how NTFS displays and manages the file. For most file servers, the recommended setting is 1.
NtfsDisableLastAccessUpdate
HKLM\System\CurrentControlSet\Control\FileSystem\(REG_DWORD)
Default is 1. This system-global switch reduces disk I/O load and latencies by disabling the updating of the date and time stamp for the last file or directory access.
General Tuning Parameters for Client Computers
The following registry-tuning parameters can affect the performance of client computers that interact with SMB or NFS file servers:
DisableBandwidthThrottling
HKLM\system\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
HKLM\system\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\(REG_DWORD)
Windows Vista and Windows 7 clients only.
The default is 1 for client operating systems. By default, Windows Scaling Diagnostics (WSD) automatically disables TCP receive window autotuning 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 autotuning to stay enabled. When no faulty networking devices are involved, applying the setting can enable more reliable high-throughput networking via TCP receive window autotuning. For more information about disabling this setting, see “Resources” later in this guide.
HKLM\system\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
The default is 0. Changing this value to 1 prevents SMB communication with machines where SMB signing is disabled. In addition, a value of 1 causes SMB signing to be used for all SMB communication. SMB signing can increase CPU cost and network round trips. If SMB signing is not required, ensure that this registry value is 0 on all clients and servers.
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
FileNotFoundCacheEntriesMax
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
\(REG_DWORD)
Windows Vista and Windows 7 clients only.
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.
HKLM\system\CurrentControlSet\Services\LanmanWorkstation
\Parameters\(REG_DWORD)
Windows XP client computers only. By default, this registry key is not created.
This parameter specifies the maximum number of files that should be left open on a share after the application has closed the file.
HKLM\system\CurrentControlSet\Services\LanmanWorkstation
\Parameters\(REG_DWORD)
Windows XP client computers only.
This is the number of seconds that the redirector waits before it starts scavenging dormant file handles (cached file handles that are currently not used by any application).
DisableByteRangeLockingOnReadOnlyFiles
HKLM\System\CurrentControlSet\Services\LanmanWorkstation
\Parameters\(REG_DWORD)
Windows XP client computers only.
Some distributed applications that lock parts of a read-only file as synchronization across clients require that file-handle caching and collapsing behavior be off for all read-only files. This parameter can be set if such applications will not be run on the system and collapsing behavior can be enabled on the client computer.
The following settings for parameters previously described in the “General Tuning Parameters for Client Computers” section can optimize a machine for accessing remote file shares in many cases, particularly over some high-latency networks. The settings are not optimal or appropriate on all machines. You should evaluate the impact of individual settings before applying them.
Parameter
|
Value
|
DisableBandwidthThrottling
|
1
|
EnableWsd
|
0
|
RequireSecuritySignature
|
0
|
FileInfoCacheEntriesMax
|
32768
|
DirectoryCacheEntriesMax
|
4096
|
FileNotFoundCacheEntriesMax
|
32768
|
MaxCmds
|
32768
|
DormantFileLimit [Windows XP only]
|
32768
|
ScavengerTimeLimit [Windows XP only]
|
60
|
DisableByteRangeLockingOnReadOnlyFiles [Windows XP only]
|
1
|
|