Tips for Configuring the File System for Best Performance

1 Star2 Stars3 Stars4 Stars5 Stars
  • Product:
  • Version:
  • Document Type:
  • Revised:
  • Reviewed:


Some customers who observed performance problems during heavy IO have provided positive feedback after making changes suggested in this Microsoft KB article: Configuring the Disk and File System for Performance

Note: That particular Microsoft article refers to Windows 2000. In Windows 2003 instead of modifying the registry directly these settings can be changed with the fsutil tool. Please see the Microsoft article on Fsutil for more details.


Four recommendations are made in the section titled “Configuring the Disk and File System for Performance”

Disable creation of short names. By default, NTFS generates the style of file name that consists of eight characters, followed by a period and a three-character extension for compatibility with MS-DOS and Microsoft Windows 3.x clients. If you are not supporting these types of clients, you can turn off this setting by changing the default value of the NtfsDisable8dot3NameCreation registry entry (in HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Filesystem) to 1.

Note: Disabling NtfsDisable8dot3NameCreation will also prevent certain types of errors copying long filenames. (Exception – Rampage users should not disable this key, as Rampage users will fall back on the 8.3 name when they encounter strange characters.) For more information see the Group Logic KB article: Error with Duplicate 8.3 Filenames

Disable last access update. By default NTFS updates the date and time stamp of the last access on directories whenever it traverses the directory. For a large NTFS volume, this update process can slow performance. To disable automatic updating, change the value of the NtfsDisableLastAccessUpdate registry entry (in HKEY_LOCAL_MACHINE \SYSTEM \CurrentContolSet \Control \Filesystem) to 1. If the entry is not already present in the registry, add it before setting the value.

Reserve appropriate space for the master file table. Add the NtfsMftZoneReservation entry to the registry as a REG_DWORD in HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \FileSystem. When you add this entry to the registry, the system reserves space on the volume for the master file table. Reserving space in this manner allows the master file table to grow optimally. If your NTFS volumes generally contain relatively few files that are typically large, set value of this registry entry to 1 (the default). Typically you can use a value of 2 or 3 for moderate numbers of files, and 4 (the maximum) if your volumes tend to contain a relatively large number of files. However, be sure to test any settings greater than 2 because these higher values cause the system to reserve a much larger portion of the disk for the master file table.

Note: On the servers in the Quality Assurance lab at Group Logic (where we create and delete hundreds of thousands of files a day), we have found that without changing this key from the default, after a few weeks the MFT can become so fragmented that performance becomes severely degraded. Unfortunately the Windows defragmenter cannot defragment the MFT so this problem can be difficult to solve once it occurs.

Bypassing I/O Counts – By default, Task Manager continuously measures data for process I/O operations that you can select and display on the Processes tab in Task Manager. In a multiprocessor environment, this data is shared by the processors on which the process runs. When a process that generates considerable disk and network I/O, such as a database service, runs on several processors, updating the shared measurements of process I/O and global I/O operations can slow the system. You can improve the performance of I/O-intensive operations on SMP systems if you configure the system to bypass the global I/O counters and Task Manager process I/O counters. To do so, add the CountOperations entry to the registry as a REG_DWORD in HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Session Manager\I/O System. (If the I/O System subkey is not present, add it before creating the entry.) Set the entry value to 0. When so configured, Task Manager no longer provides per-process I/O measurements.

Note: The CountOperations setting is no longer available on Windows Server 2008.