Update documentation of l2arc_mfuonly
[zfs.git] / man / man5 / zfs-module-parameters.5
blob8778b53d37d5ba1d7cb9e374fa68ff3dc68cca96
1 '\" te
2 .\" Copyright (c) 2013 by Turbo Fredriksson <turbo@bayour.com>. All rights reserved.
3 .\" Copyright (c) 2019, 2020 by Delphix. All rights reserved.
4 .\" Copyright (c) 2019 Datto Inc.
5 .\" The contents of this file are subject to the terms of the Common Development
6 .\" and Distribution License (the "License").  You may not use this file except
7 .\" in compliance with the License. You can obtain a copy of the license at
8 .\" usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
9 .\"
10 .\" See the License for the specific language governing permissions and
11 .\" limitations under the License. When distributing Covered Code, include this
12 .\" CDDL HEADER in each file and include the License file at
13 .\" usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this
14 .\" CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your
15 .\" own identifying information:
16 .\" Portions Copyright [yyyy] [name of copyright owner]
17 .TH ZFS-MODULE-PARAMETERS 5 "Aug 24, 2020" OpenZFS
18 .SH NAME
19 zfs\-module\-parameters \- ZFS module parameters
20 .SH DESCRIPTION
21 .sp
22 .LP
23 Description of the different parameters to the ZFS module.
25 .SS "Module parameters"
26 .sp
27 .LP
29 .sp
30 .ne 2
31 .na
32 \fBdbuf_cache_max_bytes\fR (ulong)
33 .ad
34 .RS 12n
35 Maximum size in bytes of the dbuf cache.  The target size is determined by the
36 MIN versus \fB1/2^dbuf_cache_shift\fR (1/32) of the target ARC size.  The
37 behavior of the dbuf cache and its associated settings can be observed via the
38 \fB/proc/spl/kstat/zfs/dbufstats\fR kstat.
39 .sp
40 Default value: \fBULONG_MAX\fR.
41 .RE
43 .sp
44 .ne 2
45 .na
46 \fBdbuf_metadata_cache_max_bytes\fR (ulong)
47 .ad
48 .RS 12n
49 Maximum size in bytes of the metadata dbuf cache.  The target size is
50 determined by the MIN versus \fB1/2^dbuf_metadata_cache_shift\fR (1/64) of the
51 target ARC size.  The behavior of the metadata dbuf cache and its associated
52 settings can be observed via the \fB/proc/spl/kstat/zfs/dbufstats\fR kstat.
53 .sp
54 Default value: \fBULONG_MAX\fR.
55 .RE
57 .sp
58 .ne 2
59 .na
60 \fBdbuf_cache_hiwater_pct\fR (uint)
61 .ad
62 .RS 12n
63 The percentage over \fBdbuf_cache_max_bytes\fR when dbufs must be evicted
64 directly.
65 .sp
66 Default value: \fB10\fR%.
67 .RE
69 .sp
70 .ne 2
71 .na
72 \fBdbuf_cache_lowater_pct\fR (uint)
73 .ad
74 .RS 12n
75 The percentage below \fBdbuf_cache_max_bytes\fR when the evict thread stops
76 evicting dbufs.
77 .sp
78 Default value: \fB10\fR%.
79 .RE
81 .sp
82 .ne 2
83 .na
84 \fBdbuf_cache_shift\fR (int)
85 .ad
86 .RS 12n
87 Set the size of the dbuf cache, \fBdbuf_cache_max_bytes\fR, to a log2 fraction
88 of the target ARC size.
89 .sp
90 Default value: \fB5\fR.
91 .RE
93 .sp
94 .ne 2
95 .na
96 \fBdbuf_metadata_cache_shift\fR (int)
97 .ad
98 .RS 12n
99 Set the size of the dbuf metadata cache, \fBdbuf_metadata_cache_max_bytes\fR,
100 to a log2 fraction of the target ARC size.
102 Default value: \fB6\fR.
106 .ne 2
108 \fBdmu_object_alloc_chunk_shift\fR (int)
110 .RS 12n
111 dnode slots allocated in a single operation as a power of 2. The default value
112 minimizes lock contention for the bulk operation performed.
114 Default value: \fB7\fR (128).
118 .ne 2
120 \fBdmu_prefetch_max\fR (int)
122 .RS 12n
123 Limit the amount we can prefetch with one call to this amount (in bytes).
124 This helps to limit the amount of memory that can be used by prefetching.
126 Default value: \fB134,217,728\fR (128MB).
130 .ne 2
132 \fBignore_hole_birth\fR (int)
134 .RS 12n
135 This is an alias for \fBsend_holes_without_birth_time\fR.
139 .ne 2
141 \fBl2arc_feed_again\fR (int)
143 .RS 12n
144 Turbo L2ARC warm-up. When the L2ARC is cold the fill interval will be set as
145 fast as possible.
147 Use \fB1\fR for yes (default) and \fB0\fR to disable.
151 .ne 2
153 \fBl2arc_feed_min_ms\fR (ulong)
155 .RS 12n
156 Min feed interval in milliseconds. Requires \fBl2arc_feed_again=1\fR and only
157 applicable in related situations.
159 Default value: \fB200\fR.
163 .ne 2
165 \fBl2arc_feed_secs\fR (ulong)
167 .RS 12n
168 Seconds between L2ARC writing
170 Default value: \fB1\fR.
174 .ne 2
176 \fBl2arc_headroom\fR (ulong)
178 .RS 12n
179 How far through the ARC lists to search for L2ARC cacheable content, expressed
180 as a multiplier of \fBl2arc_write_max\fR.
181 ARC persistence across reboots can be achieved with persistent L2ARC by setting
182 this parameter to \fB0\fR allowing the full length of ARC lists to be searched
183 for cacheable content.
185 Default value: \fB2\fR.
189 .ne 2
191 \fBl2arc_headroom_boost\fR (ulong)
193 .RS 12n
194 Scales \fBl2arc_headroom\fR by this percentage when L2ARC contents are being
195 successfully compressed before writing. A value of \fB100\fR disables this
196 feature.
198 Default value: \fB200\fR%.
202 .ne 2
204 \fBl2arc_mfuonly\fR (int)
206 .RS 12n
207 Controls whether only MFU metadata and data are cached from ARC into L2ARC.
208 This may be desired to avoid wasting space on L2ARC when reading/writing large
209 amounts of data that are not expected to be accessed more than once. The
210 default is \fB0\fR, meaning both MRU and MFU data and metadata are cached.
211 When turning off (\fB0\fR) this feature some MRU buffers will still be present
212 in ARC and eventually cached on L2ARC. If \fBl2arc_noprefetch\fR is set to 0,
213 some prefetched buffers will be cached to L2ARC, and those might later
214 transition to MRU, in which case the \fBl2arc_mru_asize\fR arcstat will not
215 be 0. Regardless of \fBl2arc_noprefetch\fR, some MFU buffers might be evicted
216 from ARC, accessed later on as prefetches and transition to MRU as prefetches.
217 If accessed again they are counted as MRU and the \fBl2arc_mru_asize\fR arcstat
218 will not be 0. The ARC status of L2ARC buffers when they were first cached in
219 L2ARC can be seen in the \fBl2arc_mru_asize\fR, \fBl2arc_mfu_asize\fR and
220 \fBl2arc_prefetch_asize\fR arcstats when importing the pool or onlining a cache
221 device if persistent L2ARC is enabled. The \fBevicted_l2_eligible_mru\fR
222 arcstat does not take into account if this option is enabled as the information
223 provided by the evicted_l2_eligible_* arcstats can be used to decide if
224 toggling this option is appropriate for the current workload.
226 Use \fB0\fR for no (default) and \fB1\fR for yes.
230 .ne 2
232 \fBl2arc_meta_percent\fR (int)
234 .RS 12n
235 Percent of ARC size allowed for L2ARC-only headers.
236 Since L2ARC buffers are not evicted on memory pressure, too large amount of
237 headers on system with irrationaly large L2ARC can render it slow or unusable.
238 This parameter limits L2ARC writes and rebuild to achieve it.
240 Default value: \fB33\fR%.
244 .ne 2
246 \fBl2arc_trim_ahead\fR (ulong)
248 .RS 12n
249 Trims ahead of the current write size (\fBl2arc_write_max\fR) on L2ARC devices
250 by this percentage of write size if we have filled the device. If set to
251 \fB100\fR we TRIM twice the space required to accommodate upcoming writes. A
252 minimum of 64MB will be trimmed. It also enables TRIM of the whole L2ARC device
253 upon creation or addition to an existing pool or if the header of the device is
254 invalid upon importing a pool or onlining a cache device. A value of \fB0\fR
255 disables TRIM on L2ARC altogether and is the default as it can put significant
256 stress on the underlying storage devices. This will vary depending of how well
257 the specific device handles these commands.
259 Default value: \fB0\fR%.
263 .ne 2
265 \fBl2arc_noprefetch\fR (int)
267 .RS 12n
268 Do not write buffers to L2ARC if they were prefetched but not used by
269 applications. In case there are prefetched buffers in L2ARC and this option
270 is later set to \fB1\fR, we do not read the prefetched buffers from L2ARC.
271 Setting this option to \fB0\fR is useful for caching sequential reads from the
272 disks to L2ARC and serve those reads from L2ARC later on. This may be beneficial
273 in case the L2ARC device is significantly faster in sequential reads than the
274 disks of the pool.
276 Use \fB1\fR to disable (default) and \fB0\fR to enable caching/reading
277 prefetches to/from L2ARC..
281 .ne 2
283 \fBl2arc_norw\fR (int)
285 .RS 12n
286 No reads during writes.
288 Use \fB1\fR for yes and \fB0\fR for no (default).
292 .ne 2
294 \fBl2arc_write_boost\fR (ulong)
296 .RS 12n
297 Cold L2ARC devices will have \fBl2arc_write_max\fR increased by this amount
298 while they remain cold.
300 Default value: \fB8,388,608\fR.
304 .ne 2
306 \fBl2arc_write_max\fR (ulong)
308 .RS 12n
309 Max write bytes per interval.
311 Default value: \fB8,388,608\fR.
315 .ne 2
317 \fBl2arc_rebuild_enabled\fR (int)
319 .RS 12n
320 Rebuild the L2ARC when importing a pool (persistent L2ARC). This can be
321 disabled if there are problems importing a pool or attaching an L2ARC device
322 (e.g. the L2ARC device is slow in reading stored log metadata, or the metadata
323 has become somehow fragmented/unusable).
325 Use \fB1\fR for yes (default) and \fB0\fR for no.
329 .ne 2
331 \fBl2arc_rebuild_blocks_min_l2size\fR (ulong)
333 .RS 12n
334 Min size (in bytes) of an L2ARC device required in order to write log blocks
335 in it. The log blocks are used upon importing the pool to rebuild
336 the L2ARC (persistent L2ARC). Rationale: for L2ARC devices less than 1GB, the
337 amount of data l2arc_evict() evicts is significant compared to the amount of
338 restored L2ARC data. In this case do not write log blocks in L2ARC in order not
339 to waste space.
341 Default value: \fB1,073,741,824\fR (1GB).
345 .ne 2
347 \fBmetaslab_aliquot\fR (ulong)
349 .RS 12n
350 Metaslab granularity, in bytes. This is roughly similar to what would be
351 referred to as the "stripe size" in traditional RAID arrays. In normal
352 operation, ZFS will try to write this amount of data to a top-level vdev
353 before moving on to the next one.
355 Default value: \fB524,288\fR.
359 .ne 2
361 \fBmetaslab_bias_enabled\fR (int)
363 .RS 12n
364 Enable metaslab group biasing based on its vdev's over- or under-utilization
365 relative to the pool.
367 Use \fB1\fR for yes (default) and \fB0\fR for no.
371 .ne 2
373 \fBmetaslab_force_ganging\fR (ulong)
375 .RS 12n
376 Make some blocks above a certain size be gang blocks.  This option is used
377 by the test suite to facilitate testing.
379 Default value: \fB16,777,217\fR.
383 .ne 2
385 \fBzfs_keep_log_spacemaps_at_export\fR (int)
387 .RS 12n
388 Prevent log spacemaps from being destroyed during pool exports and destroys.
390 Use \fB1\fR for yes and \fB0\fR for no (default).
394 .ne 2
396 \fBzfs_metaslab_segment_weight_enabled\fR (int)
398 .RS 12n
399 Enable/disable segment-based metaslab selection.
401 Use \fB1\fR for yes (default) and \fB0\fR for no.
405 .ne 2
407 \fBzfs_metaslab_switch_threshold\fR (int)
409 .RS 12n
410 When using segment-based metaslab selection, continue allocating
411 from the active metaslab until \fBzfs_metaslab_switch_threshold\fR
412 worth of buckets have been exhausted.
414 Default value: \fB2\fR.
418 .ne 2
420 \fBmetaslab_debug_load\fR (int)
422 .RS 12n
423 Load all metaslabs during pool import.
425 Use \fB1\fR for yes and \fB0\fR for no (default).
429 .ne 2
431 \fBmetaslab_debug_unload\fR (int)
433 .RS 12n
434 Prevent metaslabs from being unloaded.
436 Use \fB1\fR for yes and \fB0\fR for no (default).
440 .ne 2
442 \fBmetaslab_fragmentation_factor_enabled\fR (int)
444 .RS 12n
445 Enable use of the fragmentation metric in computing metaslab weights.
447 Use \fB1\fR for yes (default) and \fB0\fR for no.
451 .ne 2
453 \fBmetaslab_df_max_search\fR (int)
455 .RS 12n
456 Maximum distance to search forward from the last offset. Without this limit,
457 fragmented pools can see >100,000 iterations and metaslab_block_picker()
458 becomes the performance limiting factor on high-performance storage.
460 With the default setting of 16MB, we typically see less than 500 iterations,
461 even with very fragmented, ashift=9 pools. The maximum number of iterations
462 possible is: \fBmetaslab_df_max_search / (2 * (1<<ashift))\fR.
463 With the default setting of 16MB this is 16*1024 (with ashift=9) or 2048
464 (with ashift=12).
466 Default value: \fB16,777,216\fR (16MB)
470 .ne 2
472 \fBmetaslab_df_use_largest_segment\fR (int)
474 .RS 12n
475 If we are not searching forward (due to metaslab_df_max_search,
476 metaslab_df_free_pct, or metaslab_df_alloc_threshold), this tunable controls
477 what segment is used.  If it is set, we will use the largest free segment.
478 If it is not set, we will use a segment of exactly the requested size (or
479 larger).
481 Use \fB1\fR for yes and \fB0\fR for no (default).
485 .ne 2
487 \fBzfs_metaslab_max_size_cache_sec\fR (ulong)
489 .RS 12n
490 When we unload a metaslab, we cache the size of the largest free chunk. We use
491 that cached size to determine whether or not to load a metaslab for a given
492 allocation. As more frees accumulate in that metaslab while it's unloaded, the
493 cached max size becomes less and less accurate. After a number of seconds
494 controlled by this tunable, we stop considering the cached max size and start
495 considering only the histogram instead.
497 Default value: \fB3600 seconds\fR (one hour)
501 .ne 2
503 \fBzfs_metaslab_mem_limit\fR (int)
505 .RS 12n
506 When we are loading a new metaslab, we check the amount of memory being used
507 to store metaslab range trees. If it is over a threshold, we attempt to unload
508 the least recently used metaslab to prevent the system from clogging all of
509 its memory with range trees. This tunable sets the percentage of total system
510 memory that is the threshold.
512 Default value: \fB25 percent\fR
516 .ne 2
518 \fBzfs_vdev_default_ms_count\fR (int)
520 .RS 12n
521 When a vdev is added target this number of metaslabs per top-level vdev.
523 Default value: \fB200\fR.
527 .ne 2
529 \fBzfs_vdev_default_ms_shift\fR (int)
531 .RS 12n
532 Default limit for metaslab size.
534 Default value: \fB29\fR [meaning (1 << 29) = 512MB].
538 .ne 2
540 \fBzfs_vdev_max_auto_ashift\fR (ulong)
542 .RS 12n
543 Maximum ashift used when optimizing for logical -> physical sector size on new
544 top-level vdevs.
546 Default value: \fBASHIFT_MAX\fR (16).
550 .ne 2
552 \fBzfs_vdev_min_auto_ashift\fR (ulong)
554 .RS 12n
555 Minimum ashift used when creating new top-level vdevs.
557 Default value: \fBASHIFT_MIN\fR (9).
561 .ne 2
563 \fBzfs_vdev_min_ms_count\fR (int)
565 .RS 12n
566 Minimum number of metaslabs to create in a top-level vdev.
568 Default value: \fB16\fR.
572 .ne 2
574 \fBvdev_validate_skip\fR (int)
576 .RS 12n
577 Skip label validation steps during pool import. Changing is not recommended
578 unless you know what you are doing and are recovering a damaged label.
580 Default value: \fB0\fR.
584 .ne 2
586 \fBzfs_vdev_ms_count_limit\fR (int)
588 .RS 12n
589 Practical upper limit of total metaslabs per top-level vdev.
591 Default value: \fB131,072\fR.
595 .ne 2
597 \fBmetaslab_preload_enabled\fR (int)
599 .RS 12n
600 Enable metaslab group preloading.
602 Use \fB1\fR for yes (default) and \fB0\fR for no.
606 .ne 2
608 \fBmetaslab_lba_weighting_enabled\fR (int)
610 .RS 12n
611 Give more weight to metaslabs with lower LBAs, assuming they have
612 greater bandwidth as is typically the case on a modern constant
613 angular velocity disk drive.
615 Use \fB1\fR for yes (default) and \fB0\fR for no.
619 .ne 2
621 \fBmetaslab_unload_delay\fR (int)
623 .RS 12n
624 After a metaslab is used, we keep it loaded for this many txgs, to attempt to
625 reduce unnecessary reloading. Note that both this many txgs and
626 \fBmetaslab_unload_delay_ms\fR milliseconds must pass before unloading will
627 occur.
629 Default value: \fB32\fR.
633 .ne 2
635 \fBmetaslab_unload_delay_ms\fR (int)
637 .RS 12n
638 After a metaslab is used, we keep it loaded for this many milliseconds, to
639 attempt to reduce unnecessary reloading. Note that both this many
640 milliseconds and \fBmetaslab_unload_delay\fR txgs must pass before unloading
641 will occur.
643 Default value: \fB600000\fR (ten minutes).
647 .ne 2
649 \fBsend_holes_without_birth_time\fR (int)
651 .RS 12n
652 When set, the hole_birth optimization will not be used, and all holes will
653 always be sent on zfs send.  This is useful if you suspect your datasets are
654 affected by a bug in hole_birth.
656 Use \fB1\fR for on (default) and \fB0\fR for off.
660 .ne 2
662 \fBspa_config_path\fR (charp)
664 .RS 12n
665 SPA config file
667 Default value: \fB/etc/zfs/zpool.cache\fR.
671 .ne 2
673 \fBspa_asize_inflation\fR (int)
675 .RS 12n
676 Multiplication factor used to estimate actual disk consumption from the
677 size of data being written. The default value is a worst case estimate,
678 but lower values may be valid for a given pool depending on its
679 configuration.  Pool administrators who understand the factors involved
680 may wish to specify a more realistic inflation factor, particularly if
681 they operate close to quota or capacity limits.
683 Default value: \fB24\fR.
687 .ne 2
689 \fBspa_load_print_vdev_tree\fR (int)
691 .RS 12n
692 Whether to print the vdev tree in the debugging message buffer during pool import.
693 Use 0 to disable and 1 to enable.
695 Default value: \fB0\fR.
699 .ne 2
701 \fBspa_load_verify_data\fR (int)
703 .RS 12n
704 Whether to traverse data blocks during an "extreme rewind" (\fB-X\fR)
705 import.  Use 0 to disable and 1 to enable.
707 An extreme rewind import normally performs a full traversal of all
708 blocks in the pool for verification.  If this parameter is set to 0,
709 the traversal skips non-metadata blocks.  It can be toggled once the
710 import has started to stop or start the traversal of non-metadata blocks.
712 Default value: \fB1\fR.
716 .ne 2
718 \fBspa_load_verify_metadata\fR (int)
720 .RS 12n
721 Whether to traverse blocks during an "extreme rewind" (\fB-X\fR)
722 pool import.  Use 0 to disable and 1 to enable.
724 An extreme rewind import normally performs a full traversal of all
725 blocks in the pool for verification.  If this parameter is set to 0,
726 the traversal is not performed.  It can be toggled once the import has
727 started to stop or start the traversal.
729 Default value: \fB1\fR.
733 .ne 2
735 \fBspa_load_verify_shift\fR (int)
737 .RS 12n
738 Sets the maximum number of bytes to consume during pool import to the log2
739 fraction of the target ARC size.
741 Default value: \fB4\fR.
745 .ne 2
747 \fBspa_slop_shift\fR (int)
749 .RS 12n
750 Normally, we don't allow the last 3.2% (1/(2^spa_slop_shift)) of space
751 in the pool to be consumed.  This ensures that we don't run the pool
752 completely out of space, due to unaccounted changes (e.g. to the MOS).
753 It also limits the worst-case time to allocate space.  If we have
754 less than this amount of free space, most ZPL operations (e.g. write,
755 create) will return ENOSPC.
757 Default value: \fB5\fR.
761 .ne 2
763 \fBvdev_removal_max_span\fR (int)
765 .RS 12n
766 During top-level vdev removal, chunks of data are copied from the vdev
767 which may include free space in order to trade bandwidth for IOPS.
768 This parameter determines the maximum span of free space (in bytes)
769 which will be included as "unnecessary" data in a chunk of copied data.
771 The default value here was chosen to align with
772 \fBzfs_vdev_read_gap_limit\fR, which is a similar concept when doing
773 regular reads (but there's no reason it has to be the same).
775 Default value: \fB32,768\fR.
779 .ne 2
781 \fBvdev_file_logical_ashift\fR (ulong)
783 .RS 12n
784 Logical ashift for file-based devices.
786 Default value: \fB9\fR.
790 .ne 2
792 \fBvdev_file_physical_ashift\fR (ulong)
794 .RS 12n
795 Physical ashift for file-based devices.
797 Default value: \fB9\fR.
801 .ne 2
803 \fBzap_iterate_prefetch\fR (int)
805 .RS 12n
806 If this is set, when we start iterating over a ZAP object, zfs will prefetch
807 the entire object (all leaf blocks).  However, this is limited by
808 \fBdmu_prefetch_max\fR.
810 Use \fB1\fR for on (default) and \fB0\fR for off.
814 .ne 2
816 \fBzfetch_array_rd_sz\fR (ulong)
818 .RS 12n
819 If prefetching is enabled, disable prefetching for reads larger than this size.
821 Default value: \fB1,048,576\fR.
825 .ne 2
827 \fBzfetch_max_distance\fR (uint)
829 .RS 12n
830 Max bytes to prefetch per stream (default 8MB).
832 Default value: \fB8,388,608\fR.
836 .ne 2
838 \fBzfetch_max_streams\fR (uint)
840 .RS 12n
841 Max number of streams per zfetch (prefetch streams per file).
843 Default value: \fB8\fR.
847 .ne 2
849 \fBzfetch_min_sec_reap\fR (uint)
851 .RS 12n
852 Min time before an active prefetch stream can be reclaimed
854 Default value: \fB2\fR.
858 .ne 2
860 \fBzfs_abd_scatter_enabled\fR (int)
862 .RS 12n
863 Enables ARC from using scatter/gather lists and forces all allocations to be
864 linear in kernel memory. Disabling can improve performance in some code paths
865 at the expense of fragmented kernel memory.
867 Default value: \fB1\fR.
871 .ne 2
873 \fBzfs_abd_scatter_max_order\fR (iunt)
875 .RS 12n
876 Maximum number of consecutive memory pages allocated in a single block for
877 scatter/gather lists. Default value is specified by the kernel itself.
879 Default value: \fB10\fR at the time of this writing.
883 .ne 2
885 \fBzfs_abd_scatter_min_size\fR (uint)
887 .RS 12n
888 This is the minimum allocation size that will use scatter (page-based)
889 ABD's.  Smaller allocations will use linear ABD's.
891 Default value: \fB1536\fR (512B and 1KB allocations will be linear).
895 .ne 2
897 \fBzfs_arc_dnode_limit\fR (ulong)
899 .RS 12n
900 When the number of bytes consumed by dnodes in the ARC exceeds this number of
901 bytes, try to unpin some of it in response to demand for non-metadata. This
902 value acts as a ceiling to the amount of dnode metadata, and defaults to 0 which
903 indicates that a percent which is based on \fBzfs_arc_dnode_limit_percent\fR of
904 the ARC meta buffers that may be used for dnodes.
906 See also \fBzfs_arc_meta_prune\fR which serves a similar purpose but is used
907 when the amount of metadata in the ARC exceeds \fBzfs_arc_meta_limit\fR rather
908 than in response to overall demand for non-metadata.
911 Default value: \fB0\fR.
915 .ne 2
917 \fBzfs_arc_dnode_limit_percent\fR (ulong)
919 .RS 12n
920 Percentage that can be consumed by dnodes of ARC meta buffers.
922 See also \fBzfs_arc_dnode_limit\fR which serves a similar purpose but has a
923 higher priority if set to nonzero value.
925 Default value: \fB10\fR%.
929 .ne 2
931 \fBzfs_arc_dnode_reduce_percent\fR (ulong)
933 .RS 12n
934 Percentage of ARC dnodes to try to scan in response to demand for non-metadata
935 when the number of bytes consumed by dnodes exceeds \fBzfs_arc_dnode_limit\fR.
938 Default value: \fB10\fR% of the number of dnodes in the ARC.
942 .ne 2
944 \fBzfs_arc_average_blocksize\fR (int)
946 .RS 12n
947 The ARC's buffer hash table is sized based on the assumption of an average
948 block size of \fBzfs_arc_average_blocksize\fR (default 8K).  This works out
949 to roughly 1MB of hash table per 1GB of physical memory with 8-byte pointers.
950 For configurations with a known larger average block size this value can be
951 increased to reduce the memory footprint.
954 Default value: \fB8192\fR.
958 .ne 2
960 \fBzfs_arc_eviction_pct\fR (int)
962 .RS 12n
963 When \fBarc_is_overflowing()\fR, \fBarc_get_data_impl()\fR waits for this
964 percent of the requested amount of data to be evicted.  For example, by
965 default for every 2KB that's evicted, 1KB of it may be "reused" by a new
966 allocation. Since this is above 100%, it ensures that progress is made
967 towards getting \fBarc_size\fR under \fBarc_c\fR.  Since this is finite, it
968 ensures that allocations can still happen, even during the potentially long
969 time that \fBarc_size\fR is more than \fBarc_c\fR.
971 Default value: \fB200\fR.
975 .ne 2
977 \fBzfs_arc_evict_batch_limit\fR (int)
979 .RS 12n
980 Number ARC headers to evict per sub-list before proceeding to another sub-list.
981 This batch-style operation prevents entire sub-lists from being evicted at once
982 but comes at a cost of additional unlocking and locking.
984 Default value: \fB10\fR.
988 .ne 2
990 \fBzfs_arc_grow_retry\fR (int)
992 .RS 12n
993 If set to a non zero value, it will replace the arc_grow_retry value with this value.
994 The arc_grow_retry value (default 5) is the number of seconds the ARC will wait before
995 trying to resume growth after a memory pressure event.
997 Default value: \fB0\fR.
1001 .ne 2
1003 \fBzfs_arc_lotsfree_percent\fR (int)
1005 .RS 12n
1006 Throttle I/O when free system memory drops below this percentage of total
1007 system memory.  Setting this value to 0 will disable the throttle.
1009 Default value: \fB10\fR%.
1013 .ne 2
1015 \fBzfs_arc_max\fR (ulong)
1017 .RS 12n
1018 Max size of ARC in bytes.  If set to 0 then the max size of ARC is determined
1019 by the amount of system memory installed.  For Linux, 1/2 of system memory will
1020 be used as the limit.  For FreeBSD, the larger of all system memory - 1GB or
1021 5/8 of system memory will be used as the limit.  This value must be at least
1022 67108864 (64 megabytes).
1024 This value can be changed dynamically with some caveats. It cannot be set back
1025 to 0 while running and reducing it below the current ARC size will not cause
1026 the ARC to shrink without memory pressure to induce shrinking.
1028 Default value: \fB0\fR.
1032 .ne 2
1034 \fBzfs_arc_meta_adjust_restarts\fR (ulong)
1036 .RS 12n
1037 The number of restart passes to make while scanning the ARC attempting
1038 the free buffers in order to stay below the \fBzfs_arc_meta_limit\fR.
1039 This value should not need to be tuned but is available to facilitate
1040 performance analysis.
1042 Default value: \fB4096\fR.
1046 .ne 2
1048 \fBzfs_arc_meta_limit\fR (ulong)
1050 .RS 12n
1051 The maximum allowed size in bytes that meta data buffers are allowed to
1052 consume in the ARC.  When this limit is reached meta data buffers will
1053 be reclaimed even if the overall arc_c_max has not been reached.  This
1054 value defaults to 0 which indicates that a percent which is based on
1055 \fBzfs_arc_meta_limit_percent\fR of the ARC may be used for meta data.
1057 This value my be changed dynamically except that it cannot be set back to 0
1058 for a specific percent of the ARC; it must be set to an explicit value.
1060 Default value: \fB0\fR.
1064 .ne 2
1066 \fBzfs_arc_meta_limit_percent\fR (ulong)
1068 .RS 12n
1069 Percentage of ARC buffers that can be used for meta data.
1071 See also \fBzfs_arc_meta_limit\fR which serves a similar purpose but has a
1072 higher priority if set to nonzero value.
1075 Default value: \fB75\fR%.
1079 .ne 2
1081 \fBzfs_arc_meta_min\fR (ulong)
1083 .RS 12n
1084 The minimum allowed size in bytes that meta data buffers may consume in
1085 the ARC.  This value defaults to 0 which disables a floor on the amount
1086 of the ARC devoted meta data.
1088 Default value: \fB0\fR.
1092 .ne 2
1094 \fBzfs_arc_meta_prune\fR (int)
1096 .RS 12n
1097 The number of dentries and inodes to be scanned looking for entries
1098 which can be dropped.  This may be required when the ARC reaches the
1099 \fBzfs_arc_meta_limit\fR because dentries and inodes can pin buffers
1100 in the ARC.  Increasing this value will cause to dentry and inode caches
1101 to be pruned more aggressively.  Setting this value to 0 will disable
1102 pruning the inode and dentry caches.
1104 Default value: \fB10,000\fR.
1108 .ne 2
1110 \fBzfs_arc_meta_strategy\fR (int)
1112 .RS 12n
1113 Define the strategy for ARC meta data buffer eviction (meta reclaim strategy).
1114 A value of 0 (META_ONLY) will evict only the ARC meta data buffers.
1115 A value of 1 (BALANCED) indicates that additional data buffers may be evicted if
1116 that is required to in order to evict the required number of meta data buffers.
1118 Default value: \fB1\fR.
1122 .ne 2
1124 \fBzfs_arc_min\fR (ulong)
1126 .RS 12n
1127 Min size of ARC in bytes. If set to 0 then arc_c_min will default to
1128 consuming the larger of 32M or 1/32 of total system memory.
1130 Default value: \fB0\fR.
1134 .ne 2
1136 \fBzfs_arc_min_prefetch_ms\fR (int)
1138 .RS 12n
1139 Minimum time prefetched blocks are locked in the ARC, specified in ms.
1140 A value of \fB0\fR will default to 1000 ms.
1142 Default value: \fB0\fR.
1146 .ne 2
1148 \fBzfs_arc_min_prescient_prefetch_ms\fR (int)
1150 .RS 12n
1151 Minimum time "prescient prefetched" blocks are locked in the ARC, specified
1152 in ms. These blocks are meant to be prefetched fairly aggressively ahead of
1153 the code that may use them. A value of \fB0\fR will default to 6000 ms.
1155 Default value: \fB0\fR.
1159 .ne 2
1161 \fBzfs_max_missing_tvds\fR (int)
1163 .RS 12n
1164 Number of missing top-level vdevs which will be allowed during
1165 pool import (only in read-only mode).
1167 Default value: \fB0\fR
1171 .ne 2
1173 \fBzfs_max_nvlist_src_size\fR (ulong)
1175 .RS 12n
1176 Maximum size in bytes allowed to be passed as zc_nvlist_src_size for ioctls on
1177 /dev/zfs. This prevents a user from causing the kernel to allocate an excessive
1178 amount of memory. When the limit is exceeded, the ioctl fails with EINVAL and a
1179 description of the error is sent to the zfs-dbgmsg log. This parameter should
1180 not need to be touched under normal circumstances. On FreeBSD, the default is
1181 based on the system limit on user wired memory. On Linux, the default is
1182 \fBKMALLOC_MAX_SIZE\fR .
1184 Default value: \fB0\fR (kernel decides)
1188 .ne 2
1190 \fBzfs_multilist_num_sublists\fR (int)
1192 .RS 12n
1193 To allow more fine-grained locking, each ARC state contains a series
1194 of lists for both data and meta data objects.  Locking is performed at
1195 the level of these "sub-lists".  This parameters controls the number of
1196 sub-lists per ARC state, and also applies to other uses of the
1197 multilist data structure.
1199 Default value: \fB4\fR or the number of online CPUs, whichever is greater
1203 .ne 2
1205 \fBzfs_arc_overflow_shift\fR (int)
1207 .RS 12n
1208 The ARC size is considered to be overflowing if it exceeds the current
1209 ARC target size (arc_c) by a threshold determined by this parameter.
1210 The threshold is calculated as a fraction of arc_c using the formula
1211 "arc_c >> \fBzfs_arc_overflow_shift\fR".
1213 The default value of 8 causes the ARC to be considered to be overflowing
1214 if it exceeds the target size by 1/256th (0.3%) of the target size.
1216 When the ARC is overflowing, new buffer allocations are stalled until
1217 the reclaim thread catches up and the overflow condition no longer exists.
1219 Default value: \fB8\fR.
1223 .ne 2
1226 \fBzfs_arc_p_min_shift\fR (int)
1228 .RS 12n
1229 If set to a non zero value, this will update arc_p_min_shift (default 4)
1230 with the new value.
1231 arc_p_min_shift is used to shift of arc_c for calculating both min and max
1232 max arc_p
1234 Default value: \fB0\fR.
1238 .ne 2
1240 \fBzfs_arc_p_dampener_disable\fR (int)
1242 .RS 12n
1243 Disable arc_p adapt dampener
1245 Use \fB1\fR for yes (default) and \fB0\fR to disable.
1249 .ne 2
1251 \fBzfs_arc_shrink_shift\fR (int)
1253 .RS 12n
1254 If set to a non zero value, this will update arc_shrink_shift (default 7)
1255 with the new value.
1257 Default value: \fB0\fR.
1261 .ne 2
1263 \fBzfs_arc_pc_percent\fR (uint)
1265 .RS 12n
1266 Percent of pagecache to reclaim arc to
1268 This tunable allows ZFS arc to play more nicely with the kernel's LRU
1269 pagecache. It can guarantee that the ARC size won't collapse under scanning
1270 pressure on the pagecache, yet still allows arc to be reclaimed down to
1271 zfs_arc_min if necessary. This value is specified as percent of pagecache
1272 size (as measured by NR_FILE_PAGES) where that percent may exceed 100. This
1273 only operates during memory pressure/reclaim.
1275 Default value: \fB0\fR% (disabled).
1279 .ne 2
1281 \fBzfs_arc_shrinker_limit\fR (int)
1283 .RS 12n
1284 This is a limit on how many pages the ARC shrinker makes available for
1285 eviction in response to one page allocation attempt.  Note that in
1286 practice, the kernel's shrinker can ask us to evict up to about 4x this
1287 for one allocation attempt.
1289 The default limit of 10,000 (in practice, 160MB per allocation attempt with
1290 4K pages) limits the amount of time spent attempting to reclaim ARC memory to
1291 less than 100ms per allocation attempt, even with a small average compressed
1292 block size of ~8KB.
1294 The parameter can be set to 0 (zero) to disable the limit.
1296 This parameter only applies on Linux.
1298 Default value: \fB10,000\fR.
1302 .ne 2
1304 \fBzfs_arc_sys_free\fR (ulong)
1306 .RS 12n
1307 The target number of bytes the ARC should leave as free memory on the system.
1308 Defaults to the larger of 1/64 of physical memory or 512K.  Setting this
1309 option to a non-zero value will override the default.
1311 Default value: \fB0\fR.
1315 .ne 2
1317 \fBzfs_autoimport_disable\fR (int)
1319 .RS 12n
1320 Disable pool import at module load by ignoring the cache file (typically \fB/etc/zfs/zpool.cache\fR).
1322 Use \fB1\fR for yes (default) and \fB0\fR for no.
1326 .ne 2
1328 \fBzfs_checksum_events_per_second\fR (uint)
1330 .RS 12n
1331 Rate limit checksum events to this many per second.  Note that this should
1332 not be set below the zed thresholds (currently 10 checksums over 10 sec)
1333 or else zed may not trigger any action.
1335 Default value: 20
1339 .ne 2
1341 \fBzfs_commit_timeout_pct\fR (int)
1343 .RS 12n
1344 This controls the amount of time that a ZIL block (lwb) will remain "open"
1345 when it isn't "full", and it has a thread waiting for it to be committed to
1346 stable storage.  The timeout is scaled based on a percentage of the last lwb
1347 latency to avoid significantly impacting the latency of each individual
1348 transaction record (itx).
1350 Default value: \fB5\fR%.
1354 .ne 2
1356 \fBzfs_condense_indirect_commit_entry_delay_ms\fR (int)
1358 .RS 12n
1359 Vdev indirection layer (used for device removal) sleeps for this many
1360 milliseconds during mapping generation. Intended for use with the test suite
1361 to throttle vdev removal speed.
1363 Default value: \fB0\fR (no throttle).
1367 .ne 2
1369 \fBzfs_condense_indirect_vdevs_enable\fR (int)
1371 .RS 12n
1372 Enable condensing indirect vdev mappings.  When set to a non-zero value,
1373 attempt to condense indirect vdev mappings if the mapping uses more than
1374 \fBzfs_condense_min_mapping_bytes\fR bytes of memory and if the obsolete
1375 space map object uses more than \fBzfs_condense_max_obsolete_bytes\fR
1376 bytes on-disk.  The condensing process is an attempt to save memory by
1377 removing obsolete mappings.
1379 Default value: \fB1\fR.
1383 .ne 2
1385 \fBzfs_condense_max_obsolete_bytes\fR (ulong)
1387 .RS 12n
1388 Only attempt to condense indirect vdev mappings if the on-disk size
1389 of the obsolete space map object is greater than this number of bytes
1390 (see \fBfBzfs_condense_indirect_vdevs_enable\fR).
1392 Default value: \fB1,073,741,824\fR.
1396 .ne 2
1398 \fBzfs_condense_min_mapping_bytes\fR (ulong)
1400 .RS 12n
1401 Minimum size vdev mapping to attempt to condense (see
1402 \fBzfs_condense_indirect_vdevs_enable\fR).
1404 Default value: \fB131,072\fR.
1408 .ne 2
1410 \fBzfs_dbgmsg_enable\fR (int)
1412 .RS 12n
1413 Internally ZFS keeps a small log to facilitate debugging.  By default the log
1414 is disabled, to enable it set this option to 1.  The contents of the log can
1415 be accessed by reading the /proc/spl/kstat/zfs/dbgmsg file.  Writing 0 to
1416 this proc file clears the log.
1418 Default value: \fB0\fR.
1422 .ne 2
1424 \fBzfs_dbgmsg_maxsize\fR (int)
1426 .RS 12n
1427 The maximum size in bytes of the internal ZFS debug log.
1429 Default value: \fB4M\fR.
1433 .ne 2
1435 \fBzfs_dbuf_state_index\fR (int)
1437 .RS 12n
1438 This feature is currently unused. It is normally used for controlling what
1439 reporting is available under /proc/spl/kstat/zfs.
1441 Default value: \fB0\fR.
1445 .ne 2
1447 \fBzfs_deadman_enabled\fR (int)
1449 .RS 12n
1450 When a pool sync operation takes longer than \fBzfs_deadman_synctime_ms\fR
1451 milliseconds, or when an individual I/O takes longer than
1452 \fBzfs_deadman_ziotime_ms\fR milliseconds, then the operation is considered to
1453 be "hung".  If \fBzfs_deadman_enabled\fR is set then the deadman behavior is
1454 invoked as described by the \fBzfs_deadman_failmode\fR module option.
1455 By default the deadman is enabled and configured to \fBwait\fR which results
1456 in "hung" I/Os only being logged.  The deadman is automatically disabled
1457 when a pool gets suspended.
1459 Default value: \fB1\fR.
1463 .ne 2
1465 \fBzfs_deadman_failmode\fR (charp)
1467 .RS 12n
1468 Controls the failure behavior when the deadman detects a "hung" I/O.  Valid
1469 values are \fBwait\fR, \fBcontinue\fR, and \fBpanic\fR.
1471 \fBwait\fR - Wait for a "hung" I/O to complete.  For each "hung" I/O a
1472 "deadman" event will be posted describing that I/O.
1474 \fBcontinue\fR - Attempt to recover from a "hung" I/O by re-dispatching it
1475 to the I/O pipeline if possible.
1477 \fBpanic\fR - Panic the system.  This can be used to facilitate an automatic
1478 fail-over to a properly configured fail-over partner.
1480 Default value: \fBwait\fR.
1484 .ne 2
1486 \fBzfs_deadman_checktime_ms\fR (int)
1488 .RS 12n
1489 Check time in milliseconds. This defines the frequency at which we check
1490 for hung I/O and potentially invoke the \fBzfs_deadman_failmode\fR behavior.
1492 Default value: \fB60,000\fR.
1496 .ne 2
1498 \fBzfs_deadman_synctime_ms\fR (ulong)
1500 .RS 12n
1501 Interval in milliseconds after which the deadman is triggered and also
1502 the interval after which a pool sync operation is considered to be "hung".
1503 Once this limit is exceeded the deadman will be invoked every
1504 \fBzfs_deadman_checktime_ms\fR milliseconds until the pool sync completes.
1506 Default value: \fB600,000\fR.
1510 .ne 2
1512 \fBzfs_deadman_ziotime_ms\fR (ulong)
1514 .RS 12n
1515 Interval in milliseconds after which the deadman is triggered and an
1516 individual I/O operation is considered to be "hung".  As long as the I/O
1517 remains "hung" the deadman will be invoked every \fBzfs_deadman_checktime_ms\fR
1518 milliseconds until the I/O completes.
1520 Default value: \fB300,000\fR.
1524 .ne 2
1526 \fBzfs_dedup_prefetch\fR (int)
1528 .RS 12n
1529 Enable prefetching dedup-ed blks
1531 Use \fB1\fR for yes and \fB0\fR to disable (default).
1535 .ne 2
1537 \fBzfs_delay_min_dirty_percent\fR (int)
1539 .RS 12n
1540 Start to delay each transaction once there is this amount of dirty data,
1541 expressed as a percentage of \fBzfs_dirty_data_max\fR.
1542 This value should be >= zfs_vdev_async_write_active_max_dirty_percent.
1543 See the section "ZFS TRANSACTION DELAY".
1545 Default value: \fB60\fR%.
1549 .ne 2
1551 \fBzfs_delay_scale\fR (int)
1553 .RS 12n
1554 This controls how quickly the transaction delay approaches infinity.
1555 Larger values cause longer delays for a given amount of dirty data.
1557 For the smoothest delay, this value should be about 1 billion divided
1558 by the maximum number of operations per second.  This will smoothly
1559 handle between 10x and 1/10th this number.
1561 See the section "ZFS TRANSACTION DELAY".
1563 Note: \fBzfs_delay_scale\fR * \fBzfs_dirty_data_max\fR must be < 2^64.
1565 Default value: \fB500,000\fR.
1569 .ne 2
1571 \fBzfs_disable_ivset_guid_check\fR (int)
1573 .RS 12n
1574 Disables requirement for IVset guids to be present and match when doing a raw
1575 receive of encrypted datasets. Intended for users whose pools were created with
1576 ZFS on Linux pre-release versions and now have compatibility issues.
1578 Default value: \fB0\fR.
1582 .ne 2
1584 \fBzfs_key_max_salt_uses\fR (ulong)
1586 .RS 12n
1587 Maximum number of uses of a single salt value before generating a new one for
1588 encrypted datasets. The default value is also the maximum that will be
1589 accepted.
1591 Default value: \fB400,000,000\fR.
1595 .ne 2
1597 \fBzfs_object_mutex_size\fR (uint)
1599 .RS 12n
1600 Size of the znode hashtable used for holds.
1602 Due to the need to hold locks on objects that may not exist yet, kernel mutexes
1603 are not created per-object and instead a hashtable is used where collisions
1604 will result in objects waiting when there is not actually contention on the
1605 same object.
1607 Default value: \fB64\fR.
1611 .ne 2
1613 \fBzfs_slow_io_events_per_second\fR (int)
1615 .RS 12n
1616 Rate limit delay zevents (which report slow I/Os) to this many per second.
1618 Default value: 20
1622 .ne 2
1624 \fBzfs_unflushed_max_mem_amt\fR (ulong)
1626 .RS 12n
1627 Upper-bound limit for unflushed metadata changes to be held by the
1628 log spacemap in memory (in bytes).
1630 Default value: \fB1,073,741,824\fR (1GB).
1634 .ne 2
1636 \fBzfs_unflushed_max_mem_ppm\fR (ulong)
1638 .RS 12n
1639 Percentage of the overall system memory that ZFS allows to be used
1640 for unflushed metadata changes by the log spacemap.
1641 (value is calculated over 1000000 for finer granularity).
1643 Default value: \fB1000\fR (which is divided by 1000000, resulting in
1644 the limit to be \fB0.1\fR% of memory)
1648 .ne 2
1650 \fBzfs_unflushed_log_block_max\fR (ulong)
1652 .RS 12n
1653 Describes the maximum number of log spacemap blocks allowed for each pool.
1654 The default value of 262144 means that the space in all the log spacemaps
1655 can add up to no more than 262144 blocks (which means 32GB of logical
1656 space before compression and ditto blocks, assuming that blocksize is
1657 128k).
1659 This tunable is important because it involves a trade-off between import
1660 time after an unclean export and the frequency of flushing metaslabs.
1661 The higher this number is, the more log blocks we allow when the pool is
1662 active which means that we flush metaslabs less often and thus decrease
1663 the number of I/Os for spacemap updates per TXG.
1664 At the same time though, that means that in the event of an unclean export,
1665 there will be more log spacemap blocks for us to read, inducing overhead
1666 in the import time of the pool.
1667 The lower the number, the amount of flushing increases destroying log
1668 blocks quicker as they become obsolete faster, which leaves less blocks
1669 to be read during import time after a crash.
1671 Each log spacemap block existing during pool import leads to approximately
1672 one extra logical I/O issued.
1673 This is the reason why this tunable is exposed in terms of blocks rather
1674 than space used.
1676 Default value: \fB262144\fR (256K).
1680 .ne 2
1682 \fBzfs_unflushed_log_block_min\fR (ulong)
1684 .RS 12n
1685 If the number of metaslabs is small and our incoming rate is high, we
1686 could get into a situation that we are flushing all our metaslabs every
1687 TXG.
1688 Thus we always allow at least this many log blocks.
1690 Default value: \fB1000\fR.
1694 .ne 2
1696 \fBzfs_unflushed_log_block_pct\fR (ulong)
1698 .RS 12n
1699 Tunable used to determine the number of blocks that can be used for
1700 the spacemap log, expressed as a percentage of the total number of
1701 metaslabs in the pool.
1703 Default value: \fB400\fR (read as \fB400\fR% - meaning that the number
1704 of log spacemap blocks are capped at 4 times the number of
1705 metaslabs in the pool).
1709 .ne 2
1711 \fBzfs_unlink_suspend_progress\fR (uint)
1713 .RS 12n
1714 When enabled, files will not be asynchronously removed from the list of pending
1715 unlinks and the space they consume will be leaked. Once this option has been
1716 disabled and the dataset is remounted, the pending unlinks will be processed
1717 and the freed space returned to the pool.
1718 This option is used by the test suite to facilitate testing.
1720 Uses \fB0\fR (default) to allow progress and \fB1\fR to pause progress.
1724 .ne 2
1726 \fBzfs_delete_blocks\fR (ulong)
1728 .RS 12n
1729 This is the used to define a large file for the purposes of delete.  Files
1730 containing more than \fBzfs_delete_blocks\fR will be deleted asynchronously
1731 while smaller files are deleted synchronously.  Decreasing this value will
1732 reduce the time spent in an unlink(2) system call at the expense of a longer
1733 delay before the freed space is available.
1735 Default value: \fB20,480\fR.
1739 .ne 2
1741 \fBzfs_dirty_data_max\fR (int)
1743 .RS 12n
1744 Determines the dirty space limit in bytes.  Once this limit is exceeded, new
1745 writes are halted until space frees up. This parameter takes precedence
1746 over \fBzfs_dirty_data_max_percent\fR.
1747 See the section "ZFS TRANSACTION DELAY".
1749 Default value: \fB10\fR% of physical RAM, capped at \fBzfs_dirty_data_max_max\fR.
1753 .ne 2
1755 \fBzfs_dirty_data_max_max\fR (int)
1757 .RS 12n
1758 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed in bytes.
1759 This limit is only enforced at module load time, and will be ignored if
1760 \fBzfs_dirty_data_max\fR is later changed.  This parameter takes
1761 precedence over \fBzfs_dirty_data_max_max_percent\fR. See the section
1762 "ZFS TRANSACTION DELAY".
1764 Default value: \fB25\fR% of physical RAM.
1768 .ne 2
1770 \fBzfs_dirty_data_max_max_percent\fR (int)
1772 .RS 12n
1773 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed as a
1774 percentage of physical RAM.  This limit is only enforced at module load
1775 time, and will be ignored if \fBzfs_dirty_data_max\fR is later changed.
1776 The parameter \fBzfs_dirty_data_max_max\fR takes precedence over this
1777 one. See the section "ZFS TRANSACTION DELAY".
1779 Default value: \fB25\fR%.
1783 .ne 2
1785 \fBzfs_dirty_data_max_percent\fR (int)
1787 .RS 12n
1788 Determines the dirty space limit, expressed as a percentage of all
1789 memory.  Once this limit is exceeded, new writes are halted until space frees
1790 up.  The parameter \fBzfs_dirty_data_max\fR takes precedence over this
1791 one.  See the section "ZFS TRANSACTION DELAY".
1793 Default value: \fB10\fR%, subject to \fBzfs_dirty_data_max_max\fR.
1797 .ne 2
1799 \fBzfs_dirty_data_sync_percent\fR (int)
1801 .RS 12n
1802 Start syncing out a transaction group if there's at least this much dirty data
1803 as a percentage of \fBzfs_dirty_data_max\fR.  This should be less than
1804 \fBzfs_vdev_async_write_active_min_dirty_percent\fR.
1806 Default value: \fB20\fR% of \fBzfs_dirty_data_max\fR.
1810 .ne 2
1812 \fBzfs_fallocate_reserve_percent\fR (uint)
1814 .RS 12n
1815 Since ZFS is a copy-on-write filesystem with snapshots, blocks cannot be
1816 preallocated for a file in order to guarantee that later writes will not
1817 run out of space.  Instead, fallocate() space preallocation only checks
1818 that sufficient space is currently available in the pool or the user's
1819 project quota allocation, and then creates a sparse file of the requested
1820 size. The requested space is multiplied by \fBzfs_fallocate_reserve_percent\fR
1821 to allow additional space for indirect blocks and other internal metadata.
1822 Setting this value to 0 disables support for fallocate(2) and returns
1823 EOPNOTSUPP for fallocate() space preallocation again.
1825 Default value: \fB110\fR%
1829 .ne 2
1831 \fBzfs_fletcher_4_impl\fR (string)
1833 .RS 12n
1834 Select a fletcher 4 implementation.
1836 Supported selectors are: \fBfastest\fR, \fBscalar\fR, \fBsse2\fR, \fBssse3\fR,
1837 \fBavx2\fR, \fBavx512f\fR, \fBavx512bw\fR, and \fBaarch64_neon\fR.
1838 All of the selectors except \fBfastest\fR and \fBscalar\fR require instruction
1839 set extensions to be available and will only appear if ZFS detects that they are
1840 present at runtime. If multiple implementations of fletcher 4 are available,
1841 the \fBfastest\fR will be chosen using a micro benchmark. Selecting \fBscalar\fR
1842 results in the original, CPU based calculation, being used. Selecting any option
1843 other than \fBfastest\fR and \fBscalar\fR results in vector instructions from
1844 the respective CPU instruction set being used.
1846 Default value: \fBfastest\fR.
1850 .ne 2
1852 \fBzfs_free_bpobj_enabled\fR (int)
1854 .RS 12n
1855 Enable/disable the processing of the free_bpobj object.
1857 Default value: \fB1\fR.
1861 .ne 2
1863 \fBzfs_async_block_max_blocks\fR (ulong)
1865 .RS 12n
1866 Maximum number of blocks freed in a single txg.
1868 Default value: \fBULONG_MAX\fR (unlimited).
1872 .ne 2
1874 \fBzfs_max_async_dedup_frees\fR (ulong)
1876 .RS 12n
1877 Maximum number of dedup blocks freed in a single txg.
1879 Default value: \fB100,000\fR.
1883 .ne 2
1885 \fBzfs_override_estimate_recordsize\fR (ulong)
1887 .RS 12n
1888 Record size calculation override for zfs send estimates.
1890 Default value: \fB0\fR.
1894 .ne 2
1896 \fBzfs_vdev_async_read_max_active\fR (int)
1898 .RS 12n
1899 Maximum asynchronous read I/Os active to each device.
1900 See the section "ZFS I/O SCHEDULER".
1902 Default value: \fB3\fR.
1906 .ne 2
1908 \fBzfs_vdev_async_read_min_active\fR (int)
1910 .RS 12n
1911 Minimum asynchronous read I/Os active to each device.
1912 See the section "ZFS I/O SCHEDULER".
1914 Default value: \fB1\fR.
1918 .ne 2
1920 \fBzfs_vdev_async_write_active_max_dirty_percent\fR (int)
1922 .RS 12n
1923 When the pool has more than
1924 \fBzfs_vdev_async_write_active_max_dirty_percent\fR dirty data, use
1925 \fBzfs_vdev_async_write_max_active\fR to limit active async writes.  If
1926 the dirty data is between min and max, the active I/O limit is linearly
1927 interpolated. See the section "ZFS I/O SCHEDULER".
1929 Default value: \fB60\fR%.
1933 .ne 2
1935 \fBzfs_vdev_async_write_active_min_dirty_percent\fR (int)
1937 .RS 12n
1938 When the pool has less than
1939 \fBzfs_vdev_async_write_active_min_dirty_percent\fR dirty data, use
1940 \fBzfs_vdev_async_write_min_active\fR to limit active async writes.  If
1941 the dirty data is between min and max, the active I/O limit is linearly
1942 interpolated. See the section "ZFS I/O SCHEDULER".
1944 Default value: \fB30\fR%.
1948 .ne 2
1950 \fBzfs_vdev_async_write_max_active\fR (int)
1952 .RS 12n
1953 Maximum asynchronous write I/Os active to each device.
1954 See the section "ZFS I/O SCHEDULER".
1956 Default value: \fB10\fR.
1960 .ne 2
1962 \fBzfs_vdev_async_write_min_active\fR (int)
1964 .RS 12n
1965 Minimum asynchronous write I/Os active to each device.
1966 See the section "ZFS I/O SCHEDULER".
1968 Lower values are associated with better latency on rotational media but poorer
1969 resilver performance. The default value of 2 was chosen as a compromise. A
1970 value of 3 has been shown to improve resilver performance further at a cost of
1971 further increasing latency.
1973 Default value: \fB2\fR.
1977 .ne 2
1979 \fBzfs_vdev_initializing_max_active\fR (int)
1981 .RS 12n
1982 Maximum initializing I/Os active to each device.
1983 See the section "ZFS I/O SCHEDULER".
1985 Default value: \fB1\fR.
1989 .ne 2
1991 \fBzfs_vdev_initializing_min_active\fR (int)
1993 .RS 12n
1994 Minimum initializing I/Os active to each device.
1995 See the section "ZFS I/O SCHEDULER".
1997 Default value: \fB1\fR.
2001 .ne 2
2003 \fBzfs_vdev_max_active\fR (int)
2005 .RS 12n
2006 The maximum number of I/Os active to each device.  Ideally, this will be >=
2007 the sum of each queue's max_active.  It must be at least the sum of each
2008 queue's min_active.  See the section "ZFS I/O SCHEDULER".
2010 Default value: \fB1,000\fR.
2014 .ne 2
2016 \fBzfs_vdev_rebuild_max_active\fR (int)
2018 .RS 12n
2019 Maximum sequential resilver I/Os active to each device.
2020 See the section "ZFS I/O SCHEDULER".
2022 Default value: \fB3\fR.
2026 .ne 2
2028 \fBzfs_vdev_rebuild_min_active\fR (int)
2030 .RS 12n
2031 Minimum sequential resilver I/Os active to each device.
2032 See the section "ZFS I/O SCHEDULER".
2034 Default value: \fB1\fR.
2038 .ne 2
2040 \fBzfs_vdev_removal_max_active\fR (int)
2042 .RS 12n
2043 Maximum removal I/Os active to each device.
2044 See the section "ZFS I/O SCHEDULER".
2046 Default value: \fB2\fR.
2050 .ne 2
2052 \fBzfs_vdev_removal_min_active\fR (int)
2054 .RS 12n
2055 Minimum removal I/Os active to each device.
2056 See the section "ZFS I/O SCHEDULER".
2058 Default value: \fB1\fR.
2062 .ne 2
2064 \fBzfs_vdev_scrub_max_active\fR (int)
2066 .RS 12n
2067 Maximum scrub I/Os active to each device.
2068 See the section "ZFS I/O SCHEDULER".
2070 Default value: \fB2\fR.
2074 .ne 2
2076 \fBzfs_vdev_scrub_min_active\fR (int)
2078 .RS 12n
2079 Minimum scrub I/Os active to each device.
2080 See the section "ZFS I/O SCHEDULER".
2082 Default value: \fB1\fR.
2086 .ne 2
2088 \fBzfs_vdev_sync_read_max_active\fR (int)
2090 .RS 12n
2091 Maximum synchronous read I/Os active to each device.
2092 See the section "ZFS I/O SCHEDULER".
2094 Default value: \fB10\fR.
2098 .ne 2
2100 \fBzfs_vdev_sync_read_min_active\fR (int)
2102 .RS 12n
2103 Minimum synchronous read I/Os active to each device.
2104 See the section "ZFS I/O SCHEDULER".
2106 Default value: \fB10\fR.
2110 .ne 2
2112 \fBzfs_vdev_sync_write_max_active\fR (int)
2114 .RS 12n
2115 Maximum synchronous write I/Os active to each device.
2116 See the section "ZFS I/O SCHEDULER".
2118 Default value: \fB10\fR.
2122 .ne 2
2124 \fBzfs_vdev_sync_write_min_active\fR (int)
2126 .RS 12n
2127 Minimum synchronous write I/Os active to each device.
2128 See the section "ZFS I/O SCHEDULER".
2130 Default value: \fB10\fR.
2134 .ne 2
2136 \fBzfs_vdev_trim_max_active\fR (int)
2138 .RS 12n
2139 Maximum trim/discard I/Os active to each device.
2140 See the section "ZFS I/O SCHEDULER".
2142 Default value: \fB2\fR.
2146 .ne 2
2148 \fBzfs_vdev_trim_min_active\fR (int)
2150 .RS 12n
2151 Minimum trim/discard I/Os active to each device.
2152 See the section "ZFS I/O SCHEDULER".
2154 Default value: \fB1\fR.
2158 .ne 2
2160 \fBzfs_vdev_queue_depth_pct\fR (int)
2162 .RS 12n
2163 Maximum number of queued allocations per top-level vdev expressed as
2164 a percentage of \fBzfs_vdev_async_write_max_active\fR which allows the
2165 system to detect devices that are more capable of handling allocations
2166 and to allocate more blocks to those devices.  It allows for dynamic
2167 allocation distribution when devices are imbalanced as fuller devices
2168 will tend to be slower than empty devices.
2170 See also \fBzio_dva_throttle_enabled\fR.
2172 Default value: \fB1000\fR%.
2176 .ne 2
2178 \fBzfs_expire_snapshot\fR (int)
2180 .RS 12n
2181 Seconds to expire .zfs/snapshot
2183 Default value: \fB300\fR.
2187 .ne 2
2189 \fBzfs_admin_snapshot\fR (int)
2191 .RS 12n
2192 Allow the creation, removal, or renaming of entries in the .zfs/snapshot
2193 directory to cause the creation, destruction, or renaming of snapshots.
2194 When enabled this functionality works both locally and over NFS exports
2195 which have the 'no_root_squash' option set. This functionality is disabled
2196 by default.
2198 Use \fB1\fR for yes and \fB0\fR for no (default).
2202 .ne 2
2204 \fBzfs_flags\fR (int)
2206 .RS 12n
2207 Set additional debugging flags. The following flags may be bitwise-or'd
2208 together.
2211 box;
2212 rB lB
2213 lB lB
2214 r l.
2215 Value   Symbolic Name
2216         Description
2218 1       ZFS_DEBUG_DPRINTF
2219         Enable dprintf entries in the debug log.
2221 2       ZFS_DEBUG_DBUF_VERIFY *
2222         Enable extra dbuf verifications.
2224 4       ZFS_DEBUG_DNODE_VERIFY *
2225         Enable extra dnode verifications.
2227 8       ZFS_DEBUG_SNAPNAMES
2228         Enable snapshot name verification.
2230 16      ZFS_DEBUG_MODIFY
2231         Check for illegally modified ARC buffers.
2233 64      ZFS_DEBUG_ZIO_FREE
2234         Enable verification of block frees.
2236 128     ZFS_DEBUG_HISTOGRAM_VERIFY
2237         Enable extra spacemap histogram verifications.
2239 256     ZFS_DEBUG_METASLAB_VERIFY
2240         Verify space accounting on disk matches in-core range_trees.
2242 512     ZFS_DEBUG_SET_ERROR
2243         Enable SET_ERROR and dprintf entries in the debug log.
2245 1024    ZFS_DEBUG_INDIRECT_REMAP
2246         Verify split blocks created by device removal.
2248 2048    ZFS_DEBUG_TRIM
2249         Verify TRIM ranges are always within the allocatable range tree.
2251 4096    ZFS_DEBUG_LOG_SPACEMAP
2252         Verify that the log summary is consistent with the spacemap log
2253         and enable zfs_dbgmsgs for metaslab loading and flushing.
2256 * Requires debug build.
2258 Default value: \fB0\fR.
2262 .ne 2
2264 \fBzfs_free_leak_on_eio\fR (int)
2266 .RS 12n
2267 If destroy encounters an EIO while reading metadata (e.g. indirect
2268 blocks), space referenced by the missing metadata can not be freed.
2269 Normally this causes the background destroy to become "stalled", as
2270 it is unable to make forward progress.  While in this stalled state,
2271 all remaining space to free from the error-encountering filesystem is
2272 "temporarily leaked".  Set this flag to cause it to ignore the EIO,
2273 permanently leak the space from indirect blocks that can not be read,
2274 and continue to free everything else that it can.
2276 The default, "stalling" behavior is useful if the storage partially
2277 fails (i.e. some but not all i/os fail), and then later recovers.  In
2278 this case, we will be able to continue pool operations while it is
2279 partially failed, and when it recovers, we can continue to free the
2280 space, with no leaks.  However, note that this case is actually
2281 fairly rare.
2283 Typically pools either (a) fail completely (but perhaps temporarily,
2284 e.g. a top-level vdev going offline), or (b) have localized,
2285 permanent errors (e.g. disk returns the wrong data due to bit flip or
2286 firmware bug).  In case (a), this setting does not matter because the
2287 pool will be suspended and the sync thread will not be able to make
2288 forward progress regardless.  In case (b), because the error is
2289 permanent, the best we can do is leak the minimum amount of space,
2290 which is what setting this flag will do.  Therefore, it is reasonable
2291 for this flag to normally be set, but we chose the more conservative
2292 approach of not setting it, so that there is no possibility of
2293 leaking space in the "partial temporary" failure case.
2295 Default value: \fB0\fR.
2299 .ne 2
2301 \fBzfs_free_min_time_ms\fR (int)
2303 .RS 12n
2304 During a \fBzfs destroy\fR operation using \fBfeature@async_destroy\fR a minimum
2305 of this much time will be spent working on freeing blocks per txg.
2307 Default value: \fB1,000\fR.
2311 .ne 2
2313 \fBzfs_obsolete_min_time_ms\fR (int)
2315 .RS 12n
2316 Similar to \fBzfs_free_min_time_ms\fR but for cleanup of old indirection records
2317 for removed vdevs.
2319 Default value: \fB500\fR.
2323 .ne 2
2325 \fBzfs_immediate_write_sz\fR (long)
2327 .RS 12n
2328 Largest data block to write to zil. Larger blocks will be treated as if the
2329 dataset being written to had the property setting \fBlogbias=throughput\fR.
2331 Default value: \fB32,768\fR.
2335 .ne 2
2337 \fBzfs_initialize_value\fR (ulong)
2339 .RS 12n
2340 Pattern written to vdev free space by \fBzpool initialize\fR.
2342 Default value: \fB16,045,690,984,833,335,022\fR (0xdeadbeefdeadbeee).
2346 .ne 2
2348 \fBzfs_initialize_chunk_size\fR (ulong)
2350 .RS 12n
2351 Size of writes used by \fBzpool initialize\fR.
2352 This option is used by the test suite to facilitate testing.
2354 Default value: \fB1,048,576\fR
2358 .ne 2
2360 \fBzfs_livelist_max_entries\fR (ulong)
2362 .RS 12n
2363 The threshold size (in block pointers) at which we create a new sub-livelist.
2364 Larger sublists are more costly from a memory perspective but the fewer
2365 sublists there are, the lower the cost of insertion.
2367 Default value: \fB500,000\fR.
2371 .ne 2
2373 \fBzfs_livelist_min_percent_shared\fR (int)
2375 .RS 12n
2376 If the amount of shared space between a snapshot and its clone drops below
2377 this threshold, the clone turns off the livelist and reverts to the old deletion
2378 method. This is in place because once a clone has been overwritten enough
2379 livelists no long give us a benefit.
2381 Default value: \fB75\fR.
2385 .ne 2
2387 \fBzfs_livelist_condense_new_alloc\fR (int)
2389 .RS 12n
2390 Incremented each time an extra ALLOC blkptr is added to a livelist entry while
2391 it is being condensed.
2392 This option is used by the test suite to track race conditions.
2394 Default value: \fB0\fR.
2398 .ne 2
2400 \fBzfs_livelist_condense_sync_cancel\fR (int)
2402 .RS 12n
2403 Incremented each time livelist condensing is canceled while in
2404 spa_livelist_condense_sync.
2405 This option is used by the test suite to track race conditions.
2407 Default value: \fB0\fR.
2411 .ne 2
2413 \fBzfs_livelist_condense_sync_pause\fR (int)
2415 .RS 12n
2416 When set, the livelist condense process pauses indefinitely before
2417 executing the synctask - spa_livelist_condense_sync.
2418 This option is used by the test suite to trigger race conditions.
2420 Default value: \fB0\fR.
2424 .ne 2
2426 \fBzfs_livelist_condense_zthr_cancel\fR (int)
2428 .RS 12n
2429 Incremented each time livelist condensing is canceled while in
2430 spa_livelist_condense_cb.
2431 This option is used by the test suite to track race conditions.
2433 Default value: \fB0\fR.
2437 .ne 2
2439 \fBzfs_livelist_condense_zthr_pause\fR (int)
2441 .RS 12n
2442 When set, the livelist condense process pauses indefinitely before
2443 executing the open context condensing work in spa_livelist_condense_cb.
2444 This option is used by the test suite to trigger race conditions.
2446 Default value: \fB0\fR.
2450 .ne 2
2452 \fBzfs_lua_max_instrlimit\fR (ulong)
2454 .RS 12n
2455 The maximum execution time limit that can be set for a ZFS channel program,
2456 specified as a number of Lua instructions.
2458 Default value: \fB100,000,000\fR.
2462 .ne 2
2464 \fBzfs_lua_max_memlimit\fR (ulong)
2466 .RS 12n
2467 The maximum memory limit that can be set for a ZFS channel program, specified
2468 in bytes.
2470 Default value: \fB104,857,600\fR.
2474 .ne 2
2476 \fBzfs_max_dataset_nesting\fR (int)
2478 .RS 12n
2479 The maximum depth of nested datasets.  This value can be tuned temporarily to
2480 fix existing datasets that exceed the predefined limit.
2482 Default value: \fB50\fR.
2486 .ne 2
2488 \fBzfs_max_log_walking\fR (ulong)
2490 .RS 12n
2491 The number of past TXGs that the flushing algorithm of the log spacemap
2492 feature uses to estimate incoming log blocks.
2494 Default value: \fB5\fR.
2498 .ne 2
2500 \fBzfs_max_logsm_summary_length\fR (ulong)
2502 .RS 12n
2503 Maximum number of rows allowed in the summary of the spacemap log.
2505 Default value: \fB10\fR.
2509 .ne 2
2511 \fBzfs_max_recordsize\fR (int)
2513 .RS 12n
2514 We currently support block sizes from 512 bytes to 16MB.  The benefits of
2515 larger blocks, and thus larger I/O, need to be weighed against the cost of
2516 COWing a giant block to modify one byte.  Additionally, very large blocks
2517 can have an impact on i/o latency, and also potentially on the memory
2518 allocator.  Therefore, we do not allow the recordsize to be set larger than
2519 zfs_max_recordsize (default 1MB).  Larger blocks can be created by changing
2520 this tunable, and pools with larger blocks can always be imported and used,
2521 regardless of this setting.
2523 Default value: \fB1,048,576\fR.
2527 .ne 2
2529 \fBzfs_allow_redacted_dataset_mount\fR (int)
2531 .RS 12n
2532 Allow datasets received with redacted send/receive to be mounted. Normally
2533 disabled because these datasets may be missing key data.
2535 Default value: \fB0\fR.
2539 .ne 2
2541 \fBzfs_min_metaslabs_to_flush\fR (ulong)
2543 .RS 12n
2544 Minimum number of metaslabs to flush per dirty TXG
2546 Default value: \fB1\fR.
2550 .ne 2
2552 \fBzfs_metaslab_fragmentation_threshold\fR (int)
2554 .RS 12n
2555 Allow metaslabs to keep their active state as long as their fragmentation
2556 percentage is less than or equal to this value. An active metaslab that
2557 exceeds this threshold will no longer keep its active status allowing
2558 better metaslabs to be selected.
2560 Default value: \fB70\fR.
2564 .ne 2
2566 \fBzfs_mg_fragmentation_threshold\fR (int)
2568 .RS 12n
2569 Metaslab groups are considered eligible for allocations if their
2570 fragmentation metric (measured as a percentage) is less than or equal to
2571 this value. If a metaslab group exceeds this threshold then it will be
2572 skipped unless all metaslab groups within the metaslab class have also
2573 crossed this threshold.
2575 Default value: \fB95\fR.
2579 .ne 2
2581 \fBzfs_mg_noalloc_threshold\fR (int)
2583 .RS 12n
2584 Defines a threshold at which metaslab groups should be eligible for
2585 allocations.  The value is expressed as a percentage of free space
2586 beyond which a metaslab group is always eligible for allocations.
2587 If a metaslab group's free space is less than or equal to the
2588 threshold, the allocator will avoid allocating to that group
2589 unless all groups in the pool have reached the threshold.  Once all
2590 groups have reached the threshold, all groups are allowed to accept
2591 allocations.  The default value of 0 disables the feature and causes
2592 all metaslab groups to be eligible for allocations.
2594 This parameter allows one to deal with pools having heavily imbalanced
2595 vdevs such as would be the case when a new vdev has been added.
2596 Setting the threshold to a non-zero percentage will stop allocations
2597 from being made to vdevs that aren't filled to the specified percentage
2598 and allow lesser filled vdevs to acquire more allocations than they
2599 otherwise would under the old \fBzfs_mg_alloc_failures\fR facility.
2601 Default value: \fB0\fR.
2605 .ne 2
2607 \fBzfs_ddt_data_is_special\fR (int)
2609 .RS 12n
2610 If enabled, ZFS will place DDT data into the special allocation class.
2612 Default value: \fB1\fR.
2616 .ne 2
2618 \fBzfs_user_indirect_is_special\fR (int)
2620 .RS 12n
2621 If enabled, ZFS will place user data (both file and zvol) indirect blocks
2622 into the special allocation class.
2624 Default value: \fB1\fR.
2628 .ne 2
2630 \fBzfs_multihost_history\fR (int)
2632 .RS 12n
2633 Historical statistics for the last N multihost updates will be available in
2634 \fB/proc/spl/kstat/zfs/<pool>/multihost\fR
2636 Default value: \fB0\fR.
2640 .ne 2
2642 \fBzfs_multihost_interval\fR (ulong)
2644 .RS 12n
2645 Used to control the frequency of multihost writes which are performed when the
2646 \fBmultihost\fR pool property is on.  This is one factor used to determine the
2647 length of the activity check during import.
2649 The multihost write period is \fBzfs_multihost_interval / leaf-vdevs\fR
2650 milliseconds.  On average a multihost write will be issued for each leaf vdev
2651 every \fBzfs_multihost_interval\fR milliseconds.  In practice, the observed
2652 period can vary with the I/O load and this observed value is the delay which is
2653 stored in the uberblock.
2655 Default value: \fB1000\fR.
2659 .ne 2
2661 \fBzfs_multihost_import_intervals\fR (uint)
2663 .RS 12n
2664 Used to control the duration of the activity test on import.  Smaller values of
2665 \fBzfs_multihost_import_intervals\fR will reduce the import time but increase
2666 the risk of failing to detect an active pool.  The total activity check time is
2667 never allowed to drop below one second.
2669 On import the activity check waits a minimum amount of time determined by
2670 \fBzfs_multihost_interval * zfs_multihost_import_intervals\fR, or the same
2671 product computed on the host which last had the pool imported (whichever is
2672 greater).  The activity check time may be further extended if the value of mmp
2673 delay found in the best uberblock indicates actual multihost updates happened
2674 at longer intervals than \fBzfs_multihost_interval\fR.  A minimum value of
2675 \fB100ms\fR is enforced.
2677 A value of 0 is ignored and treated as if it was set to 1.
2679 Default value: \fB20\fR.
2683 .ne 2
2685 \fBzfs_multihost_fail_intervals\fR (uint)
2687 .RS 12n
2688 Controls the behavior of the pool when multihost write failures or delays are
2689 detected.
2691 When \fBzfs_multihost_fail_intervals = 0\fR, multihost write failures or delays
2692 are ignored.  The failures will still be reported to the ZED which depending on
2693 its configuration may take action such as suspending the pool or offlining a
2694 device.
2697 When \fBzfs_multihost_fail_intervals > 0\fR, the pool will be suspended if
2698 \fBzfs_multihost_fail_intervals * zfs_multihost_interval\fR milliseconds pass
2699 without a successful mmp write.  This guarantees the activity test will see
2700 mmp writes if the pool is imported.  A value of 1 is ignored and treated as
2701 if it was set to 2.  This is necessary to prevent the pool from being suspended
2702 due to normal, small I/O latency variations.
2705 Default value: \fB10\fR.
2709 .ne 2
2711 \fBzfs_no_scrub_io\fR (int)
2713 .RS 12n
2714 Set for no scrub I/O. This results in scrubs not actually scrubbing data and
2715 simply doing a metadata crawl of the pool instead.
2717 Use \fB1\fR for yes and \fB0\fR for no (default).
2721 .ne 2
2723 \fBzfs_no_scrub_prefetch\fR (int)
2725 .RS 12n
2726 Set to disable block prefetching for scrubs.
2728 Use \fB1\fR for yes and \fB0\fR for no (default).
2732 .ne 2
2734 \fBzfs_nocacheflush\fR (int)
2736 .RS 12n
2737 Disable cache flush operations on disks when writing.  Setting this will
2738 cause pool corruption on power loss if a volatile out-of-order write cache
2739 is enabled.
2741 Use \fB1\fR for yes and \fB0\fR for no (default).
2745 .ne 2
2747 \fBzfs_nopwrite_enabled\fR (int)
2749 .RS 12n
2750 Enable NOP writes
2752 Use \fB1\fR for yes (default) and \fB0\fR to disable.
2756 .ne 2
2758 \fBzfs_dmu_offset_next_sync\fR (int)
2760 .RS 12n
2761 Enable forcing txg sync to find holes. When enabled forces ZFS to act
2762 like prior versions when SEEK_HOLE or SEEK_DATA flags are used, which
2763 when a dnode is dirty causes txg's to be synced so that this data can be
2764 found.
2766 Use \fB1\fR for yes and \fB0\fR to disable (default).
2770 .ne 2
2772 \fBzfs_pd_bytes_max\fR (int)
2774 .RS 12n
2775 The number of bytes which should be prefetched during a pool traversal
2776 (eg: \fBzfs send\fR or other data crawling operations)
2778 Default value: \fB52,428,800\fR.
2782 .ne 2
2784 \fBzfs_per_txg_dirty_frees_percent \fR (ulong)
2786 .RS 12n
2787 Tunable to control percentage of dirtied indirect blocks from frees allowed
2788 into one TXG. After this threshold is crossed, additional frees will wait until
2789 the next TXG.
2790 A value of zero will disable this throttle.
2792 Default value: \fB5\fR, set to \fB0\fR to disable.
2796 .ne 2
2798 \fBzfs_prefetch_disable\fR (int)
2800 .RS 12n
2801 This tunable disables predictive prefetch.  Note that it leaves "prescient"
2802 prefetch (e.g. prefetch for zfs send) intact.  Unlike predictive prefetch,
2803 prescient prefetch never issues i/os that end up not being needed, so it
2804 can't hurt performance.
2806 Use \fB1\fR for yes and \fB0\fR for no (default).
2810 .ne 2
2812 \fBzfs_qat_checksum_disable\fR (int)
2814 .RS 12n
2815 This tunable disables qat hardware acceleration for sha256 checksums. It
2816 may be set after the zfs modules have been loaded to initialize the qat
2817 hardware as long as support is compiled in and the qat driver is present.
2819 Use \fB1\fR for yes and \fB0\fR for no (default).
2823 .ne 2
2825 \fBzfs_qat_compress_disable\fR (int)
2827 .RS 12n
2828 This tunable disables qat hardware acceleration for gzip compression. It
2829 may be set after the zfs modules have been loaded to initialize the qat
2830 hardware as long as support is compiled in and the qat driver is present.
2832 Use \fB1\fR for yes and \fB0\fR for no (default).
2836 .ne 2
2838 \fBzfs_qat_encrypt_disable\fR (int)
2840 .RS 12n
2841 This tunable disables qat hardware acceleration for AES-GCM encryption. It
2842 may be set after the zfs modules have been loaded to initialize the qat
2843 hardware as long as support is compiled in and the qat driver is present.
2845 Use \fB1\fR for yes and \fB0\fR for no (default).
2849 .ne 2
2851 \fBzfs_read_chunk_size\fR (long)
2853 .RS 12n
2854 Bytes to read per chunk
2856 Default value: \fB1,048,576\fR.
2860 .ne 2
2862 \fBzfs_read_history\fR (int)
2864 .RS 12n
2865 Historical statistics for the last N reads will be available in
2866 \fB/proc/spl/kstat/zfs/<pool>/reads\fR
2868 Default value: \fB0\fR (no data is kept).
2872 .ne 2
2874 \fBzfs_read_history_hits\fR (int)
2876 .RS 12n
2877 Include cache hits in read history
2879 Use \fB1\fR for yes and \fB0\fR for no (default).
2883 .ne 2
2885 \fBzfs_rebuild_max_segment\fR (ulong)
2887 .RS 12n
2888 Maximum read segment size to issue when sequentially resilvering a
2889 top-level vdev.
2891 Default value: \fB1,048,576\fR.
2895 .ne 2
2897 \fBzfs_reconstruct_indirect_combinations_max\fR (int)
2899 .RS 12na
2900 If an indirect split block contains more than this many possible unique
2901 combinations when being reconstructed, consider it too computationally
2902 expensive to check them all. Instead, try at most
2903 \fBzfs_reconstruct_indirect_combinations_max\fR randomly-selected
2904 combinations each time the block is accessed.  This allows all segment
2905 copies to participate fairly in the reconstruction when all combinations
2906 cannot be checked and prevents repeated use of one bad copy.
2908 Default value: \fB4096\fR.
2912 .ne 2
2914 \fBzfs_recover\fR (int)
2916 .RS 12n
2917 Set to attempt to recover from fatal errors. This should only be used as a
2918 last resort, as it typically results in leaked space, or worse.
2920 Use \fB1\fR for yes and \fB0\fR for no (default).
2924 .ne 2
2926 \fBzfs_removal_ignore_errors\fR (int)
2928 .RS 12n
2930 Ignore hard IO errors during device removal.  When set, if a device encounters
2931 a hard IO error during the removal process the removal will not be cancelled.
2932 This can result in a normally recoverable block becoming permanently damaged
2933 and is not recommended.  This should only be used as a last resort when the
2934 pool cannot be returned to a healthy state prior to removing the device.
2936 Default value: \fB0\fR.
2940 .ne 2
2942 \fBzfs_removal_suspend_progress\fR (int)
2944 .RS 12n
2946 This is used by the test suite so that it can ensure that certain actions
2947 happen while in the middle of a removal.
2949 Default value: \fB0\fR.
2953 .ne 2
2955 \fBzfs_remove_max_segment\fR (int)
2957 .RS 12n
2959 The largest contiguous segment that we will attempt to allocate when removing
2960 a device.  This can be no larger than 16MB.  If there is a performance
2961 problem with attempting to allocate large blocks, consider decreasing this.
2963 Default value: \fB16,777,216\fR (16MB).
2967 .ne 2
2969 \fBzfs_resilver_disable_defer\fR (int)
2971 .RS 12n
2972 Disables the \fBresilver_defer\fR feature, causing an operation that would
2973 start a resilver to restart one in progress immediately.
2975 Default value: \fB0\fR (feature enabled).
2979 .ne 2
2981 \fBzfs_resilver_min_time_ms\fR (int)
2983 .RS 12n
2984 Resilvers are processed by the sync thread. While resilvering it will spend
2985 at least this much time working on a resilver between txg flushes.
2987 Default value: \fB3,000\fR.
2991 .ne 2
2993 \fBzfs_scan_ignore_errors\fR (int)
2995 .RS 12n
2996 If set to a nonzero value, remove the DTL (dirty time list) upon
2997 completion of a pool scan (scrub) even if there were unrepairable
2998 errors.  It is intended to be used during pool repair or recovery to
2999 stop resilvering when the pool is next imported.
3001 Default value: \fB0\fR.
3005 .ne 2
3007 \fBzfs_scrub_min_time_ms\fR (int)
3009 .RS 12n
3010 Scrubs are processed by the sync thread. While scrubbing it will spend
3011 at least this much time working on a scrub between txg flushes.
3013 Default value: \fB1,000\fR.
3017 .ne 2
3019 \fBzfs_scan_checkpoint_intval\fR (int)
3021 .RS 12n
3022 To preserve progress across reboots the sequential scan algorithm periodically
3023 needs to stop metadata scanning and issue all the verifications I/Os to disk.
3024 The frequency of this flushing is determined by the
3025 \fBzfs_scan_checkpoint_intval\fR tunable.
3027 Default value: \fB7200\fR seconds (every 2 hours).
3031 .ne 2
3033 \fBzfs_scan_fill_weight\fR (int)
3035 .RS 12n
3036 This tunable affects how scrub and resilver I/O segments are ordered. A higher
3037 number indicates that we care more about how filled in a segment is, while a
3038 lower number indicates we care more about the size of the extent without
3039 considering the gaps within a segment. This value is only tunable upon module
3040 insertion. Changing the value afterwards will have no affect on scrub or
3041 resilver performance.
3043 Default value: \fB3\fR.
3047 .ne 2
3049 \fBzfs_scan_issue_strategy\fR (int)
3051 .RS 12n
3052 Determines the order that data will be verified while scrubbing or resilvering.
3053 If set to \fB1\fR, data will be verified as sequentially as possible, given the
3054 amount of memory reserved for scrubbing (see \fBzfs_scan_mem_lim_fact\fR). This
3055 may improve scrub performance if the pool's data is very fragmented. If set to
3056 \fB2\fR, the largest mostly-contiguous chunk of found data will be verified
3057 first. By deferring scrubbing of small segments, we may later find adjacent data
3058 to coalesce and increase the segment size. If set to \fB0\fR, zfs will use
3059 strategy \fB1\fR during normal verification and strategy \fB2\fR while taking a
3060 checkpoint.
3062 Default value: \fB0\fR.
3066 .ne 2
3068 \fBzfs_scan_legacy\fR (int)
3070 .RS 12n
3071 A value of 0 indicates that scrubs and resilvers will gather metadata in
3072 memory before issuing sequential I/O. A value of 1 indicates that the legacy
3073 algorithm will be used where I/O is initiated as soon as it is discovered.
3074 Changing this value to 0 will not affect scrubs or resilvers that are already
3075 in progress.
3077 Default value: \fB0\fR.
3081 .ne 2
3083 \fBzfs_scan_max_ext_gap\fR (int)
3085 .RS 12n
3086 Indicates the largest gap in bytes between scrub / resilver I/Os that will still
3087 be considered sequential for sorting purposes. Changing this value will not
3088 affect scrubs or resilvers that are already in progress.
3090 Default value: \fB2097152 (2 MB)\fR.
3094 .ne 2
3096 \fBzfs_scan_mem_lim_fact\fR (int)
3098 .RS 12n
3099 Maximum fraction of RAM used for I/O sorting by sequential scan algorithm.
3100 This tunable determines the hard limit for I/O sorting memory usage.
3101 When the hard limit is reached we stop scanning metadata and start issuing
3102 data verification I/O. This is done until we get below the soft limit.
3104 Default value: \fB20\fR which is 5% of RAM (1/20).
3108 .ne 2
3110 \fBzfs_scan_mem_lim_soft_fact\fR (int)
3112 .RS 12n
3113 The fraction of the hard limit used to determined the soft limit for I/O sorting
3114 by the sequential scan algorithm. When we cross this limit from below no action
3115 is taken. When we cross this limit from above it is because we are issuing
3116 verification I/O. In this case (unless the metadata scan is done) we stop
3117 issuing verification I/O and start scanning metadata again until we get to the
3118 hard limit.
3120 Default value: \fB20\fR which is 5% of the hard limit (1/20).
3124 .ne 2
3126 \fBzfs_scan_strict_mem_lim\fR (int)
3128 .RS 12n
3129 Enforces tight memory limits on pool scans when a sequential scan is in
3130 progress. When disabled the memory limit may be exceeded by fast disks.
3132 Default value: \fB0\fR.
3136 .ne 2
3138 \fBzfs_scan_suspend_progress\fR (int)
3140 .RS 12n
3141 Freezes a scrub/resilver in progress without actually pausing it. Intended for
3142 testing/debugging.
3144 Default value: \fB0\fR.
3149 .ne 2
3151 \fBzfs_scan_vdev_limit\fR (int)
3153 .RS 12n
3154 Maximum amount of data that can be concurrently issued at once for scrubs and
3155 resilvers per leaf device, given in bytes.
3157 Default value: \fB41943040\fR.
3161 .ne 2
3163 \fBzfs_send_corrupt_data\fR (int)
3165 .RS 12n
3166 Allow sending of corrupt data (ignore read/checksum errors when sending data)
3168 Use \fB1\fR for yes and \fB0\fR for no (default).
3172 .ne 2
3174 \fBzfs_send_unmodified_spill_blocks\fR (int)
3176 .RS 12n
3177 Include unmodified spill blocks in the send stream. Under certain circumstances
3178 previous versions of ZFS could incorrectly remove the spill block from an
3179 existing object.  Including unmodified copies of the spill blocks creates a
3180 backwards compatible stream which will recreate a spill block if it was
3181 incorrectly removed.
3183 Use \fB1\fR for yes (default) and \fB0\fR for no.
3187 .ne 2
3189 \fBzfs_send_no_prefetch_queue_ff\fR (int)
3191 .RS 12n
3192 The fill fraction of the \fBzfs send\fR internal queues. The fill fraction
3193 controls the timing with which internal threads are woken up.
3195 Default value: \fB20\fR.
3199 .ne 2
3201 \fBzfs_send_no_prefetch_queue_length\fR (int)
3203 .RS 12n
3204 The maximum number of bytes allowed in \fBzfs send\fR's internal queues.
3206 Default value: \fB1,048,576\fR.
3210 .ne 2
3212 \fBzfs_send_queue_ff\fR (int)
3214 .RS 12n
3215 The fill fraction of the \fBzfs send\fR prefetch queue. The fill fraction
3216 controls the timing with which internal threads are woken up.
3218 Default value: \fB20\fR.
3222 .ne 2
3224 \fBzfs_send_queue_length\fR (int)
3226 .RS 12n
3227 The maximum number of bytes allowed that will be prefetched by \fBzfs send\fR.
3228 This value must be at least twice the maximum block size in use.
3230 Default value: \fB16,777,216\fR.
3234 .ne 2
3236 \fBzfs_recv_queue_ff\fR (int)
3238 .RS 12n
3239 The fill fraction of the \fBzfs receive\fR queue. The fill fraction
3240 controls the timing with which internal threads are woken up.
3242 Default value: \fB20\fR.
3246 .ne 2
3248 \fBzfs_recv_queue_length\fR (int)
3250 .RS 12n
3251 The maximum number of bytes allowed in the \fBzfs receive\fR queue. This value
3252 must be at least twice the maximum block size in use.
3254 Default value: \fB16,777,216\fR.
3258 .ne 2
3260 \fBzfs_recv_write_batch_size\fR (int)
3262 .RS 12n
3263 The maximum amount of data (in bytes) that \fBzfs receive\fR will write in
3264 one DMU transaction.  This is the uncompressed size, even when receiving a
3265 compressed send stream.  This setting will not reduce the write size below
3266 a single block. Capped at a maximum of 32MB
3268 Default value: \fB1MB\fR.
3272 .ne 2
3274 \fBzfs_override_estimate_recordsize\fR (ulong)
3276 .RS 12n
3277 Setting this variable overrides the default logic for estimating block
3278 sizes when doing a zfs send. The default heuristic is that the average
3279 block size will be the current recordsize. Override this value if most data
3280 in your dataset is not of that size and you require accurate zfs send size
3281 estimates.
3283 Default value: \fB0\fR.
3287 .ne 2
3289 \fBzfs_sync_pass_deferred_free\fR (int)
3291 .RS 12n
3292 Flushing of data to disk is done in passes. Defer frees starting in this pass
3294 Default value: \fB2\fR.
3298 .ne 2
3300 \fBzfs_spa_discard_memory_limit\fR (int)
3302 .RS 12n
3303 Maximum memory used for prefetching a checkpoint's space map on each
3304 vdev while discarding the checkpoint.
3306 Default value: \fB16,777,216\fR.
3310 .ne 2
3312 \fBzfs_special_class_metadata_reserve_pct\fR (int)
3314 .RS 12n
3315 Only allow small data blocks to be allocated on the special and dedup vdev
3316 types when the available free space percentage on these vdevs exceeds this
3317 value. This ensures reserved space is available for pool meta data as the
3318 special vdevs approach capacity.
3320 Default value: \fB25\fR.
3324 .ne 2
3326 \fBzfs_sync_pass_dont_compress\fR (int)
3328 .RS 12n
3329 Starting in this sync pass, we disable compression (including of metadata).
3330 With the default setting, in practice, we don't have this many sync passes,
3331 so this has no effect.
3333 The original intent was that disabling compression would help the sync passes
3334 to converge. However, in practice disabling compression increases the average
3335 number of sync passes, because when we turn compression off, a lot of block's
3336 size will change and thus we have to re-allocate (not overwrite) them. It
3337 also increases the number of 128KB allocations (e.g. for indirect blocks and
3338 spacemaps) because these will not be compressed. The 128K allocations are
3339 especially detrimental to performance on highly fragmented systems, which may
3340 have very few free segments of this size, and may need to load new metaslabs
3341 to satisfy 128K allocations.
3343 Default value: \fB8\fR.
3347 .ne 2
3349 \fBzfs_sync_pass_rewrite\fR (int)
3351 .RS 12n
3352 Rewrite new block pointers starting in this pass
3354 Default value: \fB2\fR.
3358 .ne 2
3360 \fBzfs_sync_taskq_batch_pct\fR (int)
3362 .RS 12n
3363 This controls the number of threads used by the dp_sync_taskq.  The default
3364 value of 75% will create a maximum of one thread per cpu.
3366 Default value: \fB75\fR%.
3370 .ne 2
3372 \fBzfs_trim_extent_bytes_max\fR (uint)
3374 .RS 12n
3375 Maximum size of TRIM command.  Ranges larger than this will be split in to
3376 chunks no larger than \fBzfs_trim_extent_bytes_max\fR bytes before being
3377 issued to the device.
3379 Default value: \fB134,217,728\fR.
3383 .ne 2
3385 \fBzfs_trim_extent_bytes_min\fR (uint)
3387 .RS 12n
3388 Minimum size of TRIM commands.  TRIM ranges smaller than this will be skipped
3389 unless they're part of a larger range which was broken in to chunks.  This is
3390 done because it's common for these small TRIMs to negatively impact overall
3391 performance.  This value can be set to 0 to TRIM all unallocated space.
3393 Default value: \fB32,768\fR.
3397 .ne 2
3399 \fBzfs_trim_metaslab_skip\fR (uint)
3401 .RS 12n
3402 Skip uninitialized metaslabs during the TRIM process.  This option is useful
3403 for pools constructed from large thinly-provisioned devices where TRIM
3404 operations are slow.  As a pool ages an increasing fraction of the pools
3405 metaslabs will be initialized progressively degrading the usefulness of
3406 this option.  This setting is stored when starting a manual TRIM and will
3407 persist for the duration of the requested TRIM.
3409 Default value: \fB0\fR.
3413 .ne 2
3415 \fBzfs_trim_queue_limit\fR (uint)
3417 .RS 12n
3418 Maximum number of queued TRIMs outstanding per leaf vdev.  The number of
3419 concurrent TRIM commands issued to the device is controlled by the
3420 \fBzfs_vdev_trim_min_active\fR and \fBzfs_vdev_trim_max_active\fR module
3421 options.
3423 Default value: \fB10\fR.
3427 .ne 2
3429 \fBzfs_trim_txg_batch\fR (uint)
3431 .RS 12n
3432 The number of transaction groups worth of frees which should be aggregated
3433 before TRIM operations are issued to the device.  This setting represents a
3434 trade-off between issuing larger, more efficient TRIM operations and the
3435 delay before the recently trimmed space is available for use by the device.
3437 Increasing this value will allow frees to be aggregated for a longer time.
3438 This will result is larger TRIM operations and potentially increased memory
3439 usage.  Decreasing this value will have the opposite effect.  The default
3440 value of 32 was determined to be a reasonable compromise.
3442 Default value: \fB32\fR.
3446 .ne 2
3448 \fBzfs_txg_history\fR (int)
3450 .RS 12n
3451 Historical statistics for the last N txgs will be available in
3452 \fB/proc/spl/kstat/zfs/<pool>/txgs\fR
3454 Default value: \fB0\fR.
3458 .ne 2
3460 \fBzfs_txg_timeout\fR (int)
3462 .RS 12n
3463 Flush dirty data to disk at least every N seconds (maximum txg duration)
3465 Default value: \fB5\fR.
3469 .ne 2
3471 \fBzfs_vdev_aggregate_trim\fR (int)
3473 .RS 12n
3474 Allow TRIM I/Os to be aggregated.  This is normally not helpful because
3475 the extents to be trimmed will have been already been aggregated by the
3476 metaslab.  This option is provided for debugging and performance analysis.
3478 Default value: \fB0\fR.
3482 .ne 2
3484 \fBzfs_vdev_aggregation_limit\fR (int)
3486 .RS 12n
3487 Max vdev I/O aggregation size
3489 Default value: \fB1,048,576\fR.
3493 .ne 2
3495 \fBzfs_vdev_aggregation_limit_non_rotating\fR (int)
3497 .RS 12n
3498 Max vdev I/O aggregation size for non-rotating media
3500 Default value: \fB131,072\fR.
3504 .ne 2
3506 \fBzfs_vdev_cache_bshift\fR (int)
3508 .RS 12n
3509 Shift size to inflate reads too
3511 Default value: \fB16\fR (effectively 65536).
3515 .ne 2
3517 \fBzfs_vdev_cache_max\fR (int)
3519 .RS 12n
3520 Inflate reads smaller than this value to meet the \fBzfs_vdev_cache_bshift\fR
3521 size (default 64k).
3523 Default value: \fB16384\fR.
3527 .ne 2
3529 \fBzfs_vdev_cache_size\fR (int)
3531 .RS 12n
3532 Total size of the per-disk cache in bytes.
3534 Currently this feature is disabled as it has been found to not be helpful
3535 for performance and in some cases harmful.
3537 Default value: \fB0\fR.
3541 .ne 2
3543 \fBzfs_vdev_mirror_rotating_inc\fR (int)
3545 .RS 12n
3546 A number by which the balancing algorithm increments the load calculation for
3547 the purpose of selecting the least busy mirror member when an I/O immediately
3548 follows its predecessor on rotational vdevs for the purpose of making decisions
3549 based on load.
3551 Default value: \fB0\fR.
3555 .ne 2
3557 \fBzfs_vdev_mirror_rotating_seek_inc\fR (int)
3559 .RS 12n
3560 A number by which the balancing algorithm increments the load calculation for
3561 the purpose of selecting the least busy mirror member when an I/O lacks
3562 locality as defined by the zfs_vdev_mirror_rotating_seek_offset.  I/Os within
3563 this that are not immediately following the previous I/O are incremented by
3564 half.
3566 Default value: \fB5\fR.
3570 .ne 2
3572 \fBzfs_vdev_mirror_rotating_seek_offset\fR (int)
3574 .RS 12n
3575 The maximum distance for the last queued I/O in which the balancing algorithm
3576 considers an I/O to have locality.
3577 See the section "ZFS I/O SCHEDULER".
3579 Default value: \fB1048576\fR.
3583 .ne 2
3585 \fBzfs_vdev_mirror_non_rotating_inc\fR (int)
3587 .RS 12n
3588 A number by which the balancing algorithm increments the load calculation for
3589 the purpose of selecting the least busy mirror member on non-rotational vdevs
3590 when I/Os do not immediately follow one another.
3592 Default value: \fB0\fR.
3596 .ne 2
3598 \fBzfs_vdev_mirror_non_rotating_seek_inc\fR (int)
3600 .RS 12n
3601 A number by which the balancing algorithm increments the load calculation for
3602 the purpose of selecting the least busy mirror member when an I/O lacks
3603 locality as defined by the zfs_vdev_mirror_rotating_seek_offset. I/Os within
3604 this that are not immediately following the previous I/O are incremented by
3605 half.
3607 Default value: \fB1\fR.
3611 .ne 2
3613 \fBzfs_vdev_read_gap_limit\fR (int)
3615 .RS 12n
3616 Aggregate read I/O operations if the gap on-disk between them is within this
3617 threshold.
3619 Default value: \fB32,768\fR.
3623 .ne 2
3625 \fBzfs_vdev_write_gap_limit\fR (int)
3627 .RS 12n
3628 Aggregate write I/O over gap
3630 Default value: \fB4,096\fR.
3634 .ne 2
3636 \fBzfs_vdev_raidz_impl\fR (string)
3638 .RS 12n
3639 Parameter for selecting raidz parity implementation to use.
3641 Options marked (always) below may be selected on module load as they are
3642 supported on all systems.
3643 The remaining options may only be set after the module is loaded, as they
3644 are available only if the implementations are compiled in and supported
3645 on the running system.
3647 Once the module is loaded, the content of
3648 /sys/module/zfs/parameters/zfs_vdev_raidz_impl will show available options
3649 with the currently selected one enclosed in [].
3650 Possible options are:
3651   fastest  - (always) implementation selected using built-in benchmark
3652   original - (always) original raidz implementation
3653   scalar   - (always) scalar raidz implementation
3654   sse2     - implementation using SSE2 instruction set (64bit x86 only)
3655   ssse3    - implementation using SSSE3 instruction set (64bit x86 only)
3656   avx2     - implementation using AVX2 instruction set (64bit x86 only)
3657   avx512f  - implementation using AVX512F instruction set (64bit x86 only)
3658   avx512bw - implementation using AVX512F & AVX512BW instruction sets (64bit x86 only)
3659   aarch64_neon - implementation using NEON (Aarch64/64 bit ARMv8 only)
3660   aarch64_neonx2 - implementation using NEON with more unrolling (Aarch64/64 bit ARMv8 only)
3661   powerpc_altivec - implementation using Altivec (PowerPC only)
3663 Default value: \fBfastest\fR.
3667 .ne 2
3669 \fBzfs_vdev_scheduler\fR (charp)
3671 .RS 12n
3672 \fBDEPRECATED\fR: This option exists for compatibility with older user
3673 configurations. It does nothing except print a warning to the kernel log if
3674 set.
3679 .ne 2
3681 \fBzfs_zevent_cols\fR (int)
3683 .RS 12n
3684 When zevents are logged to the console use this as the word wrap width.
3686 Default value: \fB80\fR.
3690 .ne 2
3692 \fBzfs_zevent_console\fR (int)
3694 .RS 12n
3695 Log events to the console
3697 Use \fB1\fR for yes and \fB0\fR for no (default).
3701 .ne 2
3703 \fBzfs_zevent_len_max\fR (int)
3705 .RS 12n
3706 Max event queue length. A value of 0 will result in a calculated value which
3707 increases with the number of CPUs in the system (minimum 64 events). Events
3708 in the queue can be viewed with the \fBzpool events\fR command.
3710 Default value: \fB0\fR.
3714 .ne 2
3716 \fBzfs_zevent_retain_max\fR (int)
3718 .RS 12n
3719 Maximum recent zevent records to retain for duplicate checking.  Setting
3720 this value to zero disables duplicate detection.
3722 Default value: \fB2000\fR.
3726 .ne 2
3728 \fBzfs_zevent_retain_expire_secs\fR (int)
3730 .RS 12n
3731 Lifespan for a recent ereport that was retained for duplicate checking.
3733 Default value: \fB900\fR.
3737 \fBzfs_zil_clean_taskq_maxalloc\fR (int)
3739 .RS 12n
3740 The maximum number of taskq entries that are allowed to be cached.  When this
3741 limit is exceeded transaction records (itxs) will be cleaned synchronously.
3743 Default value: \fB1048576\fR.
3747 .ne 2
3749 \fBzfs_zil_clean_taskq_minalloc\fR (int)
3751 .RS 12n
3752 The number of taskq entries that are pre-populated when the taskq is first
3753 created and are immediately available for use.
3755 Default value: \fB1024\fR.
3759 .ne 2
3761 \fBzfs_zil_clean_taskq_nthr_pct\fR (int)
3763 .RS 12n
3764 This controls the number of threads used by the dp_zil_clean_taskq.  The default
3765 value of 100% will create a maximum of one thread per cpu.
3767 Default value: \fB100\fR%.
3771 .ne 2
3773 \fBzil_maxblocksize\fR (int)
3775 .RS 12n
3776 This sets the maximum block size used by the ZIL.  On very fragmented pools,
3777 lowering this (typically to 36KB) can improve performance.
3779 Default value: \fB131072\fR (128KB).
3783 .ne 2
3785 \fBzil_nocacheflush\fR (int)
3787 .RS 12n
3788 Disable the cache flush commands that are normally sent to the disk(s) by
3789 the ZIL after an LWB write has completed. Setting this will cause ZIL
3790 corruption on power loss if a volatile out-of-order write cache is enabled.
3792 Use \fB1\fR for yes and \fB0\fR for no (default).
3796 .ne 2
3798 \fBzil_replay_disable\fR (int)
3800 .RS 12n
3801 Disable intent logging replay. Can be disabled for recovery from corrupted
3804 Use \fB1\fR for yes and \fB0\fR for no (default).
3808 .ne 2
3810 \fBzil_slog_bulk\fR (ulong)
3812 .RS 12n
3813 Limit SLOG write size per commit executed with synchronous priority.
3814 Any writes above that will be executed with lower (asynchronous) priority
3815 to limit potential SLOG device abuse by single active ZIL writer.
3817 Default value: \fB786,432\fR.
3821 .ne 2
3823 \fBzio_deadman_log_all\fR (int)
3825 .RS 12n
3826 If non-zero, the zio deadman will produce debugging messages (see
3827 \fBzfs_dbgmsg_enable\fR) for all zios, rather than only for leaf
3828 zios possessing a vdev. This is meant to be used by developers to gain
3829 diagnostic information for hang conditions which don't involve a mutex
3830 or other locking primitive; typically conditions in which a thread in
3831 the zio pipeline is looping indefinitely.
3833 Default value: \fB0\fR.
3837 .ne 2
3839 \fBzio_decompress_fail_fraction\fR (int)
3841 .RS 12n
3842 If non-zero, this value represents the denominator of the probability that zfs
3843 should induce a decompression failure. For instance, for a 5% decompression
3844 failure rate, this value should be set to 20.
3846 Default value: \fB0\fR.
3850 .ne 2
3852 \fBzio_slow_io_ms\fR (int)
3854 .RS 12n
3855 When an I/O operation takes more than \fBzio_slow_io_ms\fR milliseconds to
3856 complete is marked as a slow I/O.  Each slow I/O causes a delay zevent.  Slow
3857 I/O counters can be seen with "zpool status -s".
3860 Default value: \fB30,000\fR.
3864 .ne 2
3866 \fBzio_dva_throttle_enabled\fR (int)
3868 .RS 12n
3869 Throttle block allocations in the I/O pipeline. This allows for
3870 dynamic allocation distribution when devices are imbalanced.
3871 When enabled, the maximum number of pending allocations per top-level vdev
3872 is limited by \fBzfs_vdev_queue_depth_pct\fR.
3874 Default value: \fB1\fR.
3878 .ne 2
3880 \fBzio_requeue_io_start_cut_in_line\fR (int)
3882 .RS 12n
3883 Prioritize requeued I/O
3885 Default value: \fB0\fR.
3889 .ne 2
3891 \fBzio_taskq_batch_pct\fR (uint)
3893 .RS 12n
3894 Percentage of online CPUs (or CPU cores, etc) which will run a worker thread
3895 for I/O. These workers are responsible for I/O work such as compression and
3896 checksum calculations. Fractional number of CPUs will be rounded down.
3898 The default value of 75 was chosen to avoid using all CPUs which can result in
3899 latency issues and inconsistent application performance, especially when high
3900 compression is enabled.
3902 Default value: \fB75\fR.
3906 .ne 2
3908 \fBzvol_inhibit_dev\fR (uint)
3910 .RS 12n
3911 Do not create zvol device nodes. This may slightly improve startup time on
3912 systems with a very large number of zvols.
3914 Use \fB1\fR for yes and \fB0\fR for no (default).
3918 .ne 2
3920 \fBzvol_major\fR (uint)
3922 .RS 12n
3923 Major number for zvol block devices
3925 Default value: \fB230\fR.
3929 .ne 2
3931 \fBzvol_max_discard_blocks\fR (ulong)
3933 .RS 12n
3934 Discard (aka TRIM) operations done on zvols will be done in batches of this
3935 many blocks, where block size is determined by the \fBvolblocksize\fR property
3936 of a zvol.
3938 Default value: \fB16,384\fR.
3942 .ne 2
3944 \fBzvol_prefetch_bytes\fR (uint)
3946 .RS 12n
3947 When adding a zvol to the system prefetch \fBzvol_prefetch_bytes\fR
3948 from the start and end of the volume.  Prefetching these regions
3949 of the volume is desirable because they are likely to be accessed
3950 immediately by \fBblkid(8)\fR or by the kernel scanning for a partition
3951 table.
3953 Default value: \fB131,072\fR.
3957 .ne 2
3959 \fBzvol_request_sync\fR (uint)
3961 .RS 12n
3962 When processing I/O requests for a zvol submit them synchronously.  This
3963 effectively limits the queue depth to 1 for each I/O submitter.  When set
3964 to 0 requests are handled asynchronously by a thread pool.  The number of
3965 requests which can be handled concurrently is controller by \fBzvol_threads\fR.
3967 Default value: \fB0\fR.
3971 .ne 2
3973 \fBzvol_threads\fR (uint)
3975 .RS 12n
3976 Max number of threads which can handle zvol I/O requests concurrently.
3978 Default value: \fB32\fR.
3982 .ne 2
3984 \fBzvol_volmode\fR (uint)
3986 .RS 12n
3987 Defines zvol block devices behaviour when \fBvolmode\fR is set to \fBdefault\fR.
3988 Valid values are \fB1\fR (full), \fB2\fR (dev) and \fB3\fR (none).
3990 Default value: \fB1\fR.
3993 .SH ZFS I/O SCHEDULER
3994 ZFS issues I/O operations to leaf vdevs to satisfy and complete I/Os.
3995 The I/O scheduler determines when and in what order those operations are
3996 issued.  The I/O scheduler divides operations into five I/O classes
3997 prioritized in the following order: sync read, sync write, async read,
3998 async write, and scrub/resilver.  Each queue defines the minimum and
3999 maximum number of concurrent operations that may be issued to the
4000 device.  In addition, the device has an aggregate maximum,
4001 \fBzfs_vdev_max_active\fR. Note that the sum of the per-queue minimums
4002 must not exceed the aggregate maximum.  If the sum of the per-queue
4003 maximums exceeds the aggregate maximum, then the number of active I/Os
4004 may reach \fBzfs_vdev_max_active\fR, in which case no further I/Os will
4005 be issued regardless of whether all per-queue minimums have been met.
4007 For many physical devices, throughput increases with the number of
4008 concurrent operations, but latency typically suffers. Further, physical
4009 devices typically have a limit at which more concurrent operations have no
4010 effect on throughput or can actually cause it to decrease.
4012 The scheduler selects the next operation to issue by first looking for an
4013 I/O class whose minimum has not been satisfied. Once all are satisfied and
4014 the aggregate maximum has not been hit, the scheduler looks for classes
4015 whose maximum has not been satisfied. Iteration through the I/O classes is
4016 done in the order specified above. No further operations are issued if the
4017 aggregate maximum number of concurrent operations has been hit or if there
4018 are no operations queued for an I/O class that has not hit its maximum.
4019 Every time an I/O is queued or an operation completes, the I/O scheduler
4020 looks for new operations to issue.
4022 In general, smaller max_active's will lead to lower latency of synchronous
4023 operations.  Larger max_active's may lead to higher overall throughput,
4024 depending on underlying storage.
4026 The ratio of the queues' max_actives determines the balance of performance
4027 between reads, writes, and scrubs.  E.g., increasing
4028 \fBzfs_vdev_scrub_max_active\fR will cause the scrub or resilver to complete
4029 more quickly, but reads and writes to have higher latency and lower throughput.
4031 All I/O classes have a fixed maximum number of outstanding operations
4032 except for the async write class. Asynchronous writes represent the data
4033 that is committed to stable storage during the syncing stage for
4034 transaction groups. Transaction groups enter the syncing state
4035 periodically so the number of queued async writes will quickly burst up
4036 and then bleed down to zero. Rather than servicing them as quickly as
4037 possible, the I/O scheduler changes the maximum number of active async
4038 write I/Os according to the amount of dirty data in the pool.  Since
4039 both throughput and latency typically increase with the number of
4040 concurrent operations issued to physical devices, reducing the
4041 burstiness in the number of concurrent operations also stabilizes the
4042 response time of operations from other -- and in particular synchronous
4043 -- queues. In broad strokes, the I/O scheduler will issue more
4044 concurrent operations from the async write queue as there's more dirty
4045 data in the pool.
4047 Async Writes
4049 The number of concurrent operations issued for the async write I/O class
4050 follows a piece-wise linear function defined by a few adjustable points.
4053        |              o---------| <-- zfs_vdev_async_write_max_active
4054   ^    |             /^         |
4055   |    |            / |         |
4056 active |           /  |         |
4057  I/O   |          /   |         |
4058 count  |         /    |         |
4059        |        /     |         |
4060        |-------o      |         | <-- zfs_vdev_async_write_min_active
4061       0|_______^______|_________|
4062        0%      |      |       100% of zfs_dirty_data_max
4063                |      |
4064                |      `-- zfs_vdev_async_write_active_max_dirty_percent
4065                `--------- zfs_vdev_async_write_active_min_dirty_percent
4068 Until the amount of dirty data exceeds a minimum percentage of the dirty
4069 data allowed in the pool, the I/O scheduler will limit the number of
4070 concurrent operations to the minimum. As that threshold is crossed, the
4071 number of concurrent operations issued increases linearly to the maximum at
4072 the specified maximum percentage of the dirty data allowed in the pool.
4074 Ideally, the amount of dirty data on a busy pool will stay in the sloped
4075 part of the function between \fBzfs_vdev_async_write_active_min_dirty_percent\fR
4076 and \fBzfs_vdev_async_write_active_max_dirty_percent\fR. If it exceeds the
4077 maximum percentage, this indicates that the rate of incoming data is
4078 greater than the rate that the backend storage can handle. In this case, we
4079 must further throttle incoming writes, as described in the next section.
4081 .SH ZFS TRANSACTION DELAY
4082 We delay transactions when we've determined that the backend storage
4083 isn't able to accommodate the rate of incoming writes.
4085 If there is already a transaction waiting, we delay relative to when
4086 that transaction will finish waiting.  This way the calculated delay time
4087 is independent of the number of threads concurrently executing
4088 transactions.
4090 If we are the only waiter, wait relative to when the transaction
4091 started, rather than the current time.  This credits the transaction for
4092 "time already served", e.g. reading indirect blocks.
4094 The minimum time for a transaction to take is calculated as:
4096     min_time = zfs_delay_scale * (dirty - min) / (max - dirty)
4097     min_time is then capped at 100 milliseconds.
4100 The delay has two degrees of freedom that can be adjusted via tunables.  The
4101 percentage of dirty data at which we start to delay is defined by
4102 \fBzfs_delay_min_dirty_percent\fR. This should typically be at or above
4103 \fBzfs_vdev_async_write_active_max_dirty_percent\fR so that we only start to
4104 delay after writing at full speed has failed to keep up with the incoming write
4105 rate. The scale of the curve is defined by \fBzfs_delay_scale\fR. Roughly speaking,
4106 this variable determines the amount of delay at the midpoint of the curve.
4109 delay
4110  10ms +-------------------------------------------------------------*+
4111       |                                                             *|
4112   9ms +                                                             *+
4113       |                                                             *|
4114   8ms +                                                             *+
4115       |                                                            * |
4116   7ms +                                                            * +
4117       |                                                            * |
4118   6ms +                                                            * +
4119       |                                                            * |
4120   5ms +                                                           *  +
4121       |                                                           *  |
4122   4ms +                                                           *  +
4123       |                                                           *  |
4124   3ms +                                                          *   +
4125       |                                                          *   |
4126   2ms +                                              (midpoint) *    +
4127       |                                                  |    **     |
4128   1ms +                                                  v ***       +
4129       |             zfs_delay_scale ---------->     ********         |
4130     0 +-------------------------------------*********----------------+
4131       0%                    <- zfs_dirty_data_max ->               100%
4134 Note that since the delay is added to the outstanding time remaining on the
4135 most recent transaction, the delay is effectively the inverse of IOPS.
4136 Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve
4137 was chosen such that small changes in the amount of accumulated dirty data
4138 in the first 3/4 of the curve yield relatively small differences in the
4139 amount of delay.
4141 The effects can be easier to understand when the amount of delay is
4142 represented on a log scale:
4145 delay
4146 100ms +-------------------------------------------------------------++
4147       +                                                              +
4148       |                                                              |
4149       +                                                             *+
4150  10ms +                                                             *+
4151       +                                                           ** +
4152       |                                              (midpoint)  **  |
4153       +                                                  |     **    +
4154   1ms +                                                  v ****      +
4155       +             zfs_delay_scale ---------->        *****         +
4156       |                                             ****             |
4157       +                                          ****                +
4158 100us +                                        **                    +
4159       +                                       *                      +
4160       |                                      *                       |
4161       +                                     *                        +
4162  10us +                                     *                        +
4163       +                                                              +
4164       |                                                              |
4165       +                                                              +
4166       +--------------------------------------------------------------+
4167       0%                    <- zfs_dirty_data_max ->               100%
4170 Note here that only as the amount of dirty data approaches its limit does
4171 the delay start to increase rapidly. The goal of a properly tuned system
4172 should be to keep the amount of dirty data out of that range by first
4173 ensuring that the appropriate limits are set for the I/O scheduler to reach
4174 optimal throughput on the backend storage, and then by changing the value
4175 of \fBzfs_delay_scale\fR to increase the steepness of the curve.