]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/openzfs/man/man5/zfs-module-parameters.5
Update to bmake-20200902
[FreeBSD/FreeBSD.git] / sys / contrib / openzfs / man / man5 / zfs-module-parameters.5
1 '\" te
2 .\" Copyright (c) 2013 by Turbo Fredriksson <turbo@bayour.com>. All rights reserved.
3 .\" Copyright (c) 2019 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.
24
25 .SS "Module parameters"
26 .sp
27 .LP
28
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
42
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
56
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
68
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
80
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
92
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.
101 .sp
102 Default value: \fB6\fR.
103 .RE
104
105 .sp
106 .ne 2
107 .na
108 \fBdmu_object_alloc_chunk_shift\fR (int)
109 .ad
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.
113 .sp
114 Default value: \fB7\fR (128).
115 .RE
116
117 .sp
118 .ne 2
119 .na
120 \fBdmu_prefetch_max\fR (int)
121 .ad
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.
125 .sp
126 Default value: \fB134,217,728\fR (128MB).
127 .RE
128
129 .sp
130 .ne 2
131 .na
132 \fBignore_hole_birth\fR (int)
133 .ad
134 .RS 12n
135 This is an alias for \fBsend_holes_without_birth_time\fR.
136 .RE
137
138 .sp
139 .ne 2
140 .na
141 \fBl2arc_feed_again\fR (int)
142 .ad
143 .RS 12n
144 Turbo L2ARC warm-up. When the L2ARC is cold the fill interval will be set as
145 fast as possible.
146 .sp
147 Use \fB1\fR for yes (default) and \fB0\fR to disable.
148 .RE
149
150 .sp
151 .ne 2
152 .na
153 \fBl2arc_feed_min_ms\fR (ulong)
154 .ad
155 .RS 12n
156 Min feed interval in milliseconds. Requires \fBl2arc_feed_again=1\fR and only
157 applicable in related situations.
158 .sp
159 Default value: \fB200\fR.
160 .RE
161
162 .sp
163 .ne 2
164 .na
165 \fBl2arc_feed_secs\fR (ulong)
166 .ad
167 .RS 12n
168 Seconds between L2ARC writing
169 .sp
170 Default value: \fB1\fR.
171 .RE
172
173 .sp
174 .ne 2
175 .na
176 \fBl2arc_headroom\fR (ulong)
177 .ad
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.
184 .sp
185 Default value: \fB2\fR.
186 .RE
187
188 .sp
189 .ne 2
190 .na
191 \fBl2arc_headroom_boost\fR (ulong)
192 .ad
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.
197 .sp
198 Default value: \fB200\fR%.
199 .RE
200
201 .sp
202 .ne 2
203 .na
204 \fBl2arc_meta_percent\fR (int)
205 .ad
206 .RS 12n
207 Percent of ARC size allowed for L2ARC-only headers.
208 Since L2ARC buffers are not evicted on memory pressure, too large amount of
209 headers on system with irrationaly large L2ARC can render it slow or unusable.
210 This parameter limits L2ARC writes and rebuild to achieve it.
211 .sp
212 Default value: \fB33\fR%.
213 .RE
214
215 .sp
216 .ne 2
217 .na
218 \fBl2arc_trim_ahead\fR (ulong)
219 .ad
220 .RS 12n
221 Trims ahead of the current write size (\fBl2arc_write_max\fR) on L2ARC devices
222 by this percentage of write size if we have filled the device. If set to
223 \fB100\fR we TRIM twice the space required to accommodate upcoming writes. A
224 minimum of 64MB will be trimmed. It also enables TRIM of the whole L2ARC device
225 upon creation or addition to an existing pool or if the header of the device is
226 invalid upon importing a pool or onlining a cache device. A value of \fB0\fR
227 disables TRIM on L2ARC altogether and is the default as it can put significant
228 stress on the underlying storage devices. This will vary depending of how well
229 the specific device handles these commands.
230 .sp
231 Default value: \fB0\fR%.
232 .RE
233
234 .sp
235 .ne 2
236 .na
237 \fBl2arc_noprefetch\fR (int)
238 .ad
239 .RS 12n
240 Do not write buffers to L2ARC if they were prefetched but not used by
241 applications.
242 .sp
243 Use \fB1\fR for yes (default) and \fB0\fR to disable.
244 .RE
245
246 .sp
247 .ne 2
248 .na
249 \fBl2arc_norw\fR (int)
250 .ad
251 .RS 12n
252 No reads during writes.
253 .sp
254 Use \fB1\fR for yes and \fB0\fR for no (default).
255 .RE
256
257 .sp
258 .ne 2
259 .na
260 \fBl2arc_write_boost\fR (ulong)
261 .ad
262 .RS 12n
263 Cold L2ARC devices will have \fBl2arc_write_max\fR increased by this amount
264 while they remain cold.
265 .sp
266 Default value: \fB8,388,608\fR.
267 .RE
268
269 .sp
270 .ne 2
271 .na
272 \fBl2arc_write_max\fR (ulong)
273 .ad
274 .RS 12n
275 Max write bytes per interval.
276 .sp
277 Default value: \fB8,388,608\fR.
278 .RE
279
280 .sp
281 .ne 2
282 .na
283 \fBl2arc_rebuild_enabled\fR (int)
284 .ad
285 .RS 12n
286 Rebuild the L2ARC when importing a pool (persistent L2ARC). This can be
287 disabled if there are problems importing a pool or attaching an L2ARC device
288 (e.g. the L2ARC device is slow in reading stored log metadata, or the metadata
289 has become somehow fragmented/unusable).
290 .sp
291 Use \fB1\fR for yes (default) and \fB0\fR for no.
292 .RE
293
294 .sp
295 .ne 2
296 .na
297 \fBl2arc_rebuild_blocks_min_l2size\fR (ulong)
298 .ad
299 .RS 12n
300 Min size (in bytes) of an L2ARC device required in order to write log blocks
301 in it. The log blocks are used upon importing the pool to rebuild
302 the L2ARC (persistent L2ARC). Rationale: for L2ARC devices less than 1GB, the
303 amount of data l2arc_evict() evicts is significant compared to the amount of
304 restored L2ARC data. In this case do not write log blocks in L2ARC in order not
305 to waste space.
306 .sp
307 Default value: \fB1,073,741,824\fR (1GB).
308 .RE
309
310 .sp
311 .ne 2
312 .na
313 \fBmetaslab_aliquot\fR (ulong)
314 .ad
315 .RS 12n
316 Metaslab granularity, in bytes. This is roughly similar to what would be
317 referred to as the "stripe size" in traditional RAID arrays. In normal
318 operation, ZFS will try to write this amount of data to a top-level vdev
319 before moving on to the next one.
320 .sp
321 Default value: \fB524,288\fR.
322 .RE
323
324 .sp
325 .ne 2
326 .na
327 \fBmetaslab_bias_enabled\fR (int)
328 .ad
329 .RS 12n
330 Enable metaslab group biasing based on its vdev's over- or under-utilization
331 relative to the pool.
332 .sp
333 Use \fB1\fR for yes (default) and \fB0\fR for no.
334 .RE
335
336 .sp
337 .ne 2
338 .na
339 \fBmetaslab_force_ganging\fR (ulong)
340 .ad
341 .RS 12n
342 Make some blocks above a certain size be gang blocks.  This option is used
343 by the test suite to facilitate testing.
344 .sp
345 Default value: \fB16,777,217\fR.
346 .RE
347
348 .sp
349 .ne 2
350 .na
351 \fBzfs_keep_log_spacemaps_at_export\fR (int)
352 .ad
353 .RS 12n
354 Prevent log spacemaps from being destroyed during pool exports and destroys.
355 .sp
356 Use \fB1\fR for yes and \fB0\fR for no (default).
357 .RE
358
359 .sp
360 .ne 2
361 .na
362 \fBzfs_metaslab_segment_weight_enabled\fR (int)
363 .ad
364 .RS 12n
365 Enable/disable segment-based metaslab selection.
366 .sp
367 Use \fB1\fR for yes (default) and \fB0\fR for no.
368 .RE
369
370 .sp
371 .ne 2
372 .na
373 \fBzfs_metaslab_switch_threshold\fR (int)
374 .ad
375 .RS 12n
376 When using segment-based metaslab selection, continue allocating
377 from the active metaslab until \fBzfs_metaslab_switch_threshold\fR
378 worth of buckets have been exhausted.
379 .sp
380 Default value: \fB2\fR.
381 .RE
382
383 .sp
384 .ne 2
385 .na
386 \fBmetaslab_debug_load\fR (int)
387 .ad
388 .RS 12n
389 Load all metaslabs during pool import.
390 .sp
391 Use \fB1\fR for yes and \fB0\fR for no (default).
392 .RE
393
394 .sp
395 .ne 2
396 .na
397 \fBmetaslab_debug_unload\fR (int)
398 .ad
399 .RS 12n
400 Prevent metaslabs from being unloaded.
401 .sp
402 Use \fB1\fR for yes and \fB0\fR for no (default).
403 .RE
404
405 .sp
406 .ne 2
407 .na
408 \fBmetaslab_fragmentation_factor_enabled\fR (int)
409 .ad
410 .RS 12n
411 Enable use of the fragmentation metric in computing metaslab weights.
412 .sp
413 Use \fB1\fR for yes (default) and \fB0\fR for no.
414 .RE
415
416 .sp
417 .ne 2
418 .na
419 \fBmetaslab_df_max_search\fR (int)
420 .ad
421 .RS 12n
422 Maximum distance to search forward from the last offset. Without this limit,
423 fragmented pools can see >100,000 iterations and metaslab_block_picker()
424 becomes the performance limiting factor on high-performance storage.
425
426 With the default setting of 16MB, we typically see less than 500 iterations,
427 even with very fragmented, ashift=9 pools. The maximum number of iterations
428 possible is: \fBmetaslab_df_max_search / (2 * (1<<ashift))\fR.
429 With the default setting of 16MB this is 16*1024 (with ashift=9) or 2048
430 (with ashift=12).
431 .sp
432 Default value: \fB16,777,216\fR (16MB)
433 .RE
434
435 .sp
436 .ne 2
437 .na
438 \fBmetaslab_df_use_largest_segment\fR (int)
439 .ad
440 .RS 12n
441 If we are not searching forward (due to metaslab_df_max_search,
442 metaslab_df_free_pct, or metaslab_df_alloc_threshold), this tunable controls
443 what segment is used.  If it is set, we will use the largest free segment.
444 If it is not set, we will use a segment of exactly the requested size (or
445 larger).
446 .sp
447 Use \fB1\fR for yes and \fB0\fR for no (default).
448 .RE
449
450 .sp
451 .ne 2
452 .na
453 \fBzfs_metaslab_max_size_cache_sec\fR (ulong)
454 .ad
455 .RS 12n
456 When we unload a metaslab, we cache the size of the largest free chunk. We use
457 that cached size to determine whether or not to load a metaslab for a given
458 allocation. As more frees accumulate in that metaslab while it's unloaded, the
459 cached max size becomes less and less accurate. After a number of seconds
460 controlled by this tunable, we stop considering the cached max size and start
461 considering only the histogram instead.
462 .sp
463 Default value: \fB3600 seconds\fR (one hour)
464 .RE
465
466 .sp
467 .ne 2
468 .na
469 \fBzfs_metaslab_mem_limit\fR (int)
470 .ad
471 .RS 12n
472 When we are loading a new metaslab, we check the amount of memory being used
473 to store metaslab range trees. If it is over a threshold, we attempt to unload
474 the least recently used metaslab to prevent the system from clogging all of
475 its memory with range trees. This tunable sets the percentage of total system
476 memory that is the threshold.
477 .sp
478 Default value: \fB25 percent\fR
479 .RE
480
481 .sp
482 .ne 2
483 .na
484 \fBzfs_vdev_default_ms_count\fR (int)
485 .ad
486 .RS 12n
487 When a vdev is added target this number of metaslabs per top-level vdev.
488 .sp
489 Default value: \fB200\fR.
490 .RE
491
492 .sp
493 .ne 2
494 .na
495 \fBzfs_vdev_default_ms_shift\fR (int)
496 .ad
497 .RS 12n
498 Default limit for metaslab size.
499 .sp
500 Default value: \fB29\fR [meaning (1 << 29) = 512MB].
501 .RE
502
503 .sp
504 .ne 2
505 .na
506 \fBzfs_vdev_max_auto_ashift\fR (ulong)
507 .ad
508 .RS 12n
509 Maximum ashift used when optimizing for logical -> physical sector size on new
510 top-level vdevs.
511 .sp
512 Default value: \fBASHIFT_MAX\fR (16).
513 .RE
514
515 .sp
516 .ne 2
517 .na
518 \fBzfs_vdev_min_auto_ashift\fR (ulong)
519 .ad
520 .RS 12n
521 Minimum ashift used when creating new top-level vdevs.
522 .sp
523 Default value: \fBASHIFT_MIN\fR (9).
524 .RE
525
526 .sp
527 .ne 2
528 .na
529 \fBzfs_vdev_min_ms_count\fR (int)
530 .ad
531 .RS 12n
532 Minimum number of metaslabs to create in a top-level vdev.
533 .sp
534 Default value: \fB16\fR.
535 .RE
536
537 .sp
538 .ne 2
539 .na
540 \fBvdev_validate_skip\fR (int)
541 .ad
542 .RS 12n
543 Skip label validation steps during pool import. Changing is not recommended
544 unless you know what you are doing and are recovering a damaged label.
545 .sp
546 Default value: \fB0\fR.
547 .RE
548
549 .sp
550 .ne 2
551 .na
552 \fBzfs_vdev_ms_count_limit\fR (int)
553 .ad
554 .RS 12n
555 Practical upper limit of total metaslabs per top-level vdev.
556 .sp
557 Default value: \fB131,072\fR.
558 .RE
559
560 .sp
561 .ne 2
562 .na
563 \fBmetaslab_preload_enabled\fR (int)
564 .ad
565 .RS 12n
566 Enable metaslab group preloading.
567 .sp
568 Use \fB1\fR for yes (default) and \fB0\fR for no.
569 .RE
570
571 .sp
572 .ne 2
573 .na
574 \fBmetaslab_lba_weighting_enabled\fR (int)
575 .ad
576 .RS 12n
577 Give more weight to metaslabs with lower LBAs, assuming they have
578 greater bandwidth as is typically the case on a modern constant
579 angular velocity disk drive.
580 .sp
581 Use \fB1\fR for yes (default) and \fB0\fR for no.
582 .RE
583
584 .sp
585 .ne 2
586 .na
587 \fBmetaslab_unload_delay\fR (int)
588 .ad
589 .RS 12n
590 After a metaslab is used, we keep it loaded for this many txgs, to attempt to
591 reduce unnecessary reloading. Note that both this many txgs and
592 \fBmetaslab_unload_delay_ms\fR milliseconds must pass before unloading will
593 occur.
594 .sp
595 Default value: \fB32\fR.
596 .RE
597
598 .sp
599 .ne 2
600 .na
601 \fBmetaslab_unload_delay_ms\fR (int)
602 .ad
603 .RS 12n
604 After a metaslab is used, we keep it loaded for this many milliseconds, to
605 attempt to reduce unnecessary reloading. Note that both this many
606 milliseconds and \fBmetaslab_unload_delay\fR txgs must pass before unloading
607 will occur.
608 .sp
609 Default value: \fB600000\fR (ten minutes).
610 .RE
611
612 .sp
613 .ne 2
614 .na
615 \fBsend_holes_without_birth_time\fR (int)
616 .ad
617 .RS 12n
618 When set, the hole_birth optimization will not be used, and all holes will
619 always be sent on zfs send.  This is useful if you suspect your datasets are
620 affected by a bug in hole_birth.
621 .sp
622 Use \fB1\fR for on (default) and \fB0\fR for off.
623 .RE
624
625 .sp
626 .ne 2
627 .na
628 \fBspa_config_path\fR (charp)
629 .ad
630 .RS 12n
631 SPA config file
632 .sp
633 Default value: \fB/etc/zfs/zpool.cache\fR.
634 .RE
635
636 .sp
637 .ne 2
638 .na
639 \fBspa_asize_inflation\fR (int)
640 .ad
641 .RS 12n
642 Multiplication factor used to estimate actual disk consumption from the
643 size of data being written. The default value is a worst case estimate,
644 but lower values may be valid for a given pool depending on its
645 configuration.  Pool administrators who understand the factors involved
646 may wish to specify a more realistic inflation factor, particularly if
647 they operate close to quota or capacity limits.
648 .sp
649 Default value: \fB24\fR.
650 .RE
651
652 .sp
653 .ne 2
654 .na
655 \fBspa_load_print_vdev_tree\fR (int)
656 .ad
657 .RS 12n
658 Whether to print the vdev tree in the debugging message buffer during pool import.
659 Use 0 to disable and 1 to enable.
660 .sp
661 Default value: \fB0\fR.
662 .RE
663
664 .sp
665 .ne 2
666 .na
667 \fBspa_load_verify_data\fR (int)
668 .ad
669 .RS 12n
670 Whether to traverse data blocks during an "extreme rewind" (\fB-X\fR)
671 import.  Use 0 to disable and 1 to enable.
672
673 An extreme rewind import normally performs a full traversal of all
674 blocks in the pool for verification.  If this parameter is set to 0,
675 the traversal skips non-metadata blocks.  It can be toggled once the
676 import has started to stop or start the traversal of non-metadata blocks.
677 .sp
678 Default value: \fB1\fR.
679 .RE
680
681 .sp
682 .ne 2
683 .na
684 \fBspa_load_verify_metadata\fR (int)
685 .ad
686 .RS 12n
687 Whether to traverse blocks during an "extreme rewind" (\fB-X\fR)
688 pool import.  Use 0 to disable and 1 to enable.
689
690 An extreme rewind import normally performs a full traversal of all
691 blocks in the pool for verification.  If this parameter is set to 0,
692 the traversal is not performed.  It can be toggled once the import has
693 started to stop or start the traversal.
694 .sp
695 Default value: \fB1\fR.
696 .RE
697
698 .sp
699 .ne 2
700 .na
701 \fBspa_load_verify_shift\fR (int)
702 .ad
703 .RS 12n
704 Sets the maximum number of bytes to consume during pool import to the log2
705 fraction of the target ARC size.
706 .sp
707 Default value: \fB4\fR.
708 .RE
709
710 .sp
711 .ne 2
712 .na
713 \fBspa_slop_shift\fR (int)
714 .ad
715 .RS 12n
716 Normally, we don't allow the last 3.2% (1/(2^spa_slop_shift)) of space
717 in the pool to be consumed.  This ensures that we don't run the pool
718 completely out of space, due to unaccounted changes (e.g. to the MOS).
719 It also limits the worst-case time to allocate space.  If we have
720 less than this amount of free space, most ZPL operations (e.g. write,
721 create) will return ENOSPC.
722 .sp
723 Default value: \fB5\fR.
724 .RE
725
726 .sp
727 .ne 2
728 .na
729 \fBvdev_removal_max_span\fR (int)
730 .ad
731 .RS 12n
732 During top-level vdev removal, chunks of data are copied from the vdev
733 which may include free space in order to trade bandwidth for IOPS.
734 This parameter determines the maximum span of free space (in bytes)
735 which will be included as "unnecessary" data in a chunk of copied data.
736
737 The default value here was chosen to align with
738 \fBzfs_vdev_read_gap_limit\fR, which is a similar concept when doing
739 regular reads (but there's no reason it has to be the same).
740 .sp
741 Default value: \fB32,768\fR.
742 .RE
743
744 .sp
745 .ne 2
746 .na
747 \fBzap_iterate_prefetch\fR (int)
748 .ad
749 .RS 12n
750 If this is set, when we start iterating over a ZAP object, zfs will prefetch
751 the entire object (all leaf blocks).  However, this is limited by
752 \fBdmu_prefetch_max\fR.
753 .sp
754 Use \fB1\fR for on (default) and \fB0\fR for off.
755 .RE
756
757 .sp
758 .ne 2
759 .na
760 \fBzfetch_array_rd_sz\fR (ulong)
761 .ad
762 .RS 12n
763 If prefetching is enabled, disable prefetching for reads larger than this size.
764 .sp
765 Default value: \fB1,048,576\fR.
766 .RE
767
768 .sp
769 .ne 2
770 .na
771 \fBzfetch_max_distance\fR (uint)
772 .ad
773 .RS 12n
774 Max bytes to prefetch per stream (default 8MB).
775 .sp
776 Default value: \fB8,388,608\fR.
777 .RE
778
779 .sp
780 .ne 2
781 .na
782 \fBzfetch_max_streams\fR (uint)
783 .ad
784 .RS 12n
785 Max number of streams per zfetch (prefetch streams per file).
786 .sp
787 Default value: \fB8\fR.
788 .RE
789
790 .sp
791 .ne 2
792 .na
793 \fBzfetch_min_sec_reap\fR (uint)
794 .ad
795 .RS 12n
796 Min time before an active prefetch stream can be reclaimed
797 .sp
798 Default value: \fB2\fR.
799 .RE
800
801 .sp
802 .ne 2
803 .na
804 \fBzfs_abd_scatter_enabled\fR (int)
805 .ad
806 .RS 12n
807 Enables ARC from using scatter/gather lists and forces all allocations to be
808 linear in kernel memory. Disabling can improve performance in some code paths
809 at the expense of fragmented kernel memory.
810 .sp
811 Default value: \fB1\fR.
812 .RE
813
814 .sp
815 .ne 2
816 .na
817 \fBzfs_abd_scatter_max_order\fR (iunt)
818 .ad
819 .RS 12n
820 Maximum number of consecutive memory pages allocated in a single block for
821 scatter/gather lists. Default value is specified by the kernel itself.
822 .sp
823 Default value: \fB10\fR at the time of this writing.
824 .RE
825
826 .sp
827 .ne 2
828 .na
829 \fBzfs_abd_scatter_min_size\fR (uint)
830 .ad
831 .RS 12n
832 This is the minimum allocation size that will use scatter (page-based)
833 ABD's.  Smaller allocations will use linear ABD's.
834 .sp
835 Default value: \fB1536\fR (512B and 1KB allocations will be linear).
836 .RE
837
838 .sp
839 .ne 2
840 .na
841 \fBzfs_arc_dnode_limit\fR (ulong)
842 .ad
843 .RS 12n
844 When the number of bytes consumed by dnodes in the ARC exceeds this number of
845 bytes, try to unpin some of it in response to demand for non-metadata. This
846 value acts as a ceiling to the amount of dnode metadata, and defaults to 0 which
847 indicates that a percent which is based on \fBzfs_arc_dnode_limit_percent\fR of
848 the ARC meta buffers that may be used for dnodes.
849
850 See also \fBzfs_arc_meta_prune\fR which serves a similar purpose but is used
851 when the amount of metadata in the ARC exceeds \fBzfs_arc_meta_limit\fR rather
852 than in response to overall demand for non-metadata.
853
854 .sp
855 Default value: \fB0\fR.
856 .RE
857
858 .sp
859 .ne 2
860 .na
861 \fBzfs_arc_dnode_limit_percent\fR (ulong)
862 .ad
863 .RS 12n
864 Percentage that can be consumed by dnodes of ARC meta buffers.
865 .sp
866 See also \fBzfs_arc_dnode_limit\fR which serves a similar purpose but has a
867 higher priority if set to nonzero value.
868 .sp
869 Default value: \fB10\fR%.
870 .RE
871
872 .sp
873 .ne 2
874 .na
875 \fBzfs_arc_dnode_reduce_percent\fR (ulong)
876 .ad
877 .RS 12n
878 Percentage of ARC dnodes to try to scan in response to demand for non-metadata
879 when the number of bytes consumed by dnodes exceeds \fBzfs_arc_dnode_limit\fR.
880
881 .sp
882 Default value: \fB10\fR% of the number of dnodes in the ARC.
883 .RE
884
885 .sp
886 .ne 2
887 .na
888 \fBzfs_arc_average_blocksize\fR (int)
889 .ad
890 .RS 12n
891 The ARC's buffer hash table is sized based on the assumption of an average
892 block size of \fBzfs_arc_average_blocksize\fR (default 8K).  This works out
893 to roughly 1MB of hash table per 1GB of physical memory with 8-byte pointers.
894 For configurations with a known larger average block size this value can be
895 increased to reduce the memory footprint.
896
897 .sp
898 Default value: \fB8192\fR.
899 .RE
900
901 .sp
902 .ne 2
903 .na
904 \fBzfs_arc_eviction_pct\fR (int)
905 .ad
906 .RS 12n
907 When \fBarc_is_overflowing()\fR, \fBarc_get_data_impl()\fR waits for this
908 percent of the requested amount of data to be evicted.  For example, by
909 default for every 2KB that's evicted, 1KB of it may be "reused" by a new
910 allocation. Since this is above 100%, it ensures that progress is made
911 towards getting \fBarc_size\fR under \fBarc_c\fR.  Since this is finite, it
912 ensures that allocations can still happen, even during the potentially long
913 time that \fBarc_size\fR is more than \fBarc_c\fR.
914 .sp
915 Default value: \fB200\fR.
916 .RE
917
918 .sp
919 .ne 2
920 .na
921 \fBzfs_arc_evict_batch_limit\fR (int)
922 .ad
923 .RS 12n
924 Number ARC headers to evict per sub-list before proceeding to another sub-list.
925 This batch-style operation prevents entire sub-lists from being evicted at once
926 but comes at a cost of additional unlocking and locking.
927 .sp
928 Default value: \fB10\fR.
929 .RE
930
931 .sp
932 .ne 2
933 .na
934 \fBzfs_arc_grow_retry\fR (int)
935 .ad
936 .RS 12n
937 If set to a non zero value, it will replace the arc_grow_retry value with this value.
938 The arc_grow_retry value (default 5) is the number of seconds the ARC will wait before
939 trying to resume growth after a memory pressure event.
940 .sp
941 Default value: \fB0\fR.
942 .RE
943
944 .sp
945 .ne 2
946 .na
947 \fBzfs_arc_lotsfree_percent\fR (int)
948 .ad
949 .RS 12n
950 Throttle I/O when free system memory drops below this percentage of total
951 system memory.  Setting this value to 0 will disable the throttle.
952 .sp
953 Default value: \fB10\fR%.
954 .RE
955
956 .sp
957 .ne 2
958 .na
959 \fBzfs_arc_max\fR (ulong)
960 .ad
961 .RS 12n
962 Max size of ARC in bytes.  If set to 0 then the max size of ARC is determined
963 by the amount of system memory installed.  For Linux, 1/2 of system memory will
964 be used as the limit.  For FreeBSD, the larger of all system memory - 1GB or
965 5/8 of system memory will be used as the limit.  This value must be at least
966 67108864 (64 megabytes).
967 .sp
968 This value can be changed dynamically with some caveats. It cannot be set back
969 to 0 while running and reducing it below the current ARC size will not cause
970 the ARC to shrink without memory pressure to induce shrinking.
971 .sp
972 Default value: \fB0\fR.
973 .RE
974
975 .sp
976 .ne 2
977 .na
978 \fBzfs_arc_meta_adjust_restarts\fR (ulong)
979 .ad
980 .RS 12n
981 The number of restart passes to make while scanning the ARC attempting
982 the free buffers in order to stay below the \fBzfs_arc_meta_limit\fR.
983 This value should not need to be tuned but is available to facilitate
984 performance analysis.
985 .sp
986 Default value: \fB4096\fR.
987 .RE
988
989 .sp
990 .ne 2
991 .na
992 \fBzfs_arc_meta_limit\fR (ulong)
993 .ad
994 .RS 12n
995 The maximum allowed size in bytes that meta data buffers are allowed to
996 consume in the ARC.  When this limit is reached meta data buffers will
997 be reclaimed even if the overall arc_c_max has not been reached.  This
998 value defaults to 0 which indicates that a percent which is based on
999 \fBzfs_arc_meta_limit_percent\fR of the ARC may be used for meta data.
1000 .sp
1001 This value my be changed dynamically except that it cannot be set back to 0
1002 for a specific percent of the ARC; it must be set to an explicit value.
1003 .sp
1004 Default value: \fB0\fR.
1005 .RE
1006
1007 .sp
1008 .ne 2
1009 .na
1010 \fBzfs_arc_meta_limit_percent\fR (ulong)
1011 .ad
1012 .RS 12n
1013 Percentage of ARC buffers that can be used for meta data.
1014
1015 See also \fBzfs_arc_meta_limit\fR which serves a similar purpose but has a
1016 higher priority if set to nonzero value.
1017
1018 .sp
1019 Default value: \fB75\fR%.
1020 .RE
1021
1022 .sp
1023 .ne 2
1024 .na
1025 \fBzfs_arc_meta_min\fR (ulong)
1026 .ad
1027 .RS 12n
1028 The minimum allowed size in bytes that meta data buffers may consume in
1029 the ARC.  This value defaults to 0 which disables a floor on the amount
1030 of the ARC devoted meta data.
1031 .sp
1032 Default value: \fB0\fR.
1033 .RE
1034
1035 .sp
1036 .ne 2
1037 .na
1038 \fBzfs_arc_meta_prune\fR (int)
1039 .ad
1040 .RS 12n
1041 The number of dentries and inodes to be scanned looking for entries
1042 which can be dropped.  This may be required when the ARC reaches the
1043 \fBzfs_arc_meta_limit\fR because dentries and inodes can pin buffers
1044 in the ARC.  Increasing this value will cause to dentry and inode caches
1045 to be pruned more aggressively.  Setting this value to 0 will disable
1046 pruning the inode and dentry caches.
1047 .sp
1048 Default value: \fB10,000\fR.
1049 .RE
1050
1051 .sp
1052 .ne 2
1053 .na
1054 \fBzfs_arc_meta_strategy\fR (int)
1055 .ad
1056 .RS 12n
1057 Define the strategy for ARC meta data buffer eviction (meta reclaim strategy).
1058 A value of 0 (META_ONLY) will evict only the ARC meta data buffers.
1059 A value of 1 (BALANCED) indicates that additional data buffers may be evicted if
1060 that is required to in order to evict the required number of meta data buffers.
1061 .sp
1062 Default value: \fB1\fR.
1063 .RE
1064
1065 .sp
1066 .ne 2
1067 .na
1068 \fBzfs_arc_min\fR (ulong)
1069 .ad
1070 .RS 12n
1071 Min size of ARC in bytes. If set to 0 then arc_c_min will default to
1072 consuming the larger of 32M or 1/32 of total system memory.
1073 .sp
1074 Default value: \fB0\fR.
1075 .RE
1076
1077 .sp
1078 .ne 2
1079 .na
1080 \fBzfs_arc_min_prefetch_ms\fR (int)
1081 .ad
1082 .RS 12n
1083 Minimum time prefetched blocks are locked in the ARC, specified in ms.
1084 A value of \fB0\fR will default to 1000 ms.
1085 .sp
1086 Default value: \fB0\fR.
1087 .RE
1088
1089 .sp
1090 .ne 2
1091 .na
1092 \fBzfs_arc_min_prescient_prefetch_ms\fR (int)
1093 .ad
1094 .RS 12n
1095 Minimum time "prescient prefetched" blocks are locked in the ARC, specified
1096 in ms. These blocks are meant to be prefetched fairly aggressively ahead of
1097 the code that may use them. A value of \fB0\fR will default to 6000 ms.
1098 .sp
1099 Default value: \fB0\fR.
1100 .RE
1101
1102 .sp
1103 .ne 2
1104 .na
1105 \fBzfs_max_missing_tvds\fR (int)
1106 .ad
1107 .RS 12n
1108 Number of missing top-level vdevs which will be allowed during
1109 pool import (only in read-only mode).
1110 .sp
1111 Default value: \fB0\fR
1112 .RE
1113
1114 .sp
1115 .ne 2
1116 .na
1117 \fBzfs_max_nvlist_src_size\fR (ulong)
1118 .ad
1119 .RS 12n
1120 Maximum size in bytes allowed to be passed as zc_nvlist_src_size for ioctls on
1121 /dev/zfs. This prevents a user from causing the kernel to allocate an excessive
1122 amount of memory. When the limit is exceeded, the ioctl fails with EINVAL and a
1123 description of the error is sent to the zfs-dbgmsg log. This parameter should
1124 not need to be touched under normal circumstances. On FreeBSD, the default is
1125 based on the system limit on user wired memory. On Linux, the default is
1126 \fBKMALLOC_MAX_SIZE\fR .
1127 .sp
1128 Default value: \fB0\fR (kernel decides)
1129 .RE
1130
1131 .sp
1132 .ne 2
1133 .na
1134 \fBzfs_multilist_num_sublists\fR (int)
1135 .ad
1136 .RS 12n
1137 To allow more fine-grained locking, each ARC state contains a series
1138 of lists for both data and meta data objects.  Locking is performed at
1139 the level of these "sub-lists".  This parameters controls the number of
1140 sub-lists per ARC state, and also applies to other uses of the
1141 multilist data structure.
1142 .sp
1143 Default value: \fB4\fR or the number of online CPUs, whichever is greater
1144 .RE
1145
1146 .sp
1147 .ne 2
1148 .na
1149 \fBzfs_arc_overflow_shift\fR (int)
1150 .ad
1151 .RS 12n
1152 The ARC size is considered to be overflowing if it exceeds the current
1153 ARC target size (arc_c) by a threshold determined by this parameter.
1154 The threshold is calculated as a fraction of arc_c using the formula
1155 "arc_c >> \fBzfs_arc_overflow_shift\fR".
1156
1157 The default value of 8 causes the ARC to be considered to be overflowing
1158 if it exceeds the target size by 1/256th (0.3%) of the target size.
1159
1160 When the ARC is overflowing, new buffer allocations are stalled until
1161 the reclaim thread catches up and the overflow condition no longer exists.
1162 .sp
1163 Default value: \fB8\fR.
1164 .RE
1165
1166 .sp
1167 .ne 2
1168 .na
1169
1170 \fBzfs_arc_p_min_shift\fR (int)
1171 .ad
1172 .RS 12n
1173 If set to a non zero value, this will update arc_p_min_shift (default 4)
1174 with the new value.
1175 arc_p_min_shift is used to shift of arc_c for calculating both min and max
1176 max arc_p
1177 .sp
1178 Default value: \fB0\fR.
1179 .RE
1180
1181 .sp
1182 .ne 2
1183 .na
1184 \fBzfs_arc_p_dampener_disable\fR (int)
1185 .ad
1186 .RS 12n
1187 Disable arc_p adapt dampener
1188 .sp
1189 Use \fB1\fR for yes (default) and \fB0\fR to disable.
1190 .RE
1191
1192 .sp
1193 .ne 2
1194 .na
1195 \fBzfs_arc_shrink_shift\fR (int)
1196 .ad
1197 .RS 12n
1198 If set to a non zero value, this will update arc_shrink_shift (default 7)
1199 with the new value.
1200 .sp
1201 Default value: \fB0\fR.
1202 .RE
1203
1204 .sp
1205 .ne 2
1206 .na
1207 \fBzfs_arc_pc_percent\fR (uint)
1208 .ad
1209 .RS 12n
1210 Percent of pagecache to reclaim arc to
1211
1212 This tunable allows ZFS arc to play more nicely with the kernel's LRU
1213 pagecache. It can guarantee that the ARC size won't collapse under scanning
1214 pressure on the pagecache, yet still allows arc to be reclaimed down to
1215 zfs_arc_min if necessary. This value is specified as percent of pagecache
1216 size (as measured by NR_FILE_PAGES) where that percent may exceed 100. This
1217 only operates during memory pressure/reclaim.
1218 .sp
1219 Default value: \fB0\fR% (disabled).
1220 .RE
1221
1222 .sp
1223 .ne 2
1224 .na
1225 \fBzfs_arc_shrinker_limit\fR (int)
1226 .ad
1227 .RS 12n
1228 This is a limit on how many pages the ARC shrinker makes available for
1229 eviction in response to one page allocation attempt.  Note that in
1230 practice, the kernel's shrinker can ask us to evict up to about 4x this
1231 for one allocation attempt.
1232 .sp
1233 The default limit of 10,000 (in practice, 160MB per allocation attempt with
1234 4K pages) limits the amount of time spent attempting to reclaim ARC memory to
1235 less than 100ms per allocation attempt, even with a small average compressed
1236 block size of ~8KB.
1237 .sp
1238 The parameter can be set to 0 (zero) to disable the limit.
1239 .sp
1240 This parameter only applies on Linux.
1241 .sp
1242 Default value: \fB10,000\fR.
1243 .RE
1244
1245 .sp
1246 .ne 2
1247 .na
1248 \fBzfs_arc_sys_free\fR (ulong)
1249 .ad
1250 .RS 12n
1251 The target number of bytes the ARC should leave as free memory on the system.
1252 Defaults to the larger of 1/64 of physical memory or 512K.  Setting this
1253 option to a non-zero value will override the default.
1254 .sp
1255 Default value: \fB0\fR.
1256 .RE
1257
1258 .sp
1259 .ne 2
1260 .na
1261 \fBzfs_autoimport_disable\fR (int)
1262 .ad
1263 .RS 12n
1264 Disable pool import at module load by ignoring the cache file (typically \fB/etc/zfs/zpool.cache\fR).
1265 .sp
1266 Use \fB1\fR for yes (default) and \fB0\fR for no.
1267 .RE
1268
1269 .sp
1270 .ne 2
1271 .na
1272 \fBzfs_checksum_events_per_second\fR (uint)
1273 .ad
1274 .RS 12n
1275 Rate limit checksum events to this many per second.  Note that this should
1276 not be set below the zed thresholds (currently 10 checksums over 10 sec)
1277 or else zed may not trigger any action.
1278 .sp
1279 Default value: 20
1280 .RE
1281
1282 .sp
1283 .ne 2
1284 .na
1285 \fBzfs_commit_timeout_pct\fR (int)
1286 .ad
1287 .RS 12n
1288 This controls the amount of time that a ZIL block (lwb) will remain "open"
1289 when it isn't "full", and it has a thread waiting for it to be committed to
1290 stable storage.  The timeout is scaled based on a percentage of the last lwb
1291 latency to avoid significantly impacting the latency of each individual
1292 transaction record (itx).
1293 .sp
1294 Default value: \fB5\fR%.
1295 .RE
1296
1297 .sp
1298 .ne 2
1299 .na
1300 \fBzfs_condense_indirect_commit_entry_delay_ms\fR (int)
1301 .ad
1302 .RS 12n
1303 Vdev indirection layer (used for device removal) sleeps for this many
1304 milliseconds during mapping generation. Intended for use with the test suite
1305 to throttle vdev removal speed.
1306 .sp
1307 Default value: \fB0\fR (no throttle).
1308 .RE
1309
1310 .sp
1311 .ne 2
1312 .na
1313 \fBzfs_condense_indirect_vdevs_enable\fR (int)
1314 .ad
1315 .RS 12n
1316 Enable condensing indirect vdev mappings.  When set to a non-zero value,
1317 attempt to condense indirect vdev mappings if the mapping uses more than
1318 \fBzfs_condense_min_mapping_bytes\fR bytes of memory and if the obsolete
1319 space map object uses more than \fBzfs_condense_max_obsolete_bytes\fR
1320 bytes on-disk.  The condensing process is an attempt to save memory by
1321 removing obsolete mappings.
1322 .sp
1323 Default value: \fB1\fR.
1324 .RE
1325
1326 .sp
1327 .ne 2
1328 .na
1329 \fBzfs_condense_max_obsolete_bytes\fR (ulong)
1330 .ad
1331 .RS 12n
1332 Only attempt to condense indirect vdev mappings if the on-disk size
1333 of the obsolete space map object is greater than this number of bytes
1334 (see \fBfBzfs_condense_indirect_vdevs_enable\fR).
1335 .sp
1336 Default value: \fB1,073,741,824\fR.
1337 .RE
1338
1339 .sp
1340 .ne 2
1341 .na
1342 \fBzfs_condense_min_mapping_bytes\fR (ulong)
1343 .ad
1344 .RS 12n
1345 Minimum size vdev mapping to attempt to condense (see
1346 \fBzfs_condense_indirect_vdevs_enable\fR).
1347 .sp
1348 Default value: \fB131,072\fR.
1349 .RE
1350
1351 .sp
1352 .ne 2
1353 .na
1354 \fBzfs_dbgmsg_enable\fR (int)
1355 .ad
1356 .RS 12n
1357 Internally ZFS keeps a small log to facilitate debugging.  By default the log
1358 is disabled, to enable it set this option to 1.  The contents of the log can
1359 be accessed by reading the /proc/spl/kstat/zfs/dbgmsg file.  Writing 0 to
1360 this proc file clears the log.
1361 .sp
1362 Default value: \fB0\fR.
1363 .RE
1364
1365 .sp
1366 .ne 2
1367 .na
1368 \fBzfs_dbgmsg_maxsize\fR (int)
1369 .ad
1370 .RS 12n
1371 The maximum size in bytes of the internal ZFS debug log.
1372 .sp
1373 Default value: \fB4M\fR.
1374 .RE
1375
1376 .sp
1377 .ne 2
1378 .na
1379 \fBzfs_dbuf_state_index\fR (int)
1380 .ad
1381 .RS 12n
1382 This feature is currently unused. It is normally used for controlling what
1383 reporting is available under /proc/spl/kstat/zfs.
1384 .sp
1385 Default value: \fB0\fR.
1386 .RE
1387
1388 .sp
1389 .ne 2
1390 .na
1391 \fBzfs_deadman_enabled\fR (int)
1392 .ad
1393 .RS 12n
1394 When a pool sync operation takes longer than \fBzfs_deadman_synctime_ms\fR
1395 milliseconds, or when an individual I/O takes longer than
1396 \fBzfs_deadman_ziotime_ms\fR milliseconds, then the operation is considered to
1397 be "hung".  If \fBzfs_deadman_enabled\fR is set then the deadman behavior is
1398 invoked as described by the \fBzfs_deadman_failmode\fR module option.
1399 By default the deadman is enabled and configured to \fBwait\fR which results
1400 in "hung" I/Os only being logged.  The deadman is automatically disabled
1401 when a pool gets suspended.
1402 .sp
1403 Default value: \fB1\fR.
1404 .RE
1405
1406 .sp
1407 .ne 2
1408 .na
1409 \fBzfs_deadman_failmode\fR (charp)
1410 .ad
1411 .RS 12n
1412 Controls the failure behavior when the deadman detects a "hung" I/O.  Valid
1413 values are \fBwait\fR, \fBcontinue\fR, and \fBpanic\fR.
1414 .sp
1415 \fBwait\fR - Wait for a "hung" I/O to complete.  For each "hung" I/O a
1416 "deadman" event will be posted describing that I/O.
1417 .sp
1418 \fBcontinue\fR - Attempt to recover from a "hung" I/O by re-dispatching it
1419 to the I/O pipeline if possible.
1420 .sp
1421 \fBpanic\fR - Panic the system.  This can be used to facilitate an automatic
1422 fail-over to a properly configured fail-over partner.
1423 .sp
1424 Default value: \fBwait\fR.
1425 .RE
1426
1427 .sp
1428 .ne 2
1429 .na
1430 \fBzfs_deadman_checktime_ms\fR (int)
1431 .ad
1432 .RS 12n
1433 Check time in milliseconds. This defines the frequency at which we check
1434 for hung I/O and potentially invoke the \fBzfs_deadman_failmode\fR behavior.
1435 .sp
1436 Default value: \fB60,000\fR.
1437 .RE
1438
1439 .sp
1440 .ne 2
1441 .na
1442 \fBzfs_deadman_synctime_ms\fR (ulong)
1443 .ad
1444 .RS 12n
1445 Interval in milliseconds after which the deadman is triggered and also
1446 the interval after which a pool sync operation is considered to be "hung".
1447 Once this limit is exceeded the deadman will be invoked every
1448 \fBzfs_deadman_checktime_ms\fR milliseconds until the pool sync completes.
1449 .sp
1450 Default value: \fB600,000\fR.
1451 .RE
1452
1453 .sp
1454 .ne 2
1455 .na
1456 \fBzfs_deadman_ziotime_ms\fR (ulong)
1457 .ad
1458 .RS 12n
1459 Interval in milliseconds after which the deadman is triggered and an
1460 individual I/O operation is considered to be "hung".  As long as the I/O
1461 remains "hung" the deadman will be invoked every \fBzfs_deadman_checktime_ms\fR
1462 milliseconds until the I/O completes.
1463 .sp
1464 Default value: \fB300,000\fR.
1465 .RE
1466
1467 .sp
1468 .ne 2
1469 .na
1470 \fBzfs_dedup_prefetch\fR (int)
1471 .ad
1472 .RS 12n
1473 Enable prefetching dedup-ed blks
1474 .sp
1475 Use \fB1\fR for yes and \fB0\fR to disable (default).
1476 .RE
1477
1478 .sp
1479 .ne 2
1480 .na
1481 \fBzfs_delay_min_dirty_percent\fR (int)
1482 .ad
1483 .RS 12n
1484 Start to delay each transaction once there is this amount of dirty data,
1485 expressed as a percentage of \fBzfs_dirty_data_max\fR.
1486 This value should be >= zfs_vdev_async_write_active_max_dirty_percent.
1487 See the section "ZFS TRANSACTION DELAY".
1488 .sp
1489 Default value: \fB60\fR%.
1490 .RE
1491
1492 .sp
1493 .ne 2
1494 .na
1495 \fBzfs_delay_scale\fR (int)
1496 .ad
1497 .RS 12n
1498 This controls how quickly the transaction delay approaches infinity.
1499 Larger values cause longer delays for a given amount of dirty data.
1500 .sp
1501 For the smoothest delay, this value should be about 1 billion divided
1502 by the maximum number of operations per second.  This will smoothly
1503 handle between 10x and 1/10th this number.
1504 .sp
1505 See the section "ZFS TRANSACTION DELAY".
1506 .sp
1507 Note: \fBzfs_delay_scale\fR * \fBzfs_dirty_data_max\fR must be < 2^64.
1508 .sp
1509 Default value: \fB500,000\fR.
1510 .RE
1511
1512 .sp
1513 .ne 2
1514 .na
1515 \fBzfs_disable_ivset_guid_check\fR (int)
1516 .ad
1517 .RS 12n
1518 Disables requirement for IVset guids to be present and match when doing a raw
1519 receive of encrypted datasets. Intended for users whose pools were created with
1520 ZFS on Linux pre-release versions and now have compatibility issues.
1521 .sp
1522 Default value: \fB0\fR.
1523 .RE
1524
1525 .sp
1526 .ne 2
1527 .na
1528 \fBzfs_key_max_salt_uses\fR (ulong)
1529 .ad
1530 .RS 12n
1531 Maximum number of uses of a single salt value before generating a new one for
1532 encrypted datasets. The default value is also the maximum that will be
1533 accepted.
1534 .sp
1535 Default value: \fB400,000,000\fR.
1536 .RE
1537
1538 .sp
1539 .ne 2
1540 .na
1541 \fBzfs_object_mutex_size\fR (uint)
1542 .ad
1543 .RS 12n
1544 Size of the znode hashtable used for holds.
1545
1546 Due to the need to hold locks on objects that may not exist yet, kernel mutexes
1547 are not created per-object and instead a hashtable is used where collisions
1548 will result in objects waiting when there is not actually contention on the
1549 same object.
1550 .sp
1551 Default value: \fB64\fR.
1552 .RE
1553
1554 .sp
1555 .ne 2
1556 .na
1557 \fBzfs_slow_io_events_per_second\fR (int)
1558 .ad
1559 .RS 12n
1560 Rate limit delay zevents (which report slow I/Os) to this many per second.
1561 .sp
1562 Default value: 20
1563 .RE
1564
1565 .sp
1566 .ne 2
1567 .na
1568 \fBzfs_unflushed_max_mem_amt\fR (ulong)
1569 .ad
1570 .RS 12n
1571 Upper-bound limit for unflushed metadata changes to be held by the
1572 log spacemap in memory (in bytes).
1573 .sp
1574 Default value: \fB1,073,741,824\fR (1GB).
1575 .RE
1576
1577 .sp
1578 .ne 2
1579 .na
1580 \fBzfs_unflushed_max_mem_ppm\fR (ulong)
1581 .ad
1582 .RS 12n
1583 Percentage of the overall system memory that ZFS allows to be used
1584 for unflushed metadata changes by the log spacemap.
1585 (value is calculated over 1000000 for finer granularity).
1586 .sp
1587 Default value: \fB1000\fR (which is divided by 1000000, resulting in
1588 the limit to be \fB0.1\fR% of memory)
1589 .RE
1590
1591 .sp
1592 .ne 2
1593 .na
1594 \fBzfs_unflushed_log_block_max\fR (ulong)
1595 .ad
1596 .RS 12n
1597 Describes the maximum number of log spacemap blocks allowed for each pool.
1598 The default value of 262144 means that the space in all the log spacemaps
1599 can add up to no more than 262144 blocks (which means 32GB of logical
1600 space before compression and ditto blocks, assuming that blocksize is
1601 128k).
1602 .sp
1603 This tunable is important because it involves a trade-off between import
1604 time after an unclean export and the frequency of flushing metaslabs.
1605 The higher this number is, the more log blocks we allow when the pool is
1606 active which means that we flush metaslabs less often and thus decrease
1607 the number of I/Os for spacemap updates per TXG.
1608 At the same time though, that means that in the event of an unclean export,
1609 there will be more log spacemap blocks for us to read, inducing overhead
1610 in the import time of the pool.
1611 The lower the number, the amount of flushing increases destroying log
1612 blocks quicker as they become obsolete faster, which leaves less blocks
1613 to be read during import time after a crash.
1614 .sp
1615 Each log spacemap block existing during pool import leads to approximately
1616 one extra logical I/O issued.
1617 This is the reason why this tunable is exposed in terms of blocks rather
1618 than space used.
1619 .sp
1620 Default value: \fB262144\fR (256K).
1621 .RE
1622
1623 .sp
1624 .ne 2
1625 .na
1626 \fBzfs_unflushed_log_block_min\fR (ulong)
1627 .ad
1628 .RS 12n
1629 If the number of metaslabs is small and our incoming rate is high, we
1630 could get into a situation that we are flushing all our metaslabs every
1631 TXG.
1632 Thus we always allow at least this many log blocks.
1633 .sp
1634 Default value: \fB1000\fR.
1635 .RE
1636
1637 .sp
1638 .ne 2
1639 .na
1640 \fBzfs_unflushed_log_block_pct\fR (ulong)
1641 .ad
1642 .RS 12n
1643 Tunable used to determine the number of blocks that can be used for
1644 the spacemap log, expressed as a percentage of the total number of
1645 metaslabs in the pool.
1646 .sp
1647 Default value: \fB400\fR (read as \fB400\fR% - meaning that the number
1648 of log spacemap blocks are capped at 4 times the number of
1649 metaslabs in the pool).
1650 .RE
1651
1652 .sp
1653 .ne 2
1654 .na
1655 \fBzfs_unlink_suspend_progress\fR (uint)
1656 .ad
1657 .RS 12n
1658 When enabled, files will not be asynchronously removed from the list of pending
1659 unlinks and the space they consume will be leaked. Once this option has been
1660 disabled and the dataset is remounted, the pending unlinks will be processed
1661 and the freed space returned to the pool.
1662 This option is used by the test suite to facilitate testing.
1663 .sp
1664 Uses \fB0\fR (default) to allow progress and \fB1\fR to pause progress.
1665 .RE
1666
1667 .sp
1668 .ne 2
1669 .na
1670 \fBzfs_delete_blocks\fR (ulong)
1671 .ad
1672 .RS 12n
1673 This is the used to define a large file for the purposes of delete.  Files
1674 containing more than \fBzfs_delete_blocks\fR will be deleted asynchronously
1675 while smaller files are deleted synchronously.  Decreasing this value will
1676 reduce the time spent in an unlink(2) system call at the expense of a longer
1677 delay before the freed space is available.
1678 .sp
1679 Default value: \fB20,480\fR.
1680 .RE
1681
1682 .sp
1683 .ne 2
1684 .na
1685 \fBzfs_dirty_data_max\fR (int)
1686 .ad
1687 .RS 12n
1688 Determines the dirty space limit in bytes.  Once this limit is exceeded, new
1689 writes are halted until space frees up. This parameter takes precedence
1690 over \fBzfs_dirty_data_max_percent\fR.
1691 See the section "ZFS TRANSACTION DELAY".
1692 .sp
1693 Default value: \fB10\fR% of physical RAM, capped at \fBzfs_dirty_data_max_max\fR.
1694 .RE
1695
1696 .sp
1697 .ne 2
1698 .na
1699 \fBzfs_dirty_data_max_max\fR (int)
1700 .ad
1701 .RS 12n
1702 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed in bytes.
1703 This limit is only enforced at module load time, and will be ignored if
1704 \fBzfs_dirty_data_max\fR is later changed.  This parameter takes
1705 precedence over \fBzfs_dirty_data_max_max_percent\fR. See the section
1706 "ZFS TRANSACTION DELAY".
1707 .sp
1708 Default value: \fB25\fR% of physical RAM.
1709 .RE
1710
1711 .sp
1712 .ne 2
1713 .na
1714 \fBzfs_dirty_data_max_max_percent\fR (int)
1715 .ad
1716 .RS 12n
1717 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed as a
1718 percentage of physical RAM.  This limit is only enforced at module load
1719 time, and will be ignored if \fBzfs_dirty_data_max\fR is later changed.
1720 The parameter \fBzfs_dirty_data_max_max\fR takes precedence over this
1721 one. See the section "ZFS TRANSACTION DELAY".
1722 .sp
1723 Default value: \fB25\fR%.
1724 .RE
1725
1726 .sp
1727 .ne 2
1728 .na
1729 \fBzfs_dirty_data_max_percent\fR (int)
1730 .ad
1731 .RS 12n
1732 Determines the dirty space limit, expressed as a percentage of all
1733 memory.  Once this limit is exceeded, new writes are halted until space frees
1734 up.  The parameter \fBzfs_dirty_data_max\fR takes precedence over this
1735 one.  See the section "ZFS TRANSACTION DELAY".
1736 .sp
1737 Default value: \fB10\fR%, subject to \fBzfs_dirty_data_max_max\fR.
1738 .RE
1739
1740 .sp
1741 .ne 2
1742 .na
1743 \fBzfs_dirty_data_sync_percent\fR (int)
1744 .ad
1745 .RS 12n
1746 Start syncing out a transaction group if there's at least this much dirty data
1747 as a percentage of \fBzfs_dirty_data_max\fR.  This should be less than
1748 \fBzfs_vdev_async_write_active_min_dirty_percent\fR.
1749 .sp
1750 Default value: \fB20\fR% of \fBzfs_dirty_data_max\fR.
1751 .RE
1752
1753 .sp
1754 .ne 2
1755 .na
1756 \fBzfs_fallocate_reserve_percent\fR (uint)
1757 .ad
1758 .RS 12n
1759 Since ZFS is a copy-on-write filesystem with snapshots, blocks cannot be
1760 preallocated for a file in order to guarantee that later writes will not
1761 run out of space.  Instead, fallocate() space preallocation only checks
1762 that sufficient space is currently available in the pool or the user's
1763 project quota allocation, and then creates a sparse file of the requested
1764 size. The requested space is multiplied by \fBzfs_fallocate_reserve_percent\fR
1765 to allow additional space for indirect blocks and other internal metadata.
1766 Setting this value to 0 disables support for fallocate(2) and returns
1767 EOPNOTSUPP for fallocate() space preallocation again.
1768 .sp
1769 Default value: \fB110\fR%
1770 .RE
1771
1772 .sp
1773 .ne 2
1774 .na
1775 \fBzfs_fletcher_4_impl\fR (string)
1776 .ad
1777 .RS 12n
1778 Select a fletcher 4 implementation.
1779 .sp
1780 Supported selectors are: \fBfastest\fR, \fBscalar\fR, \fBsse2\fR, \fBssse3\fR,
1781 \fBavx2\fR, \fBavx512f\fR, \fBavx512bw\fR, and \fBaarch64_neon\fR.
1782 All of the selectors except \fBfastest\fR and \fBscalar\fR require instruction
1783 set extensions to be available and will only appear if ZFS detects that they are
1784 present at runtime. If multiple implementations of fletcher 4 are available,
1785 the \fBfastest\fR will be chosen using a micro benchmark. Selecting \fBscalar\fR
1786 results in the original, CPU based calculation, being used. Selecting any option
1787 other than \fBfastest\fR and \fBscalar\fR results in vector instructions from
1788 the respective CPU instruction set being used.
1789 .sp
1790 Default value: \fBfastest\fR.
1791 .RE
1792
1793 .sp
1794 .ne 2
1795 .na
1796 \fBzfs_free_bpobj_enabled\fR (int)
1797 .ad
1798 .RS 12n
1799 Enable/disable the processing of the free_bpobj object.
1800 .sp
1801 Default value: \fB1\fR.
1802 .RE
1803
1804 .sp
1805 .ne 2
1806 .na
1807 \fBzfs_async_block_max_blocks\fR (ulong)
1808 .ad
1809 .RS 12n
1810 Maximum number of blocks freed in a single txg.
1811 .sp
1812 Default value: \fBULONG_MAX\fR (unlimited).
1813 .RE
1814
1815 .sp
1816 .ne 2
1817 .na
1818 \fBzfs_max_async_dedup_frees\fR (ulong)
1819 .ad
1820 .RS 12n
1821 Maximum number of dedup blocks freed in a single txg.
1822 .sp
1823 Default value: \fB100,000\fR.
1824 .RE
1825
1826 .sp
1827 .ne 2
1828 .na
1829 \fBzfs_override_estimate_recordsize\fR (ulong)
1830 .ad
1831 .RS 12n
1832 Record size calculation override for zfs send estimates.
1833 .sp
1834 Default value: \fB0\fR.
1835 .RE
1836
1837 .sp
1838 .ne 2
1839 .na
1840 \fBzfs_vdev_async_read_max_active\fR (int)
1841 .ad
1842 .RS 12n
1843 Maximum asynchronous read I/Os active to each device.
1844 See the section "ZFS I/O SCHEDULER".
1845 .sp
1846 Default value: \fB3\fR.
1847 .RE
1848
1849 .sp
1850 .ne 2
1851 .na
1852 \fBzfs_vdev_async_read_min_active\fR (int)
1853 .ad
1854 .RS 12n
1855 Minimum asynchronous read I/Os active to each device.
1856 See the section "ZFS I/O SCHEDULER".
1857 .sp
1858 Default value: \fB1\fR.
1859 .RE
1860
1861 .sp
1862 .ne 2
1863 .na
1864 \fBzfs_vdev_async_write_active_max_dirty_percent\fR (int)
1865 .ad
1866 .RS 12n
1867 When the pool has more than
1868 \fBzfs_vdev_async_write_active_max_dirty_percent\fR dirty data, use
1869 \fBzfs_vdev_async_write_max_active\fR to limit active async writes.  If
1870 the dirty data is between min and max, the active I/O limit is linearly
1871 interpolated. See the section "ZFS I/O SCHEDULER".
1872 .sp
1873 Default value: \fB60\fR%.
1874 .RE
1875
1876 .sp
1877 .ne 2
1878 .na
1879 \fBzfs_vdev_async_write_active_min_dirty_percent\fR (int)
1880 .ad
1881 .RS 12n
1882 When the pool has less than
1883 \fBzfs_vdev_async_write_active_min_dirty_percent\fR dirty data, use
1884 \fBzfs_vdev_async_write_min_active\fR to limit active async writes.  If
1885 the dirty data is between min and max, the active I/O limit is linearly
1886 interpolated. See the section "ZFS I/O SCHEDULER".
1887 .sp
1888 Default value: \fB30\fR%.
1889 .RE
1890
1891 .sp
1892 .ne 2
1893 .na
1894 \fBzfs_vdev_async_write_max_active\fR (int)
1895 .ad
1896 .RS 12n
1897 Maximum asynchronous write I/Os active to each device.
1898 See the section "ZFS I/O SCHEDULER".
1899 .sp
1900 Default value: \fB10\fR.
1901 .RE
1902
1903 .sp
1904 .ne 2
1905 .na
1906 \fBzfs_vdev_async_write_min_active\fR (int)
1907 .ad
1908 .RS 12n
1909 Minimum asynchronous write I/Os active to each device.
1910 See the section "ZFS I/O SCHEDULER".
1911 .sp
1912 Lower values are associated with better latency on rotational media but poorer
1913 resilver performance. The default value of 2 was chosen as a compromise. A
1914 value of 3 has been shown to improve resilver performance further at a cost of
1915 further increasing latency.
1916 .sp
1917 Default value: \fB2\fR.
1918 .RE
1919
1920 .sp
1921 .ne 2
1922 .na
1923 \fBzfs_vdev_initializing_max_active\fR (int)
1924 .ad
1925 .RS 12n
1926 Maximum initializing I/Os active to each device.
1927 See the section "ZFS I/O SCHEDULER".
1928 .sp
1929 Default value: \fB1\fR.
1930 .RE
1931
1932 .sp
1933 .ne 2
1934 .na
1935 \fBzfs_vdev_initializing_min_active\fR (int)
1936 .ad
1937 .RS 12n
1938 Minimum initializing I/Os active to each device.
1939 See the section "ZFS I/O SCHEDULER".
1940 .sp
1941 Default value: \fB1\fR.
1942 .RE
1943
1944 .sp
1945 .ne 2
1946 .na
1947 \fBzfs_vdev_max_active\fR (int)
1948 .ad
1949 .RS 12n
1950 The maximum number of I/Os active to each device.  Ideally, this will be >=
1951 the sum of each queue's max_active.  It must be at least the sum of each
1952 queue's min_active.  See the section "ZFS I/O SCHEDULER".
1953 .sp
1954 Default value: \fB1,000\fR.
1955 .RE
1956
1957 .sp
1958 .ne 2
1959 .na
1960 \fBzfs_vdev_rebuild_max_active\fR (int)
1961 .ad
1962 .RS 12n
1963 Maximum sequential resilver I/Os active to each device.
1964 See the section "ZFS I/O SCHEDULER".
1965 .sp
1966 Default value: \fB3\fR.
1967 .RE
1968
1969 .sp
1970 .ne 2
1971 .na
1972 \fBzfs_vdev_rebuild_min_active\fR (int)
1973 .ad
1974 .RS 12n
1975 Minimum sequential resilver I/Os active to each device.
1976 See the section "ZFS I/O SCHEDULER".
1977 .sp
1978 Default value: \fB1\fR.
1979 .RE
1980
1981 .sp
1982 .ne 2
1983 .na
1984 \fBzfs_vdev_removal_max_active\fR (int)
1985 .ad
1986 .RS 12n
1987 Maximum removal I/Os active to each device.
1988 See the section "ZFS I/O SCHEDULER".
1989 .sp
1990 Default value: \fB2\fR.
1991 .RE
1992
1993 .sp
1994 .ne 2
1995 .na
1996 \fBzfs_vdev_removal_min_active\fR (int)
1997 .ad
1998 .RS 12n
1999 Minimum removal I/Os active to each device.
2000 See the section "ZFS I/O SCHEDULER".
2001 .sp
2002 Default value: \fB1\fR.
2003 .RE
2004
2005 .sp
2006 .ne 2
2007 .na
2008 \fBzfs_vdev_scrub_max_active\fR (int)
2009 .ad
2010 .RS 12n
2011 Maximum scrub I/Os active to each device.
2012 See the section "ZFS I/O SCHEDULER".
2013 .sp
2014 Default value: \fB2\fR.
2015 .RE
2016
2017 .sp
2018 .ne 2
2019 .na
2020 \fBzfs_vdev_scrub_min_active\fR (int)
2021 .ad
2022 .RS 12n
2023 Minimum scrub I/Os active to each device.
2024 See the section "ZFS I/O SCHEDULER".
2025 .sp
2026 Default value: \fB1\fR.
2027 .RE
2028
2029 .sp
2030 .ne 2
2031 .na
2032 \fBzfs_vdev_sync_read_max_active\fR (int)
2033 .ad
2034 .RS 12n
2035 Maximum synchronous read I/Os active to each device.
2036 See the section "ZFS I/O SCHEDULER".
2037 .sp
2038 Default value: \fB10\fR.
2039 .RE
2040
2041 .sp
2042 .ne 2
2043 .na
2044 \fBzfs_vdev_sync_read_min_active\fR (int)
2045 .ad
2046 .RS 12n
2047 Minimum synchronous read I/Os active to each device.
2048 See the section "ZFS I/O SCHEDULER".
2049 .sp
2050 Default value: \fB10\fR.
2051 .RE
2052
2053 .sp
2054 .ne 2
2055 .na
2056 \fBzfs_vdev_sync_write_max_active\fR (int)
2057 .ad
2058 .RS 12n
2059 Maximum synchronous write I/Os active to each device.
2060 See the section "ZFS I/O SCHEDULER".
2061 .sp
2062 Default value: \fB10\fR.
2063 .RE
2064
2065 .sp
2066 .ne 2
2067 .na
2068 \fBzfs_vdev_sync_write_min_active\fR (int)
2069 .ad
2070 .RS 12n
2071 Minimum synchronous write I/Os active to each device.
2072 See the section "ZFS I/O SCHEDULER".
2073 .sp
2074 Default value: \fB10\fR.
2075 .RE
2076
2077 .sp
2078 .ne 2
2079 .na
2080 \fBzfs_vdev_trim_max_active\fR (int)
2081 .ad
2082 .RS 12n
2083 Maximum trim/discard I/Os active to each device.
2084 See the section "ZFS I/O SCHEDULER".
2085 .sp
2086 Default value: \fB2\fR.
2087 .RE
2088
2089 .sp
2090 .ne 2
2091 .na
2092 \fBzfs_vdev_trim_min_active\fR (int)
2093 .ad
2094 .RS 12n
2095 Minimum trim/discard I/Os active to each device.
2096 See the section "ZFS I/O SCHEDULER".
2097 .sp
2098 Default value: \fB1\fR.
2099 .RE
2100
2101 .sp
2102 .ne 2
2103 .na
2104 \fBzfs_vdev_queue_depth_pct\fR (int)
2105 .ad
2106 .RS 12n
2107 Maximum number of queued allocations per top-level vdev expressed as
2108 a percentage of \fBzfs_vdev_async_write_max_active\fR which allows the
2109 system to detect devices that are more capable of handling allocations
2110 and to allocate more blocks to those devices.  It allows for dynamic
2111 allocation distribution when devices are imbalanced as fuller devices
2112 will tend to be slower than empty devices.
2113
2114 See also \fBzio_dva_throttle_enabled\fR.
2115 .sp
2116 Default value: \fB1000\fR%.
2117 .RE
2118
2119 .sp
2120 .ne 2
2121 .na
2122 \fBzfs_expire_snapshot\fR (int)
2123 .ad
2124 .RS 12n
2125 Seconds to expire .zfs/snapshot
2126 .sp
2127 Default value: \fB300\fR.
2128 .RE
2129
2130 .sp
2131 .ne 2
2132 .na
2133 \fBzfs_admin_snapshot\fR (int)
2134 .ad
2135 .RS 12n
2136 Allow the creation, removal, or renaming of entries in the .zfs/snapshot
2137 directory to cause the creation, destruction, or renaming of snapshots.
2138 When enabled this functionality works both locally and over NFS exports
2139 which have the 'no_root_squash' option set. This functionality is disabled
2140 by default.
2141 .sp
2142 Use \fB1\fR for yes and \fB0\fR for no (default).
2143 .RE
2144
2145 .sp
2146 .ne 2
2147 .na
2148 \fBzfs_flags\fR (int)
2149 .ad
2150 .RS 12n
2151 Set additional debugging flags. The following flags may be bitwise-or'd
2152 together.
2153 .sp
2154 .TS
2155 box;
2156 rB lB
2157 lB lB
2158 r l.
2159 Value   Symbolic Name
2160         Description
2161 _
2162 1       ZFS_DEBUG_DPRINTF
2163         Enable dprintf entries in the debug log.
2164 _
2165 2       ZFS_DEBUG_DBUF_VERIFY *
2166         Enable extra dbuf verifications.
2167 _
2168 4       ZFS_DEBUG_DNODE_VERIFY *
2169         Enable extra dnode verifications.
2170 _
2171 8       ZFS_DEBUG_SNAPNAMES
2172         Enable snapshot name verification.
2173 _
2174 16      ZFS_DEBUG_MODIFY
2175         Check for illegally modified ARC buffers.
2176 _
2177 64      ZFS_DEBUG_ZIO_FREE
2178         Enable verification of block frees.
2179 _
2180 128     ZFS_DEBUG_HISTOGRAM_VERIFY
2181         Enable extra spacemap histogram verifications.
2182 _
2183 256     ZFS_DEBUG_METASLAB_VERIFY
2184         Verify space accounting on disk matches in-core range_trees.
2185 _
2186 512     ZFS_DEBUG_SET_ERROR
2187         Enable SET_ERROR and dprintf entries in the debug log.
2188 _
2189 1024    ZFS_DEBUG_INDIRECT_REMAP
2190         Verify split blocks created by device removal.
2191 _
2192 2048    ZFS_DEBUG_TRIM
2193         Verify TRIM ranges are always within the allocatable range tree.
2194 _
2195 4096    ZFS_DEBUG_LOG_SPACEMAP
2196         Verify that the log summary is consistent with the spacemap log
2197         and enable zfs_dbgmsgs for metaslab loading and flushing.
2198 .TE
2199 .sp
2200 * Requires debug build.
2201 .sp
2202 Default value: \fB0\fR.
2203 .RE
2204
2205 .sp
2206 .ne 2
2207 .na
2208 \fBzfs_free_leak_on_eio\fR (int)
2209 .ad
2210 .RS 12n
2211 If destroy encounters an EIO while reading metadata (e.g. indirect
2212 blocks), space referenced by the missing metadata can not be freed.
2213 Normally this causes the background destroy to become "stalled", as
2214 it is unable to make forward progress.  While in this stalled state,
2215 all remaining space to free from the error-encountering filesystem is
2216 "temporarily leaked".  Set this flag to cause it to ignore the EIO,
2217 permanently leak the space from indirect blocks that can not be read,
2218 and continue to free everything else that it can.
2219
2220 The default, "stalling" behavior is useful if the storage partially
2221 fails (i.e. some but not all i/os fail), and then later recovers.  In
2222 this case, we will be able to continue pool operations while it is
2223 partially failed, and when it recovers, we can continue to free the
2224 space, with no leaks.  However, note that this case is actually
2225 fairly rare.
2226
2227 Typically pools either (a) fail completely (but perhaps temporarily,
2228 e.g. a top-level vdev going offline), or (b) have localized,
2229 permanent errors (e.g. disk returns the wrong data due to bit flip or
2230 firmware bug).  In case (a), this setting does not matter because the
2231 pool will be suspended and the sync thread will not be able to make
2232 forward progress regardless.  In case (b), because the error is
2233 permanent, the best we can do is leak the minimum amount of space,
2234 which is what setting this flag will do.  Therefore, it is reasonable
2235 for this flag to normally be set, but we chose the more conservative
2236 approach of not setting it, so that there is no possibility of
2237 leaking space in the "partial temporary" failure case.
2238 .sp
2239 Default value: \fB0\fR.
2240 .RE
2241
2242 .sp
2243 .ne 2
2244 .na
2245 \fBzfs_free_min_time_ms\fR (int)
2246 .ad
2247 .RS 12n
2248 During a \fBzfs destroy\fR operation using \fBfeature@async_destroy\fR a minimum
2249 of this much time will be spent working on freeing blocks per txg.
2250 .sp
2251 Default value: \fB1,000\fR.
2252 .RE
2253
2254 .sp
2255 .ne 2
2256 .na
2257 \fBzfs_obsolete_min_time_ms\fR (int)
2258 .ad
2259 .RS 12n
2260 Similar to \fBzfs_free_min_time_ms\fR but for cleanup of old indirection records
2261 for removed vdevs.
2262 .sp
2263 Default value: \fB500\fR.
2264 .RE
2265
2266 .sp
2267 .ne 2
2268 .na
2269 \fBzfs_immediate_write_sz\fR (long)
2270 .ad
2271 .RS 12n
2272 Largest data block to write to zil. Larger blocks will be treated as if the
2273 dataset being written to had the property setting \fBlogbias=throughput\fR.
2274 .sp
2275 Default value: \fB32,768\fR.
2276 .RE
2277
2278 .sp
2279 .ne 2
2280 .na
2281 \fBzfs_initialize_value\fR (ulong)
2282 .ad
2283 .RS 12n
2284 Pattern written to vdev free space by \fBzpool initialize\fR.
2285 .sp
2286 Default value: \fB16,045,690,984,833,335,022\fR (0xdeadbeefdeadbeee).
2287 .RE
2288
2289 .sp
2290 .ne 2
2291 .na
2292 \fBzfs_initialize_chunk_size\fR (ulong)
2293 .ad
2294 .RS 12n
2295 Size of writes used by \fBzpool initialize\fR.
2296 This option is used by the test suite to facilitate testing.
2297 .sp
2298 Default value: \fB1,048,576\fR
2299 .RE
2300
2301 .sp
2302 .ne 2
2303 .na
2304 \fBzfs_livelist_max_entries\fR (ulong)
2305 .ad
2306 .RS 12n
2307 The threshold size (in block pointers) at which we create a new sub-livelist.
2308 Larger sublists are more costly from a memory perspective but the fewer
2309 sublists there are, the lower the cost of insertion.
2310 .sp
2311 Default value: \fB500,000\fR.
2312 .RE
2313
2314 .sp
2315 .ne 2
2316 .na
2317 \fBzfs_livelist_min_percent_shared\fR (int)
2318 .ad
2319 .RS 12n
2320 If the amount of shared space between a snapshot and its clone drops below
2321 this threshold, the clone turns off the livelist and reverts to the old deletion
2322 method. This is in place because once a clone has been overwritten enough
2323 livelists no long give us a benefit.
2324 .sp
2325 Default value: \fB75\fR.
2326 .RE
2327
2328 .sp
2329 .ne 2
2330 .na
2331 \fBzfs_livelist_condense_new_alloc\fR (int)
2332 .ad
2333 .RS 12n
2334 Incremented each time an extra ALLOC blkptr is added to a livelist entry while
2335 it is being condensed.
2336 This option is used by the test suite to track race conditions.
2337 .sp
2338 Default value: \fB0\fR.
2339 .RE
2340
2341 .sp
2342 .ne 2
2343 .na
2344 \fBzfs_livelist_condense_sync_cancel\fR (int)
2345 .ad
2346 .RS 12n
2347 Incremented each time livelist condensing is canceled while in
2348 spa_livelist_condense_sync.
2349 This option is used by the test suite to track race conditions.
2350 .sp
2351 Default value: \fB0\fR.
2352 .RE
2353
2354 .sp
2355 .ne 2
2356 .na
2357 \fBzfs_livelist_condense_sync_pause\fR (int)
2358 .ad
2359 .RS 12n
2360 When set, the livelist condense process pauses indefinitely before
2361 executing the synctask - spa_livelist_condense_sync.
2362 This option is used by the test suite to trigger race conditions.
2363 .sp
2364 Default value: \fB0\fR.
2365 .RE
2366
2367 .sp
2368 .ne 2
2369 .na
2370 \fBzfs_livelist_condense_zthr_cancel\fR (int)
2371 .ad
2372 .RS 12n
2373 Incremented each time livelist condensing is canceled while in
2374 spa_livelist_condense_cb.
2375 This option is used by the test suite to track race conditions.
2376 .sp
2377 Default value: \fB0\fR.
2378 .RE
2379
2380 .sp
2381 .ne 2
2382 .na
2383 \fBzfs_livelist_condense_zthr_pause\fR (int)
2384 .ad
2385 .RS 12n
2386 When set, the livelist condense process pauses indefinitely before
2387 executing the open context condensing work in spa_livelist_condense_cb.
2388 This option is used by the test suite to trigger race conditions.
2389 .sp
2390 Default value: \fB0\fR.
2391 .RE
2392
2393 .sp
2394 .ne 2
2395 .na
2396 \fBzfs_lua_max_instrlimit\fR (ulong)
2397 .ad
2398 .RS 12n
2399 The maximum execution time limit that can be set for a ZFS channel program,
2400 specified as a number of Lua instructions.
2401 .sp
2402 Default value: \fB100,000,000\fR.
2403 .RE
2404
2405 .sp
2406 .ne 2
2407 .na
2408 \fBzfs_lua_max_memlimit\fR (ulong)
2409 .ad
2410 .RS 12n
2411 The maximum memory limit that can be set for a ZFS channel program, specified
2412 in bytes.
2413 .sp
2414 Default value: \fB104,857,600\fR.
2415 .RE
2416
2417 .sp
2418 .ne 2
2419 .na
2420 \fBzfs_max_dataset_nesting\fR (int)
2421 .ad
2422 .RS 12n
2423 The maximum depth of nested datasets.  This value can be tuned temporarily to
2424 fix existing datasets that exceed the predefined limit.
2425 .sp
2426 Default value: \fB50\fR.
2427 .RE
2428
2429 .sp
2430 .ne 2
2431 .na
2432 \fBzfs_max_log_walking\fR (ulong)
2433 .ad
2434 .RS 12n
2435 The number of past TXGs that the flushing algorithm of the log spacemap
2436 feature uses to estimate incoming log blocks.
2437 .sp
2438 Default value: \fB5\fR.
2439 .RE
2440
2441 .sp
2442 .ne 2
2443 .na
2444 \fBzfs_max_logsm_summary_length\fR (ulong)
2445 .ad
2446 .RS 12n
2447 Maximum number of rows allowed in the summary of the spacemap log.
2448 .sp
2449 Default value: \fB10\fR.
2450 .RE
2451
2452 .sp
2453 .ne 2
2454 .na
2455 \fBzfs_max_recordsize\fR (int)
2456 .ad
2457 .RS 12n
2458 We currently support block sizes from 512 bytes to 16MB.  The benefits of
2459 larger blocks, and thus larger I/O, need to be weighed against the cost of
2460 COWing a giant block to modify one byte.  Additionally, very large blocks
2461 can have an impact on i/o latency, and also potentially on the memory
2462 allocator.  Therefore, we do not allow the recordsize to be set larger than
2463 zfs_max_recordsize (default 1MB).  Larger blocks can be created by changing
2464 this tunable, and pools with larger blocks can always be imported and used,
2465 regardless of this setting.
2466 .sp
2467 Default value: \fB1,048,576\fR.
2468 .RE
2469
2470 .sp
2471 .ne 2
2472 .na
2473 \fBzfs_allow_redacted_dataset_mount\fR (int)
2474 .ad
2475 .RS 12n
2476 Allow datasets received with redacted send/receive to be mounted. Normally
2477 disabled because these datasets may be missing key data.
2478 .sp
2479 Default value: \fB0\fR.
2480 .RE
2481
2482 .sp
2483 .ne 2
2484 .na
2485 \fBzfs_min_metaslabs_to_flush\fR (ulong)
2486 .ad
2487 .RS 12n
2488 Minimum number of metaslabs to flush per dirty TXG
2489 .sp
2490 Default value: \fB1\fR.
2491 .RE
2492
2493 .sp
2494 .ne 2
2495 .na
2496 \fBzfs_metaslab_fragmentation_threshold\fR (int)
2497 .ad
2498 .RS 12n
2499 Allow metaslabs to keep their active state as long as their fragmentation
2500 percentage is less than or equal to this value. An active metaslab that
2501 exceeds this threshold will no longer keep its active status allowing
2502 better metaslabs to be selected.
2503 .sp
2504 Default value: \fB70\fR.
2505 .RE
2506
2507 .sp
2508 .ne 2
2509 .na
2510 \fBzfs_mg_fragmentation_threshold\fR (int)
2511 .ad
2512 .RS 12n
2513 Metaslab groups are considered eligible for allocations if their
2514 fragmentation metric (measured as a percentage) is less than or equal to
2515 this value. If a metaslab group exceeds this threshold then it will be
2516 skipped unless all metaslab groups within the metaslab class have also
2517 crossed this threshold.
2518 .sp
2519 Default value: \fB95\fR.
2520 .RE
2521
2522 .sp
2523 .ne 2
2524 .na
2525 \fBzfs_mg_noalloc_threshold\fR (int)
2526 .ad
2527 .RS 12n
2528 Defines a threshold at which metaslab groups should be eligible for
2529 allocations.  The value is expressed as a percentage of free space
2530 beyond which a metaslab group is always eligible for allocations.
2531 If a metaslab group's free space is less than or equal to the
2532 threshold, the allocator will avoid allocating to that group
2533 unless all groups in the pool have reached the threshold.  Once all
2534 groups have reached the threshold, all groups are allowed to accept
2535 allocations.  The default value of 0 disables the feature and causes
2536 all metaslab groups to be eligible for allocations.
2537
2538 This parameter allows one to deal with pools having heavily imbalanced
2539 vdevs such as would be the case when a new vdev has been added.
2540 Setting the threshold to a non-zero percentage will stop allocations
2541 from being made to vdevs that aren't filled to the specified percentage
2542 and allow lesser filled vdevs to acquire more allocations than they
2543 otherwise would under the old \fBzfs_mg_alloc_failures\fR facility.
2544 .sp
2545 Default value: \fB0\fR.
2546 .RE
2547
2548 .sp
2549 .ne 2
2550 .na
2551 \fBzfs_ddt_data_is_special\fR (int)
2552 .ad
2553 .RS 12n
2554 If enabled, ZFS will place DDT data into the special allocation class.
2555 .sp
2556 Default value: \fB1\fR.
2557 .RE
2558
2559 .sp
2560 .ne 2
2561 .na
2562 \fBzfs_user_indirect_is_special\fR (int)
2563 .ad
2564 .RS 12n
2565 If enabled, ZFS will place user data (both file and zvol) indirect blocks
2566 into the special allocation class.
2567 .sp
2568 Default value: \fB1\fR.
2569 .RE
2570
2571 .sp
2572 .ne 2
2573 .na
2574 \fBzfs_multihost_history\fR (int)
2575 .ad
2576 .RS 12n
2577 Historical statistics for the last N multihost updates will be available in
2578 \fB/proc/spl/kstat/zfs/<pool>/multihost\fR
2579 .sp
2580 Default value: \fB0\fR.
2581 .RE
2582
2583 .sp
2584 .ne 2
2585 .na
2586 \fBzfs_multihost_interval\fR (ulong)
2587 .ad
2588 .RS 12n
2589 Used to control the frequency of multihost writes which are performed when the
2590 \fBmultihost\fR pool property is on.  This is one factor used to determine the
2591 length of the activity check during import.
2592 .sp
2593 The multihost write period is \fBzfs_multihost_interval / leaf-vdevs\fR
2594 milliseconds.  On average a multihost write will be issued for each leaf vdev
2595 every \fBzfs_multihost_interval\fR milliseconds.  In practice, the observed
2596 period can vary with the I/O load and this observed value is the delay which is
2597 stored in the uberblock.
2598 .sp
2599 Default value: \fB1000\fR.
2600 .RE
2601
2602 .sp
2603 .ne 2
2604 .na
2605 \fBzfs_multihost_import_intervals\fR (uint)
2606 .ad
2607 .RS 12n
2608 Used to control the duration of the activity test on import.  Smaller values of
2609 \fBzfs_multihost_import_intervals\fR will reduce the import time but increase
2610 the risk of failing to detect an active pool.  The total activity check time is
2611 never allowed to drop below one second.
2612 .sp
2613 On import the activity check waits a minimum amount of time determined by
2614 \fBzfs_multihost_interval * zfs_multihost_import_intervals\fR, or the same
2615 product computed on the host which last had the pool imported (whichever is
2616 greater).  The activity check time may be further extended if the value of mmp
2617 delay found in the best uberblock indicates actual multihost updates happened
2618 at longer intervals than \fBzfs_multihost_interval\fR.  A minimum value of
2619 \fB100ms\fR is enforced.
2620 .sp
2621 A value of 0 is ignored and treated as if it was set to 1.
2622 .sp
2623 Default value: \fB20\fR.
2624 .RE
2625
2626 .sp
2627 .ne 2
2628 .na
2629 \fBzfs_multihost_fail_intervals\fR (uint)
2630 .ad
2631 .RS 12n
2632 Controls the behavior of the pool when multihost write failures or delays are
2633 detected.
2634 .sp
2635 When \fBzfs_multihost_fail_intervals = 0\fR, multihost write failures or delays
2636 are ignored.  The failures will still be reported to the ZED which depending on
2637 its configuration may take action such as suspending the pool or offlining a
2638 device.
2639
2640 .sp
2641 When \fBzfs_multihost_fail_intervals > 0\fR, the pool will be suspended if
2642 \fBzfs_multihost_fail_intervals * zfs_multihost_interval\fR milliseconds pass
2643 without a successful mmp write.  This guarantees the activity test will see
2644 mmp writes if the pool is imported.  A value of 1 is ignored and treated as
2645 if it was set to 2.  This is necessary to prevent the pool from being suspended
2646 due to normal, small I/O latency variations.
2647
2648 .sp
2649 Default value: \fB10\fR.
2650 .RE
2651
2652 .sp
2653 .ne 2
2654 .na
2655 \fBzfs_no_scrub_io\fR (int)
2656 .ad
2657 .RS 12n
2658 Set for no scrub I/O. This results in scrubs not actually scrubbing data and
2659 simply doing a metadata crawl of the pool instead.
2660 .sp
2661 Use \fB1\fR for yes and \fB0\fR for no (default).
2662 .RE
2663
2664 .sp
2665 .ne 2
2666 .na
2667 \fBzfs_no_scrub_prefetch\fR (int)
2668 .ad
2669 .RS 12n
2670 Set to disable block prefetching for scrubs.
2671 .sp
2672 Use \fB1\fR for yes and \fB0\fR for no (default).
2673 .RE
2674
2675 .sp
2676 .ne 2
2677 .na
2678 \fBzfs_nocacheflush\fR (int)
2679 .ad
2680 .RS 12n
2681 Disable cache flush operations on disks when writing.  Setting this will
2682 cause pool corruption on power loss if a volatile out-of-order write cache
2683 is enabled.
2684 .sp
2685 Use \fB1\fR for yes and \fB0\fR for no (default).
2686 .RE
2687
2688 .sp
2689 .ne 2
2690 .na
2691 \fBzfs_nopwrite_enabled\fR (int)
2692 .ad
2693 .RS 12n
2694 Enable NOP writes
2695 .sp
2696 Use \fB1\fR for yes (default) and \fB0\fR to disable.
2697 .RE
2698
2699 .sp
2700 .ne 2
2701 .na
2702 \fBzfs_dmu_offset_next_sync\fR (int)
2703 .ad
2704 .RS 12n
2705 Enable forcing txg sync to find holes. When enabled forces ZFS to act
2706 like prior versions when SEEK_HOLE or SEEK_DATA flags are used, which
2707 when a dnode is dirty causes txg's to be synced so that this data can be
2708 found.
2709 .sp
2710 Use \fB1\fR for yes and \fB0\fR to disable (default).
2711 .RE
2712
2713 .sp
2714 .ne 2
2715 .na
2716 \fBzfs_pd_bytes_max\fR (int)
2717 .ad
2718 .RS 12n
2719 The number of bytes which should be prefetched during a pool traversal
2720 (eg: \fBzfs send\fR or other data crawling operations)
2721 .sp
2722 Default value: \fB52,428,800\fR.
2723 .RE
2724
2725 .sp
2726 .ne 2
2727 .na
2728 \fBzfs_per_txg_dirty_frees_percent \fR (ulong)
2729 .ad
2730 .RS 12n
2731 Tunable to control percentage of dirtied indirect blocks from frees allowed
2732 into one TXG. After this threshold is crossed, additional frees will wait until
2733 the next TXG.
2734 A value of zero will disable this throttle.
2735 .sp
2736 Default value: \fB5\fR, set to \fB0\fR to disable.
2737 .RE
2738
2739 .sp
2740 .ne 2
2741 .na
2742 \fBzfs_prefetch_disable\fR (int)
2743 .ad
2744 .RS 12n
2745 This tunable disables predictive prefetch.  Note that it leaves "prescient"
2746 prefetch (e.g. prefetch for zfs send) intact.  Unlike predictive prefetch,
2747 prescient prefetch never issues i/os that end up not being needed, so it
2748 can't hurt performance.
2749 .sp
2750 Use \fB1\fR for yes and \fB0\fR for no (default).
2751 .RE
2752
2753 .sp
2754 .ne 2
2755 .na
2756 \fBzfs_qat_checksum_disable\fR (int)
2757 .ad
2758 .RS 12n
2759 This tunable disables qat hardware acceleration for sha256 checksums. It
2760 may be set after the zfs modules have been loaded to initialize the qat
2761 hardware as long as support is compiled in and the qat driver is present.
2762 .sp
2763 Use \fB1\fR for yes and \fB0\fR for no (default).
2764 .RE
2765
2766 .sp
2767 .ne 2
2768 .na
2769 \fBzfs_qat_compress_disable\fR (int)
2770 .ad
2771 .RS 12n
2772 This tunable disables qat hardware acceleration for gzip compression. It
2773 may be set after the zfs modules have been loaded to initialize the qat
2774 hardware as long as support is compiled in and the qat driver is present.
2775 .sp
2776 Use \fB1\fR for yes and \fB0\fR for no (default).
2777 .RE
2778
2779 .sp
2780 .ne 2
2781 .na
2782 \fBzfs_qat_encrypt_disable\fR (int)
2783 .ad
2784 .RS 12n
2785 This tunable disables qat hardware acceleration for AES-GCM encryption. It
2786 may be set after the zfs modules have been loaded to initialize the qat
2787 hardware as long as support is compiled in and the qat driver is present.
2788 .sp
2789 Use \fB1\fR for yes and \fB0\fR for no (default).
2790 .RE
2791
2792 .sp
2793 .ne 2
2794 .na
2795 \fBzfs_read_chunk_size\fR (long)
2796 .ad
2797 .RS 12n
2798 Bytes to read per chunk
2799 .sp
2800 Default value: \fB1,048,576\fR.
2801 .RE
2802
2803 .sp
2804 .ne 2
2805 .na
2806 \fBzfs_read_history\fR (int)
2807 .ad
2808 .RS 12n
2809 Historical statistics for the last N reads will be available in
2810 \fB/proc/spl/kstat/zfs/<pool>/reads\fR
2811 .sp
2812 Default value: \fB0\fR (no data is kept).
2813 .RE
2814
2815 .sp
2816 .ne 2
2817 .na
2818 \fBzfs_read_history_hits\fR (int)
2819 .ad
2820 .RS 12n
2821 Include cache hits in read history
2822 .sp
2823 Use \fB1\fR for yes and \fB0\fR for no (default).
2824 .RE
2825
2826 .sp
2827 .ne 2
2828 .na
2829 \fBzfs_rebuild_max_segment\fR (ulong)
2830 .ad
2831 .RS 12n
2832 Maximum read segment size to issue when sequentially resilvering a
2833 top-level vdev.
2834 .sp
2835 Default value: \fB1,048,576\fR.
2836 .RE
2837
2838 .sp
2839 .ne 2
2840 .na
2841 \fBzfs_reconstruct_indirect_combinations_max\fR (int)
2842 .ad
2843 .RS 12na
2844 If an indirect split block contains more than this many possible unique
2845 combinations when being reconstructed, consider it too computationally
2846 expensive to check them all. Instead, try at most
2847 \fBzfs_reconstruct_indirect_combinations_max\fR randomly-selected
2848 combinations each time the block is accessed.  This allows all segment
2849 copies to participate fairly in the reconstruction when all combinations
2850 cannot be checked and prevents repeated use of one bad copy.
2851 .sp
2852 Default value: \fB4096\fR.
2853 .RE
2854
2855 .sp
2856 .ne 2
2857 .na
2858 \fBzfs_recover\fR (int)
2859 .ad
2860 .RS 12n
2861 Set to attempt to recover from fatal errors. This should only be used as a
2862 last resort, as it typically results in leaked space, or worse.
2863 .sp
2864 Use \fB1\fR for yes and \fB0\fR for no (default).
2865 .RE
2866
2867 .sp
2868 .ne 2
2869 .na
2870 \fBzfs_removal_ignore_errors\fR (int)
2871 .ad
2872 .RS 12n
2873 .sp
2874 Ignore hard IO errors during device removal.  When set, if a device encounters
2875 a hard IO error during the removal process the removal will not be cancelled.
2876 This can result in a normally recoverable block becoming permanently damaged
2877 and is not recommended.  This should only be used as a last resort when the
2878 pool cannot be returned to a healthy state prior to removing the device.
2879 .sp
2880 Default value: \fB0\fR.
2881 .RE
2882
2883 .sp
2884 .ne 2
2885 .na
2886 \fBzfs_removal_suspend_progress\fR (int)
2887 .ad
2888 .RS 12n
2889 .sp
2890 This is used by the test suite so that it can ensure that certain actions
2891 happen while in the middle of a removal.
2892 .sp
2893 Default value: \fB0\fR.
2894 .RE
2895
2896 .sp
2897 .ne 2
2898 .na
2899 \fBzfs_remove_max_segment\fR (int)
2900 .ad
2901 .RS 12n
2902 .sp
2903 The largest contiguous segment that we will attempt to allocate when removing
2904 a device.  This can be no larger than 16MB.  If there is a performance
2905 problem with attempting to allocate large blocks, consider decreasing this.
2906 .sp
2907 Default value: \fB16,777,216\fR (16MB).
2908 .RE
2909
2910 .sp
2911 .ne 2
2912 .na
2913 \fBzfs_resilver_disable_defer\fR (int)
2914 .ad
2915 .RS 12n
2916 Disables the \fBresilver_defer\fR feature, causing an operation that would
2917 start a resilver to restart one in progress immediately.
2918 .sp
2919 Default value: \fB0\fR (feature enabled).
2920 .RE
2921
2922 .sp
2923 .ne 2
2924 .na
2925 \fBzfs_resilver_min_time_ms\fR (int)
2926 .ad
2927 .RS 12n
2928 Resilvers are processed by the sync thread. While resilvering it will spend
2929 at least this much time working on a resilver between txg flushes.
2930 .sp
2931 Default value: \fB3,000\fR.
2932 .RE
2933
2934 .sp
2935 .ne 2
2936 .na
2937 \fBzfs_scan_ignore_errors\fR (int)
2938 .ad
2939 .RS 12n
2940 If set to a nonzero value, remove the DTL (dirty time list) upon
2941 completion of a pool scan (scrub) even if there were unrepairable
2942 errors.  It is intended to be used during pool repair or recovery to
2943 stop resilvering when the pool is next imported.
2944 .sp
2945 Default value: \fB0\fR.
2946 .RE
2947
2948 .sp
2949 .ne 2
2950 .na
2951 \fBzfs_scrub_min_time_ms\fR (int)
2952 .ad
2953 .RS 12n
2954 Scrubs are processed by the sync thread. While scrubbing it will spend
2955 at least this much time working on a scrub between txg flushes.
2956 .sp
2957 Default value: \fB1,000\fR.
2958 .RE
2959
2960 .sp
2961 .ne 2
2962 .na
2963 \fBzfs_scan_checkpoint_intval\fR (int)
2964 .ad
2965 .RS 12n
2966 To preserve progress across reboots the sequential scan algorithm periodically
2967 needs to stop metadata scanning and issue all the verifications I/Os to disk.
2968 The frequency of this flushing is determined by the
2969 \fBzfs_scan_checkpoint_intval\fR tunable.
2970 .sp
2971 Default value: \fB7200\fR seconds (every 2 hours).
2972 .RE
2973
2974 .sp
2975 .ne 2
2976 .na
2977 \fBzfs_scan_fill_weight\fR (int)
2978 .ad
2979 .RS 12n
2980 This tunable affects how scrub and resilver I/O segments are ordered. A higher
2981 number indicates that we care more about how filled in a segment is, while a
2982 lower number indicates we care more about the size of the extent without
2983 considering the gaps within a segment. This value is only tunable upon module
2984 insertion. Changing the value afterwards will have no affect on scrub or
2985 resilver performance.
2986 .sp
2987 Default value: \fB3\fR.
2988 .RE
2989
2990 .sp
2991 .ne 2
2992 .na
2993 \fBzfs_scan_issue_strategy\fR (int)
2994 .ad
2995 .RS 12n
2996 Determines the order that data will be verified while scrubbing or resilvering.
2997 If set to \fB1\fR, data will be verified as sequentially as possible, given the
2998 amount of memory reserved for scrubbing (see \fBzfs_scan_mem_lim_fact\fR). This
2999 may improve scrub performance if the pool's data is very fragmented. If set to
3000 \fB2\fR, the largest mostly-contiguous chunk of found data will be verified
3001 first. By deferring scrubbing of small segments, we may later find adjacent data
3002 to coalesce and increase the segment size. If set to \fB0\fR, zfs will use
3003 strategy \fB1\fR during normal verification and strategy \fB2\fR while taking a
3004 checkpoint.
3005 .sp
3006 Default value: \fB0\fR.
3007 .RE
3008
3009 .sp
3010 .ne 2
3011 .na
3012 \fBzfs_scan_legacy\fR (int)
3013 .ad
3014 .RS 12n
3015 A value of 0 indicates that scrubs and resilvers will gather metadata in
3016 memory before issuing sequential I/O. A value of 1 indicates that the legacy
3017 algorithm will be used where I/O is initiated as soon as it is discovered.
3018 Changing this value to 0 will not affect scrubs or resilvers that are already
3019 in progress.
3020 .sp
3021 Default value: \fB0\fR.
3022 .RE
3023
3024 .sp
3025 .ne 2
3026 .na
3027 \fBzfs_scan_max_ext_gap\fR (int)
3028 .ad
3029 .RS 12n
3030 Indicates the largest gap in bytes between scrub / resilver I/Os that will still
3031 be considered sequential for sorting purposes. Changing this value will not
3032 affect scrubs or resilvers that are already in progress.
3033 .sp
3034 Default value: \fB2097152 (2 MB)\fR.
3035 .RE
3036
3037 .sp
3038 .ne 2
3039 .na
3040 \fBzfs_scan_mem_lim_fact\fR (int)
3041 .ad
3042 .RS 12n
3043 Maximum fraction of RAM used for I/O sorting by sequential scan algorithm.
3044 This tunable determines the hard limit for I/O sorting memory usage.
3045 When the hard limit is reached we stop scanning metadata and start issuing
3046 data verification I/O. This is done until we get below the soft limit.
3047 .sp
3048 Default value: \fB20\fR which is 5% of RAM (1/20).
3049 .RE
3050
3051 .sp
3052 .ne 2
3053 .na
3054 \fBzfs_scan_mem_lim_soft_fact\fR (int)
3055 .ad
3056 .RS 12n
3057 The fraction of the hard limit used to determined the soft limit for I/O sorting
3058 by the sequential scan algorithm. When we cross this limit from below no action
3059 is taken. When we cross this limit from above it is because we are issuing
3060 verification I/O. In this case (unless the metadata scan is done) we stop
3061 issuing verification I/O and start scanning metadata again until we get to the
3062 hard limit.
3063 .sp
3064 Default value: \fB20\fR which is 5% of the hard limit (1/20).
3065 .RE
3066
3067 .sp
3068 .ne 2
3069 .na
3070 \fBzfs_scan_strict_mem_lim\fR (int)
3071 .ad
3072 .RS 12n
3073 Enforces tight memory limits on pool scans when a sequential scan is in
3074 progress. When disabled the memory limit may be exceeded by fast disks.
3075 .sp
3076 Default value: \fB0\fR.
3077 .RE
3078
3079 .sp
3080 .ne 2
3081 .na
3082 \fBzfs_scan_suspend_progress\fR (int)
3083 .ad
3084 .RS 12n
3085 Freezes a scrub/resilver in progress without actually pausing it. Intended for
3086 testing/debugging.
3087 .sp
3088 Default value: \fB0\fR.
3089 .RE
3090
3091
3092 .sp
3093 .ne 2
3094 .na
3095 \fBzfs_scan_vdev_limit\fR (int)
3096 .ad
3097 .RS 12n
3098 Maximum amount of data that can be concurrently issued at once for scrubs and
3099 resilvers per leaf device, given in bytes.
3100 .sp
3101 Default value: \fB41943040\fR.
3102 .RE
3103
3104 .sp
3105 .ne 2
3106 .na
3107 \fBzfs_send_corrupt_data\fR (int)
3108 .ad
3109 .RS 12n
3110 Allow sending of corrupt data (ignore read/checksum errors when sending data)
3111 .sp
3112 Use \fB1\fR for yes and \fB0\fR for no (default).
3113 .RE
3114
3115 .sp
3116 .ne 2
3117 .na
3118 \fBzfs_send_unmodified_spill_blocks\fR (int)
3119 .ad
3120 .RS 12n
3121 Include unmodified spill blocks in the send stream. Under certain circumstances
3122 previous versions of ZFS could incorrectly remove the spill block from an
3123 existing object.  Including unmodified copies of the spill blocks creates a
3124 backwards compatible stream which will recreate a spill block if it was
3125 incorrectly removed.
3126 .sp
3127 Use \fB1\fR for yes (default) and \fB0\fR for no.
3128 .RE
3129
3130 .sp
3131 .ne 2
3132 .na
3133 \fBzfs_send_no_prefetch_queue_ff\fR (int)
3134 .ad
3135 .RS 12n
3136 The fill fraction of the \fBzfs send\fR internal queues. The fill fraction
3137 controls the timing with which internal threads are woken up.
3138 .sp
3139 Default value: \fB20\fR.
3140 .RE
3141
3142 .sp
3143 .ne 2
3144 .na
3145 \fBzfs_send_no_prefetch_queue_length\fR (int)
3146 .ad
3147 .RS 12n
3148 The maximum number of bytes allowed in \fBzfs send\fR's internal queues.
3149 .sp
3150 Default value: \fB1,048,576\fR.
3151 .RE
3152
3153 .sp
3154 .ne 2
3155 .na
3156 \fBzfs_send_queue_ff\fR (int)
3157 .ad
3158 .RS 12n
3159 The fill fraction of the \fBzfs send\fR prefetch queue. The fill fraction
3160 controls the timing with which internal threads are woken up.
3161 .sp
3162 Default value: \fB20\fR.
3163 .RE
3164
3165 .sp
3166 .ne 2
3167 .na
3168 \fBzfs_send_queue_length\fR (int)
3169 .ad
3170 .RS 12n
3171 The maximum number of bytes allowed that will be prefetched by \fBzfs send\fR.
3172 This value must be at least twice the maximum block size in use.
3173 .sp
3174 Default value: \fB16,777,216\fR.
3175 .RE
3176
3177 .sp
3178 .ne 2
3179 .na
3180 \fBzfs_recv_queue_ff\fR (int)
3181 .ad
3182 .RS 12n
3183 The fill fraction of the \fBzfs receive\fR queue. The fill fraction
3184 controls the timing with which internal threads are woken up.
3185 .sp
3186 Default value: \fB20\fR.
3187 .RE
3188
3189 .sp
3190 .ne 2
3191 .na
3192 \fBzfs_recv_queue_length\fR (int)
3193 .ad
3194 .RS 12n
3195 The maximum number of bytes allowed in the \fBzfs receive\fR queue. This value
3196 must be at least twice the maximum block size in use.
3197 .sp
3198 Default value: \fB16,777,216\fR.
3199 .RE
3200
3201 .sp
3202 .ne 2
3203 .na
3204 \fBzfs_recv_write_batch_size\fR (int)
3205 .ad
3206 .RS 12n
3207 The maximum amount of data (in bytes) that \fBzfs receive\fR will write in
3208 one DMU transaction.  This is the uncompressed size, even when receiving a
3209 compressed send stream.  This setting will not reduce the write size below
3210 a single block. Capped at a maximum of 32MB
3211 .sp
3212 Default value: \fB1MB\fR.
3213 .RE
3214
3215 .sp
3216 .ne 2
3217 .na
3218 \fBzfs_override_estimate_recordsize\fR (ulong)
3219 .ad
3220 .RS 12n
3221 Setting this variable overrides the default logic for estimating block
3222 sizes when doing a zfs send. The default heuristic is that the average
3223 block size will be the current recordsize. Override this value if most data
3224 in your dataset is not of that size and you require accurate zfs send size
3225 estimates.
3226 .sp
3227 Default value: \fB0\fR.
3228 .RE
3229
3230 .sp
3231 .ne 2
3232 .na
3233 \fBzfs_sync_pass_deferred_free\fR (int)
3234 .ad
3235 .RS 12n
3236 Flushing of data to disk is done in passes. Defer frees starting in this pass
3237 .sp
3238 Default value: \fB2\fR.
3239 .RE
3240
3241 .sp
3242 .ne 2
3243 .na
3244 \fBzfs_spa_discard_memory_limit\fR (int)
3245 .ad
3246 .RS 12n
3247 Maximum memory used for prefetching a checkpoint's space map on each
3248 vdev while discarding the checkpoint.
3249 .sp
3250 Default value: \fB16,777,216\fR.
3251 .RE
3252
3253 .sp
3254 .ne 2
3255 .na
3256 \fBzfs_special_class_metadata_reserve_pct\fR (int)
3257 .ad
3258 .RS 12n
3259 Only allow small data blocks to be allocated on the special and dedup vdev
3260 types when the available free space percentage on these vdevs exceeds this
3261 value. This ensures reserved space is available for pool meta data as the
3262 special vdevs approach capacity.
3263 .sp
3264 Default value: \fB25\fR.
3265 .RE
3266
3267 .sp
3268 .ne 2
3269 .na
3270 \fBzfs_sync_pass_dont_compress\fR (int)
3271 .ad
3272 .RS 12n
3273 Starting in this sync pass, we disable compression (including of metadata).
3274 With the default setting, in practice, we don't have this many sync passes,
3275 so this has no effect.
3276 .sp
3277 The original intent was that disabling compression would help the sync passes
3278 to converge. However, in practice disabling compression increases the average
3279 number of sync passes, because when we turn compression off, a lot of block's
3280 size will change and thus we have to re-allocate (not overwrite) them. It
3281 also increases the number of 128KB allocations (e.g. for indirect blocks and
3282 spacemaps) because these will not be compressed. The 128K allocations are
3283 especially detrimental to performance on highly fragmented systems, which may
3284 have very few free segments of this size, and may need to load new metaslabs
3285 to satisfy 128K allocations.
3286 .sp
3287 Default value: \fB8\fR.
3288 .RE
3289
3290 .sp
3291 .ne 2
3292 .na
3293 \fBzfs_sync_pass_rewrite\fR (int)
3294 .ad
3295 .RS 12n
3296 Rewrite new block pointers starting in this pass
3297 .sp
3298 Default value: \fB2\fR.
3299 .RE
3300
3301 .sp
3302 .ne 2
3303 .na
3304 \fBzfs_sync_taskq_batch_pct\fR (int)
3305 .ad
3306 .RS 12n
3307 This controls the number of threads used by the dp_sync_taskq.  The default
3308 value of 75% will create a maximum of one thread per cpu.
3309 .sp
3310 Default value: \fB75\fR%.
3311 .RE
3312
3313 .sp
3314 .ne 2
3315 .na
3316 \fBzfs_trim_extent_bytes_max\fR (uint)
3317 .ad
3318 .RS 12n
3319 Maximum size of TRIM command.  Ranges larger than this will be split in to
3320 chunks no larger than \fBzfs_trim_extent_bytes_max\fR bytes before being
3321 issued to the device.
3322 .sp
3323 Default value: \fB134,217,728\fR.
3324 .RE
3325
3326 .sp
3327 .ne 2
3328 .na
3329 \fBzfs_trim_extent_bytes_min\fR (uint)
3330 .ad
3331 .RS 12n
3332 Minimum size of TRIM commands.  TRIM ranges smaller than this will be skipped
3333 unless they're part of a larger range which was broken in to chunks.  This is
3334 done because it's common for these small TRIMs to negatively impact overall
3335 performance.  This value can be set to 0 to TRIM all unallocated space.
3336 .sp
3337 Default value: \fB32,768\fR.
3338 .RE
3339
3340 .sp
3341 .ne 2
3342 .na
3343 \fBzfs_trim_metaslab_skip\fR (uint)
3344 .ad
3345 .RS 12n
3346 Skip uninitialized metaslabs during the TRIM process.  This option is useful
3347 for pools constructed from large thinly-provisioned devices where TRIM
3348 operations are slow.  As a pool ages an increasing fraction of the pools
3349 metaslabs will be initialized progressively degrading the usefulness of
3350 this option.  This setting is stored when starting a manual TRIM and will
3351 persist for the duration of the requested TRIM.
3352 .sp
3353 Default value: \fB0\fR.
3354 .RE
3355
3356 .sp
3357 .ne 2
3358 .na
3359 \fBzfs_trim_queue_limit\fR (uint)
3360 .ad
3361 .RS 12n
3362 Maximum number of queued TRIMs outstanding per leaf vdev.  The number of
3363 concurrent TRIM commands issued to the device is controlled by the
3364 \fBzfs_vdev_trim_min_active\fR and \fBzfs_vdev_trim_max_active\fR module
3365 options.
3366 .sp
3367 Default value: \fB10\fR.
3368 .RE
3369
3370 .sp
3371 .ne 2
3372 .na
3373 \fBzfs_trim_txg_batch\fR (uint)
3374 .ad
3375 .RS 12n
3376 The number of transaction groups worth of frees which should be aggregated
3377 before TRIM operations are issued to the device.  This setting represents a
3378 trade-off between issuing larger, more efficient TRIM operations and the
3379 delay before the recently trimmed space is available for use by the device.
3380 .sp
3381 Increasing this value will allow frees to be aggregated for a longer time.
3382 This will result is larger TRIM operations and potentially increased memory
3383 usage.  Decreasing this value will have the opposite effect.  The default
3384 value of 32 was determined to be a reasonable compromise.
3385 .sp
3386 Default value: \fB32\fR.
3387 .RE
3388
3389 .sp
3390 .ne 2
3391 .na
3392 \fBzfs_txg_history\fR (int)
3393 .ad
3394 .RS 12n
3395 Historical statistics for the last N txgs will be available in
3396 \fB/proc/spl/kstat/zfs/<pool>/txgs\fR
3397 .sp
3398 Default value: \fB0\fR.
3399 .RE
3400
3401 .sp
3402 .ne 2
3403 .na
3404 \fBzfs_txg_timeout\fR (int)
3405 .ad
3406 .RS 12n
3407 Flush dirty data to disk at least every N seconds (maximum txg duration)
3408 .sp
3409 Default value: \fB5\fR.
3410 .RE
3411
3412 .sp
3413 .ne 2
3414 .na
3415 \fBzfs_vdev_aggregate_trim\fR (int)
3416 .ad
3417 .RS 12n
3418 Allow TRIM I/Os to be aggregated.  This is normally not helpful because
3419 the extents to be trimmed will have been already been aggregated by the
3420 metaslab.  This option is provided for debugging and performance analysis.
3421 .sp
3422 Default value: \fB0\fR.
3423 .RE
3424
3425 .sp
3426 .ne 2
3427 .na
3428 \fBzfs_vdev_aggregation_limit\fR (int)
3429 .ad
3430 .RS 12n
3431 Max vdev I/O aggregation size
3432 .sp
3433 Default value: \fB1,048,576\fR.
3434 .RE
3435
3436 .sp
3437 .ne 2
3438 .na
3439 \fBzfs_vdev_aggregation_limit_non_rotating\fR (int)
3440 .ad
3441 .RS 12n
3442 Max vdev I/O aggregation size for non-rotating media
3443 .sp
3444 Default value: \fB131,072\fR.
3445 .RE
3446
3447 .sp
3448 .ne 2
3449 .na
3450 \fBzfs_vdev_cache_bshift\fR (int)
3451 .ad
3452 .RS 12n
3453 Shift size to inflate reads too
3454 .sp
3455 Default value: \fB16\fR (effectively 65536).
3456 .RE
3457
3458 .sp
3459 .ne 2
3460 .na
3461 \fBzfs_vdev_cache_max\fR (int)
3462 .ad
3463 .RS 12n
3464 Inflate reads smaller than this value to meet the \fBzfs_vdev_cache_bshift\fR
3465 size (default 64k).
3466 .sp
3467 Default value: \fB16384\fR.
3468 .RE
3469
3470 .sp
3471 .ne 2
3472 .na
3473 \fBzfs_vdev_cache_size\fR (int)
3474 .ad
3475 .RS 12n
3476 Total size of the per-disk cache in bytes.
3477 .sp
3478 Currently this feature is disabled as it has been found to not be helpful
3479 for performance and in some cases harmful.
3480 .sp
3481 Default value: \fB0\fR.
3482 .RE
3483
3484 .sp
3485 .ne 2
3486 .na
3487 \fBzfs_vdev_mirror_rotating_inc\fR (int)
3488 .ad
3489 .RS 12n
3490 A number by which the balancing algorithm increments the load calculation for
3491 the purpose of selecting the least busy mirror member when an I/O immediately
3492 follows its predecessor on rotational vdevs for the purpose of making decisions
3493 based on load.
3494 .sp
3495 Default value: \fB0\fR.
3496 .RE
3497
3498 .sp
3499 .ne 2
3500 .na
3501 \fBzfs_vdev_mirror_rotating_seek_inc\fR (int)
3502 .ad
3503 .RS 12n
3504 A number by which the balancing algorithm increments the load calculation for
3505 the purpose of selecting the least busy mirror member when an I/O lacks
3506 locality as defined by the zfs_vdev_mirror_rotating_seek_offset.  I/Os within
3507 this that are not immediately following the previous I/O are incremented by
3508 half.
3509 .sp
3510 Default value: \fB5\fR.
3511 .RE
3512
3513 .sp
3514 .ne 2
3515 .na
3516 \fBzfs_vdev_mirror_rotating_seek_offset\fR (int)
3517 .ad
3518 .RS 12n
3519 The maximum distance for the last queued I/O in which the balancing algorithm
3520 considers an I/O to have locality.
3521 See the section "ZFS I/O SCHEDULER".
3522 .sp
3523 Default value: \fB1048576\fR.
3524 .RE
3525
3526 .sp
3527 .ne 2
3528 .na
3529 \fBzfs_vdev_mirror_non_rotating_inc\fR (int)
3530 .ad
3531 .RS 12n
3532 A number by which the balancing algorithm increments the load calculation for
3533 the purpose of selecting the least busy mirror member on non-rotational vdevs
3534 when I/Os do not immediately follow one another.
3535 .sp
3536 Default value: \fB0\fR.
3537 .RE
3538
3539 .sp
3540 .ne 2
3541 .na
3542 \fBzfs_vdev_mirror_non_rotating_seek_inc\fR (int)
3543 .ad
3544 .RS 12n
3545 A number by which the balancing algorithm increments the load calculation for
3546 the purpose of selecting the least busy mirror member when an I/O lacks
3547 locality as defined by the zfs_vdev_mirror_rotating_seek_offset. I/Os within
3548 this that are not immediately following the previous I/O are incremented by
3549 half.
3550 .sp
3551 Default value: \fB1\fR.
3552 .RE
3553
3554 .sp
3555 .ne 2
3556 .na
3557 \fBzfs_vdev_read_gap_limit\fR (int)
3558 .ad
3559 .RS 12n
3560 Aggregate read I/O operations if the gap on-disk between them is within this
3561 threshold.
3562 .sp
3563 Default value: \fB32,768\fR.
3564 .RE
3565
3566 .sp
3567 .ne 2
3568 .na
3569 \fBzfs_vdev_write_gap_limit\fR (int)
3570 .ad
3571 .RS 12n
3572 Aggregate write I/O over gap
3573 .sp
3574 Default value: \fB4,096\fR.
3575 .RE
3576
3577 .sp
3578 .ne 2
3579 .na
3580 \fBzfs_vdev_raidz_impl\fR (string)
3581 .ad
3582 .RS 12n
3583 Parameter for selecting raidz parity implementation to use.
3584
3585 Options marked (always) below may be selected on module load as they are
3586 supported on all systems.
3587 The remaining options may only be set after the module is loaded, as they
3588 are available only if the implementations are compiled in and supported
3589 on the running system.
3590
3591 Once the module is loaded, the content of
3592 /sys/module/zfs/parameters/zfs_vdev_raidz_impl will show available options
3593 with the currently selected one enclosed in [].
3594 Possible options are:
3595   fastest  - (always) implementation selected using built-in benchmark
3596   original - (always) original raidz implementation
3597   scalar   - (always) scalar raidz implementation
3598   sse2     - implementation using SSE2 instruction set (64bit x86 only)
3599   ssse3    - implementation using SSSE3 instruction set (64bit x86 only)
3600   avx2     - implementation using AVX2 instruction set (64bit x86 only)
3601   avx512f  - implementation using AVX512F instruction set (64bit x86 only)
3602   avx512bw - implementation using AVX512F & AVX512BW instruction sets (64bit x86 only)
3603   aarch64_neon - implementation using NEON (Aarch64/64 bit ARMv8 only)
3604   aarch64_neonx2 - implementation using NEON with more unrolling (Aarch64/64 bit ARMv8 only)
3605   powerpc_altivec - implementation using Altivec (PowerPC only)
3606 .sp
3607 Default value: \fBfastest\fR.
3608 .RE
3609
3610 .sp
3611 .ne 2
3612 .na
3613 \fBzfs_vdev_scheduler\fR (charp)
3614 .ad
3615 .RS 12n
3616 \fBDEPRECATED\fR: This option exists for compatibility with older user
3617 configurations. It does nothing except print a warning to the kernel log if
3618 set.
3619 .sp
3620 .RE
3621
3622 .sp
3623 .ne 2
3624 .na
3625 \fBzfs_zevent_cols\fR (int)
3626 .ad
3627 .RS 12n
3628 When zevents are logged to the console use this as the word wrap width.
3629 .sp
3630 Default value: \fB80\fR.
3631 .RE
3632
3633 .sp
3634 .ne 2
3635 .na
3636 \fBzfs_zevent_console\fR (int)
3637 .ad
3638 .RS 12n
3639 Log events to the console
3640 .sp
3641 Use \fB1\fR for yes and \fB0\fR for no (default).
3642 .RE
3643
3644 .sp
3645 .ne 2
3646 .na
3647 \fBzfs_zevent_len_max\fR (int)
3648 .ad
3649 .RS 12n
3650 Max event queue length. A value of 0 will result in a calculated value which
3651 increases with the number of CPUs in the system (minimum 64 events). Events
3652 in the queue can be viewed with the \fBzpool events\fR command.
3653 .sp
3654 Default value: \fB0\fR.
3655 .RE
3656
3657 .sp
3658 .ne 2
3659 .na
3660 \fBzfs_zil_clean_taskq_maxalloc\fR (int)
3661 .ad
3662 .RS 12n
3663 The maximum number of taskq entries that are allowed to be cached.  When this
3664 limit is exceeded transaction records (itxs) will be cleaned synchronously.
3665 .sp
3666 Default value: \fB1048576\fR.
3667 .RE
3668
3669 .sp
3670 .ne 2
3671 .na
3672 \fBzfs_zil_clean_taskq_minalloc\fR (int)
3673 .ad
3674 .RS 12n
3675 The number of taskq entries that are pre-populated when the taskq is first
3676 created and are immediately available for use.
3677 .sp
3678 Default value: \fB1024\fR.
3679 .RE
3680
3681 .sp
3682 .ne 2
3683 .na
3684 \fBzfs_zil_clean_taskq_nthr_pct\fR (int)
3685 .ad
3686 .RS 12n
3687 This controls the number of threads used by the dp_zil_clean_taskq.  The default
3688 value of 100% will create a maximum of one thread per cpu.
3689 .sp
3690 Default value: \fB100\fR%.
3691 .RE
3692
3693 .sp
3694 .ne 2
3695 .na
3696 \fBzil_maxblocksize\fR (int)
3697 .ad
3698 .RS 12n
3699 This sets the maximum block size used by the ZIL.  On very fragmented pools,
3700 lowering this (typically to 36KB) can improve performance.
3701 .sp
3702 Default value: \fB131072\fR (128KB).
3703 .RE
3704
3705 .sp
3706 .ne 2
3707 .na
3708 \fBzil_nocacheflush\fR (int)
3709 .ad
3710 .RS 12n
3711 Disable the cache flush commands that are normally sent to the disk(s) by
3712 the ZIL after an LWB write has completed. Setting this will cause ZIL
3713 corruption on power loss if a volatile out-of-order write cache is enabled.
3714 .sp
3715 Use \fB1\fR for yes and \fB0\fR for no (default).
3716 .RE
3717
3718 .sp
3719 .ne 2
3720 .na
3721 \fBzil_replay_disable\fR (int)
3722 .ad
3723 .RS 12n
3724 Disable intent logging replay. Can be disabled for recovery from corrupted
3725 ZIL
3726 .sp
3727 Use \fB1\fR for yes and \fB0\fR for no (default).
3728 .RE
3729
3730 .sp
3731 .ne 2
3732 .na
3733 \fBzil_slog_bulk\fR (ulong)
3734 .ad
3735 .RS 12n
3736 Limit SLOG write size per commit executed with synchronous priority.
3737 Any writes above that will be executed with lower (asynchronous) priority
3738 to limit potential SLOG device abuse by single active ZIL writer.
3739 .sp
3740 Default value: \fB786,432\fR.
3741 .RE
3742
3743 .sp
3744 .ne 2
3745 .na
3746 \fBzio_deadman_log_all\fR (int)
3747 .ad
3748 .RS 12n
3749 If non-zero, the zio deadman will produce debugging messages (see
3750 \fBzfs_dbgmsg_enable\fR) for all zios, rather than only for leaf
3751 zios possessing a vdev. This is meant to be used by developers to gain
3752 diagnostic information for hang conditions which don't involve a mutex
3753 or other locking primitive; typically conditions in which a thread in
3754 the zio pipeline is looping indefinitely.
3755 .sp
3756 Default value: \fB0\fR.
3757 .RE
3758
3759 .sp
3760 .ne 2
3761 .na
3762 \fBzio_decompress_fail_fraction\fR (int)
3763 .ad
3764 .RS 12n
3765 If non-zero, this value represents the denominator of the probability that zfs
3766 should induce a decompression failure. For instance, for a 5% decompression
3767 failure rate, this value should be set to 20.
3768 .sp
3769 Default value: \fB0\fR.
3770 .RE
3771
3772 .sp
3773 .ne 2
3774 .na
3775 \fBzio_slow_io_ms\fR (int)
3776 .ad
3777 .RS 12n
3778 When an I/O operation takes more than \fBzio_slow_io_ms\fR milliseconds to
3779 complete is marked as a slow I/O.  Each slow I/O causes a delay zevent.  Slow
3780 I/O counters can be seen with "zpool status -s".
3781
3782 .sp
3783 Default value: \fB30,000\fR.
3784 .RE
3785
3786 .sp
3787 .ne 2
3788 .na
3789 \fBzio_dva_throttle_enabled\fR (int)
3790 .ad
3791 .RS 12n
3792 Throttle block allocations in the I/O pipeline. This allows for
3793 dynamic allocation distribution when devices are imbalanced.
3794 When enabled, the maximum number of pending allocations per top-level vdev
3795 is limited by \fBzfs_vdev_queue_depth_pct\fR.
3796 .sp
3797 Default value: \fB1\fR.
3798 .RE
3799
3800 .sp
3801 .ne 2
3802 .na
3803 \fBzio_requeue_io_start_cut_in_line\fR (int)
3804 .ad
3805 .RS 12n
3806 Prioritize requeued I/O
3807 .sp
3808 Default value: \fB0\fR.
3809 .RE
3810
3811 .sp
3812 .ne 2
3813 .na
3814 \fBzio_taskq_batch_pct\fR (uint)
3815 .ad
3816 .RS 12n
3817 Percentage of online CPUs (or CPU cores, etc) which will run a worker thread
3818 for I/O. These workers are responsible for I/O work such as compression and
3819 checksum calculations. Fractional number of CPUs will be rounded down.
3820 .sp
3821 The default value of 75 was chosen to avoid using all CPUs which can result in
3822 latency issues and inconsistent application performance, especially when high
3823 compression is enabled.
3824 .sp
3825 Default value: \fB75\fR.
3826 .RE
3827
3828 .sp
3829 .ne 2
3830 .na
3831 \fBzvol_inhibit_dev\fR (uint)
3832 .ad
3833 .RS 12n
3834 Do not create zvol device nodes. This may slightly improve startup time on
3835 systems with a very large number of zvols.
3836 .sp
3837 Use \fB1\fR for yes and \fB0\fR for no (default).
3838 .RE
3839
3840 .sp
3841 .ne 2
3842 .na
3843 \fBzvol_major\fR (uint)
3844 .ad
3845 .RS 12n
3846 Major number for zvol block devices
3847 .sp
3848 Default value: \fB230\fR.
3849 .RE
3850
3851 .sp
3852 .ne 2
3853 .na
3854 \fBzvol_max_discard_blocks\fR (ulong)
3855 .ad
3856 .RS 12n
3857 Discard (aka TRIM) operations done on zvols will be done in batches of this
3858 many blocks, where block size is determined by the \fBvolblocksize\fR property
3859 of a zvol.
3860 .sp
3861 Default value: \fB16,384\fR.
3862 .RE
3863
3864 .sp
3865 .ne 2
3866 .na
3867 \fBzvol_prefetch_bytes\fR (uint)
3868 .ad
3869 .RS 12n
3870 When adding a zvol to the system prefetch \fBzvol_prefetch_bytes\fR
3871 from the start and end of the volume.  Prefetching these regions
3872 of the volume is desirable because they are likely to be accessed
3873 immediately by \fBblkid(8)\fR or by the kernel scanning for a partition
3874 table.
3875 .sp
3876 Default value: \fB131,072\fR.
3877 .RE
3878
3879 .sp
3880 .ne 2
3881 .na
3882 \fBzvol_request_sync\fR (uint)
3883 .ad
3884 .RS 12n
3885 When processing I/O requests for a zvol submit them synchronously.  This
3886 effectively limits the queue depth to 1 for each I/O submitter.  When set
3887 to 0 requests are handled asynchronously by a thread pool.  The number of
3888 requests which can be handled concurrently is controller by \fBzvol_threads\fR.
3889 .sp
3890 Default value: \fB0\fR.
3891 .RE
3892
3893 .sp
3894 .ne 2
3895 .na
3896 \fBzvol_threads\fR (uint)
3897 .ad
3898 .RS 12n
3899 Max number of threads which can handle zvol I/O requests concurrently.
3900 .sp
3901 Default value: \fB32\fR.
3902 .RE
3903
3904 .sp
3905 .ne 2
3906 .na
3907 \fBzvol_volmode\fR (uint)
3908 .ad
3909 .RS 12n
3910 Defines zvol block devices behaviour when \fBvolmode\fR is set to \fBdefault\fR.
3911 Valid values are \fB1\fR (full), \fB2\fR (dev) and \fB3\fR (none).
3912 .sp
3913 Default value: \fB1\fR.
3914 .RE
3915
3916 .SH ZFS I/O SCHEDULER
3917 ZFS issues I/O operations to leaf vdevs to satisfy and complete I/Os.
3918 The I/O scheduler determines when and in what order those operations are
3919 issued.  The I/O scheduler divides operations into five I/O classes
3920 prioritized in the following order: sync read, sync write, async read,
3921 async write, and scrub/resilver.  Each queue defines the minimum and
3922 maximum number of concurrent operations that may be issued to the
3923 device.  In addition, the device has an aggregate maximum,
3924 \fBzfs_vdev_max_active\fR. Note that the sum of the per-queue minimums
3925 must not exceed the aggregate maximum.  If the sum of the per-queue
3926 maximums exceeds the aggregate maximum, then the number of active I/Os
3927 may reach \fBzfs_vdev_max_active\fR, in which case no further I/Os will
3928 be issued regardless of whether all per-queue minimums have been met.
3929 .sp
3930 For many physical devices, throughput increases with the number of
3931 concurrent operations, but latency typically suffers. Further, physical
3932 devices typically have a limit at which more concurrent operations have no
3933 effect on throughput or can actually cause it to decrease.
3934 .sp
3935 The scheduler selects the next operation to issue by first looking for an
3936 I/O class whose minimum has not been satisfied. Once all are satisfied and
3937 the aggregate maximum has not been hit, the scheduler looks for classes
3938 whose maximum has not been satisfied. Iteration through the I/O classes is
3939 done in the order specified above. No further operations are issued if the
3940 aggregate maximum number of concurrent operations has been hit or if there
3941 are no operations queued for an I/O class that has not hit its maximum.
3942 Every time an I/O is queued or an operation completes, the I/O scheduler
3943 looks for new operations to issue.
3944 .sp
3945 In general, smaller max_active's will lead to lower latency of synchronous
3946 operations.  Larger max_active's may lead to higher overall throughput,
3947 depending on underlying storage.
3948 .sp
3949 The ratio of the queues' max_actives determines the balance of performance
3950 between reads, writes, and scrubs.  E.g., increasing
3951 \fBzfs_vdev_scrub_max_active\fR will cause the scrub or resilver to complete
3952 more quickly, but reads and writes to have higher latency and lower throughput.
3953 .sp
3954 All I/O classes have a fixed maximum number of outstanding operations
3955 except for the async write class. Asynchronous writes represent the data
3956 that is committed to stable storage during the syncing stage for
3957 transaction groups. Transaction groups enter the syncing state
3958 periodically so the number of queued async writes will quickly burst up
3959 and then bleed down to zero. Rather than servicing them as quickly as
3960 possible, the I/O scheduler changes the maximum number of active async
3961 write I/Os according to the amount of dirty data in the pool.  Since
3962 both throughput and latency typically increase with the number of
3963 concurrent operations issued to physical devices, reducing the
3964 burstiness in the number of concurrent operations also stabilizes the
3965 response time of operations from other -- and in particular synchronous
3966 -- queues. In broad strokes, the I/O scheduler will issue more
3967 concurrent operations from the async write queue as there's more dirty
3968 data in the pool.
3969 .sp
3970 Async Writes
3971 .sp
3972 The number of concurrent operations issued for the async write I/O class
3973 follows a piece-wise linear function defined by a few adjustable points.
3974 .nf
3975
3976        |              o---------| <-- zfs_vdev_async_write_max_active
3977   ^    |             /^         |
3978   |    |            / |         |
3979 active |           /  |         |
3980  I/O   |          /   |         |
3981 count  |         /    |         |
3982        |        /     |         |
3983        |-------o      |         | <-- zfs_vdev_async_write_min_active
3984       0|_______^______|_________|
3985        0%      |      |       100% of zfs_dirty_data_max
3986                |      |
3987                |      `-- zfs_vdev_async_write_active_max_dirty_percent
3988                `--------- zfs_vdev_async_write_active_min_dirty_percent
3989
3990 .fi
3991 Until the amount of dirty data exceeds a minimum percentage of the dirty
3992 data allowed in the pool, the I/O scheduler will limit the number of
3993 concurrent operations to the minimum. As that threshold is crossed, the
3994 number of concurrent operations issued increases linearly to the maximum at
3995 the specified maximum percentage of the dirty data allowed in the pool.
3996 .sp
3997 Ideally, the amount of dirty data on a busy pool will stay in the sloped
3998 part of the function between \fBzfs_vdev_async_write_active_min_dirty_percent\fR
3999 and \fBzfs_vdev_async_write_active_max_dirty_percent\fR. If it exceeds the
4000 maximum percentage, this indicates that the rate of incoming data is
4001 greater than the rate that the backend storage can handle. In this case, we
4002 must further throttle incoming writes, as described in the next section.
4003
4004 .SH ZFS TRANSACTION DELAY
4005 We delay transactions when we've determined that the backend storage
4006 isn't able to accommodate the rate of incoming writes.
4007 .sp
4008 If there is already a transaction waiting, we delay relative to when
4009 that transaction will finish waiting.  This way the calculated delay time
4010 is independent of the number of threads concurrently executing
4011 transactions.
4012 .sp
4013 If we are the only waiter, wait relative to when the transaction
4014 started, rather than the current time.  This credits the transaction for
4015 "time already served", e.g. reading indirect blocks.
4016 .sp
4017 The minimum time for a transaction to take is calculated as:
4018 .nf
4019     min_time = zfs_delay_scale * (dirty - min) / (max - dirty)
4020     min_time is then capped at 100 milliseconds.
4021 .fi
4022 .sp
4023 The delay has two degrees of freedom that can be adjusted via tunables.  The
4024 percentage of dirty data at which we start to delay is defined by
4025 \fBzfs_delay_min_dirty_percent\fR. This should typically be at or above
4026 \fBzfs_vdev_async_write_active_max_dirty_percent\fR so that we only start to
4027 delay after writing at full speed has failed to keep up with the incoming write
4028 rate. The scale of the curve is defined by \fBzfs_delay_scale\fR. Roughly speaking,
4029 this variable determines the amount of delay at the midpoint of the curve.
4030 .sp
4031 .nf
4032 delay
4033  10ms +-------------------------------------------------------------*+
4034       |                                                             *|
4035   9ms +                                                             *+
4036       |                                                             *|
4037   8ms +                                                             *+
4038       |                                                            * |
4039   7ms +                                                            * +
4040       |                                                            * |
4041   6ms +                                                            * +
4042       |                                                            * |
4043   5ms +                                                           *  +
4044       |                                                           *  |
4045   4ms +                                                           *  +
4046       |                                                           *  |
4047   3ms +                                                          *   +
4048       |                                                          *   |
4049   2ms +                                              (midpoint) *    +
4050       |                                                  |    **     |
4051   1ms +                                                  v ***       +
4052       |             zfs_delay_scale ---------->     ********         |
4053     0 +-------------------------------------*********----------------+
4054       0%                    <- zfs_dirty_data_max ->               100%
4055 .fi
4056 .sp
4057 Note that since the delay is added to the outstanding time remaining on the
4058 most recent transaction, the delay is effectively the inverse of IOPS.
4059 Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve
4060 was chosen such that small changes in the amount of accumulated dirty data
4061 in the first 3/4 of the curve yield relatively small differences in the
4062 amount of delay.
4063 .sp
4064 The effects can be easier to understand when the amount of delay is
4065 represented on a log scale:
4066 .sp
4067 .nf
4068 delay
4069 100ms +-------------------------------------------------------------++
4070       +                                                              +
4071       |                                                              |
4072       +                                                             *+
4073  10ms +                                                             *+
4074       +                                                           ** +
4075       |                                              (midpoint)  **  |
4076       +                                                  |     **    +
4077   1ms +                                                  v ****      +
4078       +             zfs_delay_scale ---------->        *****         +
4079       |                                             ****             |
4080       +                                          ****                +
4081 100us +                                        **                    +
4082       +                                       *                      +
4083       |                                      *                       |
4084       +                                     *                        +
4085  10us +                                     *                        +
4086       +                                                              +
4087       |                                                              |
4088       +                                                              +
4089       +--------------------------------------------------------------+
4090       0%                    <- zfs_dirty_data_max ->               100%
4091 .fi
4092 .sp
4093 Note here that only as the amount of dirty data approaches its limit does
4094 the delay start to increase rapidly. The goal of a properly tuned system
4095 should be to keep the amount of dirty data out of that range by first
4096 ensuring that the appropriate limits are set for the I/O scheduler to reach
4097 optimal throughput on the backend storage, and then by changing the value
4098 of \fBzfs_delay_scale\fR to increase the steepness of the curve.