On NT systems with insufficient amounts of free physical memory, setting
LargeSystemCache to a non-zero value usually increases paging file activity
because memory usage is prioritized in favor of the system cache rather than
system processes. If applications need additional memory, the extra memory
usually comes from the paging file. The resulting increase in paging file
activity typically reduces overall system performance.
Turbocharging NTFS
If you're using NTFS on your system, several changes can help you increase
the file system's speed. The first and most basic setting is one that NTFS
chooses automatically when you format a new NTFS partition: the volume's cluster
size (NTFS allocates disk storage in units known as clusters).
Typically, NTFS selects the volume's cluster size (measured in bytes) from a
list of defaults that relate to the volume's total capacity. Table 2 lists the
default cluster sizes for ranges of volume size.
Usually, the default cluster size provides good performance; however,
reformatting the volume with a different cluster size can enhance performance in
some environments. Unfortunately, to change cluster size, you must back up the
entire volume to tape (or to another volume), reformat the volume with the new
cluster size, and then restore the data. You can use NT's Disk Administrator
utility, as shown in Screen 2, or use the FORMAT command from the NT command
prompt to specify the cluster size when you format NTFS volumes. The syntax for
the FORMAT command is
FORMAT <drive>: /FS:NTFS /A:<size>
where drive is the drive letter of the drive to format, and size
is the cluster size to use on the new volume (512, 1024, 2048, 4096, 8192, 16K,
32K, or 64K). This setting overrides the default cluster size. (At cluster sizes
above 4096, NTFS does not support some features, such as NTFS compression and
virus checking.) A third method for specifying cluster size is to double-click
My Computer on the desktop, right-click the volume, and select Format. When the
Format dialog box appears, simply change Allocation Unit Size to a value from
the drop-down list.
Changing a volume's cluster size may be appropriate depending on the type
of files on the volume. For example, a volume with a large number of small files
may perform better with a small cluster size, whereas a volume with a few very
large files may perform better with a large cluster size. Be sure to benchmark
each cluster size scenario with lengthy file I/O operations, using files of
different sizes if possible (Bench32 lets you test disks with files from 1MB to
20MB in size). If you experiment with different cluster sizes, start small: Move
up or down one cluster size at a time and then retest. Once you find the cluster
size that yields the best performance for the average file size to be stored on
the volume, you can restore the data to the volume.
NTFS is a sophisticated file system, and features such as the extended
attributes that NTFS files use to support NT permissions increase overhead to
your system. Certain default NTFS behaviors can unnecessarily reduce your
system's performance. One such behavior is the automatic generation of 8.3
DOS-style filenames for all files stored on NTFS volumes. Because NTFS must
generate an 8.3-style name for each new file created on the volume, write
operations with such names take longer than write operations that use only long
filenames. If your network doesn't include any DOS or Windows 3.x clients, you
can disable this automatic feature. In the Registry, change the value of
NtfsDisable8dot3NameCreation to 1 in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.
Several points are important to keep in mind about this procedure. First,
be sure that your network does not now contain (and will not contain in the
future) any systems that use DOS, Windows 3.x, or Windows for Workgroups 3.x.
These systems cannot use NTFS files without 8.3-style names. Second, be aware
that changing this Registry value affects only future files stored on the
volume. Existing files retain their 8.3 version names until you remove the files
from the volume. If you want to start with a clean slate, set the Registry value
to 1, move all the files to another volume or tape, and then move them back to
the original volume.
As long as we're in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,
I'll point out another file system-related setting that can
improve NTFS performance. The NtfsDisableLastAccessUpdate entry controls
whether NTFS updates the LastAccess time/date stamp on directories as NTFS
traverses the directory structure. Disabling updates can also reduce NTFS
overhead, without significantly impairing functionality. The default value is 0
(NTFS updates directory time/date stamps); change the value to 1 to disable
updates. If you don't see the NtfsDisableLastAccessUpdate entry, you can
manually add it as a REG_DWORD type with value 1. However, if you add this
entry, be very careful to spell the name correctly, including capitalization.
Here's one last item on disk performance optimization: Whenever possible,
keep the amount of free space on a physical disk at 40 percent or more. When the
amount of free space drops below 40 percent, the disk takes significantly more
time to find free space to write data. Although you can mitigate this effect by
regularly using a disk defragmentation tool (e.g., Executive Software's
Diskeeper or Symantec's SpeedDisk utility in Norton Utilities for Windows NT),
you'll still experience a significant performance hit on a crowded disk.
X Marks the Spot
As with all system-tuning modifications, I highly recommend that you first
try the modifications I've described in this article on non-production machines
before you change your network servers and workstations. Occasionally, you may
find hidden ramifications that affect particular applications. By testing the
modifications first, you reduce the possibility of any unpleasant surprises.
Finally, remember to benchmark system performance before and after each system
modification so that you can quantify the performance effects of each change.
You might also want to consider doing each benchmark twice or (even better)
doing the tests on two different systems. This tactic gives you a more objective
test and helps reduce the possibility that some software or hardware peculiarity
will interfere with the accuracy of your tests.