Performance Tuning for File Servers

Performance Tuning for File Servers General Considerations
It is important to select the right hardware to satisfy the expected file server load, keeping in mind average load, peak load, capacity, growth plans, and response times. Hardware bottlenecks will limit the effectiveness of software tuning.
Consider the following issues when selecting hardware and setting up the operating system.
Table 11. Selecting the Right Hardware for Performance
Issue
|
Recommendation
|
Number, type, and speed of processors
| -
Larger L2 processor caches will provide better performance.
-
Two CPUs will not be as fast as one CPU that is twice as fast.
|
Amount of physical memory (RAM)
|
When your computer is running low on memory and more is needed immediately, Windows Server 2003 uses hard drive space to simulate system RAM. This is known as virtual memory, and is often called the paging file.
-
Try to avoid having a pagefile on the same drive as the operating system files.
-
Avoid putting a pagefile on a fault-tolerant drive, such as a mirrored volume or a RAID-5 volume. Pagefiles don't need fault-tolerance, and some fault-tolerant systems suffer from slow data writes because they write data to multiple locations.
-
Don't place multiple pagefiles on different partitions on the same physical disk drive.
|
Number, type, and speed of network adapters
| -
The network adapter should not be a bottleneck. Newer network adapters can offload some server functions and help performance.
-
Make sure all network adapter settings are optimal.
-
Bind each network adapter to a CPU (the method depends on the number of network adapters, the number of CPU’s and the number of ports per network adapter).
-
For details, see Performance Tuning for Networking earlier in this document.
|
Type of disk controller, number of physical disks and their overall capacity
| -
File Servers cache frequently accessed files in memory. However, files that are not accessed frequently must come from disk. Handling large amounts of data with a high number of requests to a high number of files require good disk performance (RAID controller connected to a large number of disks).
-
Keep the system page file, the operating system and the data on separate physical disks if possible.
-
Make sure the allocation unit size is appropriate for the size of the volume.
|
Server Message Block Server Model
The Server Message Block (SMB) model consists of two entities, the client and the server.
The client receives requests through the redirector (Rdbss.sys and SMB mini-redirector Mrxsmb.sys) for files located on the server. It uses the SMB 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 6 The SMB Model for Client-Server Communication
General Tuning Parameters for File Servers
The following registry tuning parameters could affect performance of file servers.
PagedPoolSize
HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\ (REG_DWORD)
File cache space and paged pool space share a common area in system virtual address . Limiting the paged pool allows for a larger system cache, which causes more content to be cached and allows faster serving of files.
NtfsDisable8dot3NameCreation
HKLM\System\CurrentControlSet\Control\FileSystem\ (REG_DWORD)
Default is 0. This parameter determines whether NTFS generates a short name in the 8.3 (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 potentially have two names: the name that the user specifies and the short name that NTFS generates. If the name the user specifies conforms to 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, also changing the way NTFS displays and manages the file.
Disablelastaccess
HKLM\System\CurrentControlSet\Control\FileSystem\. (REG_DWORD)
By default, this registry key is not created.
If you have an NTFS volume with a high number of folders or files, and a program is running that briefly accesses each of these in turn, the I/O bandwidth used to generate the Last Access Time updates can be a significant percentage of the overall I/O bandwidth. To increase the speed of access to a folder or file, you can set disablelastaccess to disable updating the Last Access Time. After you use this command and restart the computer, the Last Access Time is no longer updated. If you create a new file, the Last Access Time remains the same as the File Creation Time.
NumTcbTablePartitions
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\. (REG_DWORD)
By default this key is not created.
This parameter controls the number of TCB table partitions. The TCB table can be partitioned to improve scalability on multiprocessor systems by reducing contention on the TCB table.
TcpAckFrequency
Note: TcpAckFrequency applies only to Windows Server 2003. The recommended setting for TcpAckFrequency is between one-third and one-half of TcpWindowSize.
For Gigabit cards:
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
For each Gigabit adapter, add:
TcpAckFrequency (REG_DWORD) = 13 (decimal)
By default this entry is not in the registry. If only acking data and not any control packets, ack once every 13 packets, instead of the default of two. This helps reducing packet processing costs for the Network Stack, in the case of large writes (uploads) from the client into the server.
For FastEthernet cards:
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
For each FastEthernet adapter, add:
TcpAckFrequency (REG_DWORD) = 5 (decimal)
By default this entry is not in the registry. If only acking data and not any control packets, ack once every five packets, instead of the default of two. This helps reducing packet processing costs for the Network Stack, in the case of large writes (uploads) from the client into the server.
|