Solaris 8 System Administration Supplement

Chapter 28 Improving System Performance With DNLC

The directory name look-up cache (DNLC) is enhanced in the Solaris 8 6/00 software release. The following information supplements information on managing system performance in “System Performance (Overview)” in the System Administration Guide, Volume 2.


Note –

For the most current man pages, use the man command. The Solaris 8 Update release man pages include new feature information that is not in the Solaris 8 Reference Manual Collection.


DNLC Improvements

The directory name look-up cache (DNLC) is enhanced to provide improved performance when you access files in large directories with 1000 or more files.

The DNLC is a general file-system service that caches the most recently referenced directory names and their associated vnodes. UFS directory entries are stored linearly on disk. This means that locating an entry requires searching each entry for the name. Adding a new entry requires searching the entire directory to ensure the name does not exist. To solve this performance problem, entire directories are cached in memory by the DNLC.

Another feature in this release is DNLC caching of file objects that have been looked up, but do not exist. This feature is known as negative caching, and is useful because some applications repeatedly test to check if a file exists.

The section that follows describes the new DNLC tunable parameters. These parameters are set optimally and should not be changed casually.


Note –

MAXUINT is the maximum value of an unsigned integer.


dnlc_dir_enable

Description

Enables large directory caching

Data Type

Unsigned integer

Default Value

1 (enabled)

Range

0 (disabled), 1 (enabled)

When to Change

Directory caching has no known problems, but if problems occur, set dnlc_dir_enable to 0 to disable caching.

dnlc_dir_min_size

Description

Minimum number of entries cached for one directory

Data Type

Unsigned integer

Default Value

40

Range

0 to MAXUINT (no maximum)

When to Change

If performance problems occur with caching small directories, increase dnlc_dir_min_size. Note that individual file systems might have their own range limits for caching directories. For instance, UFS limits directories to a minimum of ufs_min_dir_cache bytes (approximately 1024 entries), assuming 16 bytes per entry.

dnlc_dir_max_size

Description

Maximum number of directory entries before caching

Data Type

Unsigned integer

Default Value

MAXUINT (no maximum)

Range

0 to MAXUINT

When to Change

If performance problems occur with large directories, decrease dnlc_dir_max_size.