Solaris Tunable Parameters Reference Manual

General File System

ncsize

Description

Number of entries in the directory name look-up cache (DNLC). This parameter is used by UFS and NFS to cache elements of path names that have been resolved.

Starting with the Solaris 8 6/00 release, the DNLC also caches negative lookup information, which means it caches a name not found in the cache.

Data Type

Signed integer

Default

4 x (v.v_proc + maxusers) + 320

Range

0 to MAXINT

Units

DNLC entries

Dynamic?

No

Validation

None. Larger values cause the time it takes to unmount a file system to increase as the cache must be flushed of entries for that file system during the unmount process.

When to Change

Prior to the Solaris 8 6/00 release, it is difficult to determine whether the cache is too small. It is possible to infer this by noting the number of enters returned by kstat -n ncstats. If the number seems high given the system workload and file access pattern, this may be due to the size of the DNLC.

Starting with the Solaris 8 6/00 release, kstat -n dnlcstats, is available for you to determine when entries have been removed from the DNLC because it was too small. The sum of the pick_heuristic and the pick_last represents otherwise valid entries which were reclaimed because the cache was too small.

Note that excessive values of ncsize have an immediate impact on the system since the system allocates a set of data structures for the DNLC based on the value of ncsize. A system running a 32-bit kernel allocates 36 byte structures for ncsize, while a system running a 64-bit kernel allocates 64 byte structures for ncsize. The value also has a further affect on UFS and NFS unless ufs_inode and nfs:nfs_rnode are explicitly set.

Commitment Level

Unstable

rstchown

Description

Indicates whether the POSIX semantics for the chown(2) system call are in effect. POSIX semantics are:

  • A process cannot change the owner of a file unless it is running with UID 0.

  • A process cannot change the group ownership of a file to a group in which it is not currently a member unless it is running as UID 0.

Data Type

Signed integer

Default

1, indicating that POSIX semantics are used

Range

0 = POSIX semantics not in force, 1 = POSIX semantics used

Units

Toggle (on/off)

Dynamic?

Yes

Validation

None

When to Change

When POSIX semantics are not desired. Note that turning off POSIX semantics opens the potential for various security holes. It also opens the possibility of a user changing ownership of a file to another user and being unable to retrieve the file back without intervention from the user or the system administrator.

Commitment Level

Obsolete

segkpsize

Description

Specify the amount of kernel pageable memory available. This memory is used primarily for kernel thread stacks. Increasing this number allows either larger stacks for the same number of threads or more threads. This parameter can only be set on systems running 64-bit kernels. Systems running 64-bit kernels use a default stack size of 24 Kbytes.

Data Type

Unsigned long

Default

64-bit kernels, 2 Gbytes

32-bit kernels, 512 Mbytes

Range

64-bit kernels, 512 Mbytes - 24 Gbytes

32-bit kernels, 512 Mbytes

Units

Mbytes

Dynamic?

No

Validation

Value is compared to minimum and maximum sizes (512 Mbytes and 24 Gbytes for 64-bit systems) and if smaller than the minimum or larger than the maximum, it is reset to 2 Gbytes and a message to that effect is displayed.

The actual size used in creation of the cache is the lesser of the value specified in segkpsize after the constraints checking and 50% of physical memory.

When to Change

This is one of the steps necessary to support large numbers of processes on a system. The default size of 2 Gbytes, assuming at least 1 Gbyte of physical memory is present, allows creation of 24-Kbyte stacks for more than 87,000 kernel threads. The size of a stack in a 64-bit kernel is the same whether the process is a 32-bit process or a 64-bit process. If more than this number is needed, segkpsize can be increased assuming sufficient physical memory exists.

Commitment Level

Unstable

Change History

See "segkpsize (Solaris 7 and Earlier Releases)" for more information.

dnlc_dir_enable

Description

Enables large directory caching.

Data Type

Unsigned integer

Default

1 (enabled)

Range

0 (disabled), 1 (enabled)

Dynamic?

Yes, but do not change this tunable dynamically. It is possible to enable it if originally disabled, or to disable it if originally enabled. However, enabling, disabling, and then enabling this parameter might lead to stale directory caches.

Validation

No

When to Change

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

Commitment Level

Unstable

dnlc_dir_min_size

Description

Minimum number of entries before caching for one directory.

Data Type

Unsigned integer

Default

40

Range

0 to MAXUINT (no maximum)

Units

Dynamic?

Yes, it can be changed at any time.

Validation

No

When to Change

If performance problems occur with caching small directories, then 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.

Commitment Level

Unstable

dnlc_dir_max_size

Description

Maximum number of entries cached for one directory.

Data Type

Unsigned integer

Default

MAXUINT (no maximum)

Range

0 to MAXUINT

Dynamic?

Yes, it can be changed at any time.

Validation

No

When to Change

If performance problems occur with large directories, then decrease dnlc_dir_max_size.

Commitment Level

Unstable