\fBl2arc_feed_again\fR (int)
.ad
.RS 12n
-Turbo L2ARC warmup
+Turbo L2ARC warm-up. When the L2ARC is cold the fill interval will be set as
+fast as possible.
.sp
Use \fB1\fR for yes (default) and \fB0\fR to disable.
.RE
\fBl2arc_feed_min_ms\fR (ulong)
.ad
.RS 12n
-Min feed interval in milliseconds
+Min feed interval in milliseconds. Requires \fBl2arc_feed_again=1\fR and only
+applicable in related situations.
.sp
Default value: \fB200\fR.
.RE
\fBl2arc_headroom\fR (ulong)
.ad
.RS 12n
-Number of max device writes to precache
+How far through the ARC lists to search for L2ARC cacheable content, expressed
+as a multiplier of \fBl2arc_write_max\fR
.sp
Default value: \fB2\fR.
.RE
\fBl2arc_headroom_boost\fR (ulong)
.ad
.RS 12n
-Compressed l2arc_headroom multiplier
+Scales \fBl2arc_headroom\fR by this percentage when L2ARC contents are being
+successfully compressed before writing. A value of 100 disables this feature.
.sp
Default value: \fB200\fR.
.RE
\fBl2arc_noprefetch\fR (int)
.ad
.RS 12n
-Skip caching prefetched buffers
+Do not write buffers to L2ARC if they were prefetched but not used by
+applications
.sp
Use \fB1\fR for yes (default) and \fB0\fR to disable.
.RE
\fBl2arc_write_boost\fR (ulong)
.ad
.RS 12n
-Extra write bytes during device warmup
+Cold L2ARC devices will have \fBl2arc_write_nax\fR increased by this amount
+while they remain cold.
.sp
Default value: \fB8,388,608\fR.
.RE
may wish to specify a more realistic inflation factor, particularly if
they operate close to quota or capacity limits.
.sp
-Default value: 24
+Default value: \fB24\fR.
.RE
.sp
the traversal skips non-metadata blocks. It can be toggled once the
import has started to stop or start the traversal of non-metadata blocks.
.sp
-Default value: 1
+Default value: \fB1\fR.
.RE
.sp
the traversal is not performed. It can be toggled once the import has
started to stop or start the traversal.
.sp
-Default value: 1
+Default value: \fB1\fR.
.RE
.sp
Maximum concurrent I/Os during the traversal performed during an "extreme
rewind" (\fB-X\fR) pool import.
.sp
-Default value: 10000
+Default value: \fB10000\fR.
.RE
.sp
less than this amount of free space, most ZPL operations (e.g. write,
create) will return ENOSPC.
.sp
-Default value: 5
+Default value: \fB5\fR.
.RE
.sp
\fBzfs_arc_grow_retry\fR (int)
.ad
.RS 12n
-Seconds before growing arc size
+After a memory pressure event the ARC will wait this many seconds before trying
+to resume growth
.sp
Default value: \fB5\fR.
.RE
\fBzfs_arc_max\fR (ulong)
.ad
.RS 12n
-Max arc size
+Max arc size of ARC in bytes. If set to 0 then it will consume 1/2 of system
+RAM. This value must be at least 67108864 (64 megabytes).
+.sp
+This value can be changed dynamically with some caveats. It cannot be set back
+to 0 while running and reducing it below the current ARC size will not cause
+the ARC to shrink without memory pressure to induce shrinking.
.sp
Default value: \fB0\fR.
.RE
value defaults to 0 which indicates that 3/4 of the ARC may be used
for meta data.
.sp
+This value my be changed dynamically except that it cannot be set back to 0
+for 3/4 of the ARC; it must be set to an explicit value.
+.sp
Default value: \fB0\fR.
.RE
\fBzfs_arc_min_prefetch_lifespan\fR (int)
.ad
.RS 12n
-Min life of prefetch block
+Minimum time prefetched blocks are locked in the ARC, specified in jiffies.
+A value of 0 will default to 1 second.
.sp
-Default value: \fB100\fR.
+Default value: \fB0\fR.
.RE
.sp
the level of these "sub-lists". This parameters controls the number of
sub-lists per ARC state.
.sp
-Default value: 1 or the number of on-online CPUs, whichever is greater
+Default value: \fR1\fB or the number of online CPUs, whichever is greater
.RE
.sp
\fBzfs_dbuf_state_index\fR (int)
.ad
.RS 12n
-Calculate arc header index
+This feature is currently unused. It is normally used for controlling what
+reporting is available under /proc/spl/kstat/zfs.
.sp
Default value: \fB0\fR.
.RE
\fBzfs_deadman_enabled\fR (int)
.ad
.RS 12n
-Enable deadman timer
+Enable deadman timer. See description below.
.sp
Use \fB1\fR for yes (default) and \fB0\fR to disable.
.RE
The parameter \fBzfs_dirty_data_max_max\fR takes precedence over this
one. See the section "ZFS TRANSACTION DELAY".
.sp
-Default value: 25
+Default value: \fN25\fR.
.RE
.sp
\fBzfs_vdev_async_read_max_active\fR (int)
.ad
.RS 12n
-Maxium asynchronous read I/Os active to each device.
+Maximum asynchronous read I/Os active to each device.
See the section "ZFS I/O SCHEDULER".
.sp
Default value: \fB3\fR.
\fBzfs_vdev_async_write_max_active\fR (int)
.ad
.RS 12n
-Maxium asynchronous write I/Os active to each device.
+Maximum asynchronous write I/Os active to each device.
See the section "ZFS I/O SCHEDULER".
.sp
Default value: \fB10\fR.
\fBzfs_vdev_scrub_max_active\fR (int)
.ad
.RS 12n
-Maxium scrub I/Os active to each device.
+Maximum scrub I/Os active to each device.
See the section "ZFS I/O SCHEDULER".
.sp
Default value: \fB2\fR.
\fBzfs_vdev_sync_read_max_active\fR (int)
.ad
.RS 12n
-Maxium synchronous read I/Os active to each device.
+Maximum synchronous read I/Os active to each device.
See the section "ZFS I/O SCHEDULER".
.sp
Default value: \fB10\fR.
\fBzfs_vdev_sync_write_max_active\fR (int)
.ad
.RS 12n
-Maxium synchronous write I/Os active to each device.
+Maximum synchronous write I/Os active to each device.
See the section "ZFS I/O SCHEDULER".
.sp
Default value: \fB10\fR.
\fBzfs_free_min_time_ms\fR (int)
.ad
.RS 12n
-Min millisecs to free per txg
+During a \fRzfs destroy\fB operation using \fRfeature@async_destroy\fB a minimum
+of this much time will be spent working on freeing blocks per txg.
.sp
Default value: \fB1,000\fR.
.RE
\fBzfs_immediate_write_sz\fR (long)
.ad
.RS 12n
-Largest data block to write to zil
+Largest data block to write to zil. Larger blocks will be treated as if the
+dataset being written to had the property setting \fRlogbias=throughput\fB.
.sp
Default value: \fB32,768\fR.
.RE
.ad
.RS 12n
Metaslab groups are considered eligible for allocations if their
-fragmenation metric (measured as a percentage) is less than or equal to
+fragmentation metric (measured as a percentage) is less than or equal to
this value. If a metaslab group exceeds this threshold then it will be
skipped unless all metaslab groups within the metaslab class have also
crossed this threshold.
\fBzfs_no_scrub_io\fR (int)
.ad
.RS 12n
-Set for no scrub I/O
+Set for no scrub I/O. This results in scrubs not actually scrubbing data and
+simply doing a metadata crawl of the pool instead.
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzfs_no_scrub_prefetch\fR (int)
.ad
.RS 12n
-Set for no scrub prefetching
+Set to disable block prefetching for scrubs.
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzfs_nocacheflush\fR (int)
.ad
.RS 12n
-Disable cache flushes
+Disable cache flush operations on disks when writing. Beware, this may cause
+corruption if disks re-order writes.
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzfs_pd_bytes_max\fR (int)
.ad
.RS 12n
-The number of bytes which should be prefetched.
+The number of bytes which should be prefetched during a pool traversal
+(eg: \fRzfs send\fB or other data crawling operations)
.sp
Default value: \fB52,428,800\fR.
.RE
\fBzfs_read_history\fR (int)
.ad
.RS 12n
-Historic statistics for the last N reads
+Historic statistics for the last N reads will be available in
+\fR/proc/spl/kstat/zfs/POOLNAME/reads\fB
.sp
-Default value: \fB0\fR.
+Default value: \fB0\fR (no data is kept).
.RE
.sp
\fBzfs_resilver_min_time_ms\fR (int)
.ad
.RS 12n
-Min millisecs to resilver per txg
+Resilvers are processed by the sync thread. While resilvering it will spend
+at least this much time working on a resilver between txg flushes.
.sp
Default value: \fB3,000\fR.
.RE
\fBzfs_scan_min_time_ms\fR (int)
.ad
.RS 12n
-Min millisecs to scrub per txg
+Scrubs are processed by the sync thread. While scrubbing it will spend
+at least this much time working on a scrub between txg flushes.
.sp
Default value: \fB1,000\fR.
.RE
\fBzfs_send_corrupt_data\fR (int)
.ad
.RS 12n
-Allow to send corrupt data (ignore read/checksum errors when sending data)
+Allow sending of corrupt data (ignore read/checksum errors when sending data)
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzfs_sync_pass_deferred_free\fR (int)
.ad
.RS 12n
-Defer frees starting in this pass
+Flushing of data to disk is done in passes. Defer frees starting in this pass
.sp
Default value: \fB2\fR.
.RE
\fBzfs_sync_pass_rewrite\fR (int)
.ad
.RS 12n
-Rewrite new bps starting in this pass
+Rewrite new block pointers starting in this pass
.sp
Default value: \fB2\fR.
.RE
\fBzfs_top_maxinflight\fR (int)
.ad
.RS 12n
-Max I/Os per top-level vdev during scrub or resilver operations.
+Max concurrent I/Os per top-level vdev (mirrors or raidz arrays) allowed during
+scrub or resilver operations.
.sp
Default value: \fB32\fR.
.RE
\fBzfs_txg_history\fR (int)
.ad
.RS 12n
-Historic statistics for the last N txgs
+Historic statistics for the last N txgs will be available in
+\fR/proc/spl/kstat/zfs/POOLNAME/txgs\fB
.sp
Default value: \fB0\fR.
.RE
\fBzfs_txg_timeout\fR (int)
.ad
.RS 12n
-Max seconds worth of delta per txg
+Flush dirty data to disk at least every N seconds (maximum txg duration)
.sp
Default value: \fB5\fR.
.RE
.RS 12n
Shift size to inflate reads too
.sp
-Default value: \fB16\fR.
+Default value: \fB16\fR (effectively 65536).
.RE
.sp
\fBzfs_vdev_cache_max\fR (int)
.ad
.RS 12n
-Inflate reads small than max
+Inflate reads small than this value to meet the \fBzfs_vdev_cache_bshift\fR
+size.
+.sp
+Default value: \fB16384\fR.
.RE
.sp
\fBzfs_vdev_cache_size\fR (int)
.ad
.RS 12n
-Total size of the per-disk cache
+Total size of the per-disk cache in bytes.
+.sp
+Currently this feature is disabled as it has been found to not be helpful
+for performance and in some cases harmful.
.sp
Default value: \fB0\fR.
.RE
\fBzfs_vdev_read_gap_limit\fR (int)
.ad
.RS 12n
-Aggregate read I/O over gap
+Aggregate read I/O operations if the gap on-disk between them is within this
+threshold.
.sp
Default value: \fB32,768\fR.
.RE
\fBzfs_vdev_scheduler\fR (charp)
.ad
.RS 12n
-I/O scheduler
+Set the Linux I/O scheduler on whole disk vdevs to this scheduler
.sp
Default value: \fBnoop\fR.
.RE
\fBzfs_zevent_cols\fR (int)
.ad
.RS 12n
-Max event column width
+When zevents are logged to the console use this as the word wrap width.
.sp
Default value: \fB80\fR.
.RE
\fBzfs_zevent_len_max\fR (int)
.ad
.RS 12n
-Max event queue length
+Max event queue length. A value of 0 will result in a calculated value which
+increases with the number of CPUs in the system (minimum 64 events). Events
+in the queue can be viewed with the \fBzpool events\fR command.
.sp
Default value: \fB0\fR.
.RE
\fBzil_replay_disable\fR (int)
.ad
.RS 12n
-Disable intent logging replay
+Disable intent logging replay. Can be disabled for recovery from corrupted
+ZIL
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzio_delay_max\fR (int)
.ad
.RS 12n
-Max zio millisecond delay before posting event
+A zevent will be logged if a ZIO operation takes more than N milliseconds to
+complete. Note that this is only a logging facility, not a timeout on
+operations.
.sp
Default value: \fB30,000\fR.
.RE
\fBzvol_inhibit_dev\fR (uint)
.ad
.RS 12n
-Do not create zvol device nodes
+Do not create zvol device nodes. This may slightly improve startup time on
+systems with a very large number of zvols.
.sp
Use \fB1\fR for yes and \fB0\fR for no (default).
.RE
\fBzvol_major\fR (uint)
.ad
.RS 12n
-Major number for zvol device
+Major number for zvol block devices
.sp
Default value: \fB230\fR.
.RE
\fBzvol_max_discard_blocks\fR (ulong)
.ad
.RS 12n
-Max number of blocks to discard at once
+Discard (aka TRIM) operations done on zvols will be done in batches of this
+many blocks, where block size is determined by the \fBvolblocksize\fR property
+of a zvol.
.sp
Default value: \fB16,384\fR.
.RE