JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Solaris Tunable Parameters Reference Manual     Oracle Solaris 10 1/13 Information Library
search filter icon
search icon

Document Information

Preface

1.  Overview of Oracle Solaris System Tuning

2.  Oracle Solaris Kernel Tunable Parameters

3.  Oracle Solaris ZFS Tunable Parameters

Where to Find Tunable Parameter Information

Tuning ZFS Considerations

ZFS ARC Parameters

zfs_arc_min

zfs_arc_max

ZFS File-Level Prefetch

zfs_prefetch_disable

ZFS Device I/O Queue Depth

zfs_vdev_max_pending

ZFS and Cache Flushing

zfs_nocacheflush

ZFS Metadata Compression

zfs_mdcomp_disable

Tuning ZFS for Database Products

Tuning ZFS for an Oracle Database

Using ZFS with MySQL Considerations

4.  NFS Tunable Parameters

5.  Internet Protocol Suite Tunable Parameters

6.  System Facility Parameters

A.  Tunable Parameters Change History

B.  Revision History for This Manual

Index

ZFS and Cache Flushing

ZFS is designed to work with storage devices that manage a disk-level cache. ZFS commonly asks the storage device to ensure that data is safely placed on stable storage by requesting a cache flush. For JBOD storage, this works as designed and without problems. For many NVRAM-based storage arrays, a performance problem might occur if the array takes the cache flush request and actually does something with it, rather than ignoring it. Some storage arrays flush their large caches despite the fact that the NVRAM protection makes those caches as good as stable storage.

ZFS issues infrequent flushes (every 5 second or so) after the uberblock updates. The flushing infrequency is fairly inconsequential so no tuning is warranted here. ZFS also issues a flush every time an application requests a synchronous write (O_DSYNC, fsync, NFS commit, and so on). The completion of this type of flush is waited upon by the application and impacts performance. Greatly so, in fact. From a performance standpoint, this neutralizes the benefits of having an NVRAM-based storage.

zfs_nocacheflush

Description

This parameter controls ZFS write cache flushes for the entire system.

Oracle's Sun hardware should not require tuning this parameter. If you need to tune cache flushing, considering tuning it per hardware device. See the general instructions below. Contact your storage vendor for instructions on how to tell the storage devices to ignore the cache flushes sent by ZFS.

Data Type

Boolean

Default

0

Range

0 (enabled) or 1 (disabled)

Dynamic?

Yes

Validation

No

When to Change

Cache flush tuning was recently shown to help some SSD performance when used as log devices. This tuning syntax can be included in sd.conf but there must be only a single sd-config-list entry per vendor/product. For example:

sd-config-list = "ATA     TX43E10100GB0LSI","throttle-max:32, disksort:false, cache-nonvolatile:true";

As a last resort, when all LUNs exposed to ZFS come from NVRAM-protected storage array and procedures ensure that no unprotected LUNs will be added in the future, ZFS can be tuned to not issue the flush requests by setting zfs_nocacheflush. If some LUNs exposed to ZFS are not protected by NVRAM, then this tuning can lead to data loss, application level corruption, or even pool corruption. In some NVRAM-protected storage arrays, the cache flush command is a no-op, so tuning in this situation makes no performance difference.

Commitment Level

Unstable