]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - man/man5/zfs-module-parameters.5
OpenZFS 9188 - increase size of dbuf cache to reduce indirect block decompression
[FreeBSD/FreeBSD.git] / man / man5 / zfs-module-parameters.5
1 '\" te
2 .\" Copyright (c) 2013 by Turbo Fredriksson <turbo@bayour.com>. All rights reserved.
3 .\" Copyright (c) 2017 Datto Inc.
4 .\" The contents of this file are subject to the terms of the Common Development
5 .\" and Distribution License (the "License").  You may not use this file except
6 .\" in compliance with the License. You can obtain a copy of the license at
7 .\" usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
8 .\"
9 .\" See the License for the specific language governing permissions and
10 .\" limitations under the License. When distributing Covered Code, include this
11 .\" CDDL HEADER in each file and include the License file at
12 .\" usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this
13 .\" CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your
14 .\" own identifying information:
15 .\" Portions Copyright [yyyy] [name of copyright owner]
16 .TH ZFS-MODULE-PARAMETERS 5 "Oct 28, 2017"
17 .SH NAME
18 zfs\-module\-parameters \- ZFS module parameters
19 .SH DESCRIPTION
20 .sp
21 .LP
22 Description of the different parameters to the ZFS module.
23
24 .SS "Module parameters"
25 .sp
26 .LP
27
28 .sp
29 .ne 2
30 .na
31 \fBdbuf_cache_max_bytes\fR (ulong)
32 .ad
33 .RS 12n
34 Maximum size in bytes of the dbuf cache.  When \fB0\fR this value will default
35 to \fB1/2^dbuf_cache_shift\fR (1/32) of the target ARC size, otherwise the
36 provided value in bytes will be used.  The behavior of the dbuf cache and its
37 associated settings can be observed via the \fB/proc/spl/kstat/zfs/dbufstats\fR
38 kstat.
39 .sp
40 Default value: \fB0\fR.
41 .RE
42
43 .sp
44 .ne 2
45 .na
46 \fBdbuf_cache_hiwater_pct\fR (uint)
47 .ad
48 .RS 12n
49 The percentage over \fBdbuf_cache_max_bytes\fR when dbufs must be evicted
50 directly.
51 .sp
52 Default value: \fB10\fR%.
53 .RE
54
55 .sp
56 .ne 2
57 .na
58 \fBdbuf_cache_lowater_pct\fR (uint)
59 .ad
60 .RS 12n
61 The percentage below \fBdbuf_cache_max_bytes\fR when the evict thread stops
62 evicting dbufs.
63 .sp
64 Default value: \fB10\fR%.
65 .RE
66
67 .sp
68 .ne 2
69 .na
70 \fBdbuf_cache_shift\fR (int)
71 .ad
72 .RS 12n
73 Set the size of the dbuf cache, \fBdbuf_cache_max_bytes\fR, to a log2 fraction
74 of the target arc size.
75 .sp
76 Default value: \fB5\fR.
77 .RE
78
79 .sp
80 .ne 2
81 .na
82 \fBignore_hole_birth\fR (int)
83 .ad
84 .RS 12n
85 When set, the hole_birth optimization will not be used, and all holes will
86 always be sent on zfs send. Useful if you suspect your datasets are affected
87 by a bug in hole_birth.
88 .sp
89 Use \fB1\fR for on (default) and \fB0\fR for off.
90 .RE
91
92 .sp
93 .ne 2
94 .na
95 \fBl2arc_feed_again\fR (int)
96 .ad
97 .RS 12n
98 Turbo L2ARC warm-up. When the L2ARC is cold the fill interval will be set as
99 fast as possible.
100 .sp
101 Use \fB1\fR for yes (default) and \fB0\fR to disable.
102 .RE
103
104 .sp
105 .ne 2
106 .na
107 \fBl2arc_feed_min_ms\fR (ulong)
108 .ad
109 .RS 12n
110 Min feed interval in milliseconds. Requires \fBl2arc_feed_again=1\fR and only
111 applicable in related situations.
112 .sp
113 Default value: \fB200\fR.
114 .RE
115
116 .sp
117 .ne 2
118 .na
119 \fBl2arc_feed_secs\fR (ulong)
120 .ad
121 .RS 12n
122 Seconds between L2ARC writing
123 .sp
124 Default value: \fB1\fR.
125 .RE
126
127 .sp
128 .ne 2
129 .na
130 \fBl2arc_headroom\fR (ulong)
131 .ad
132 .RS 12n
133 How far through the ARC lists to search for L2ARC cacheable content, expressed
134 as a multiplier of \fBl2arc_write_max\fR
135 .sp
136 Default value: \fB2\fR.
137 .RE
138
139 .sp
140 .ne 2
141 .na
142 \fBl2arc_headroom_boost\fR (ulong)
143 .ad
144 .RS 12n
145 Scales \fBl2arc_headroom\fR by this percentage when L2ARC contents are being
146 successfully compressed before writing. A value of 100 disables this feature.
147 .sp
148 Default value: \fB200\fR%.
149 .RE
150
151 .sp
152 .ne 2
153 .na
154 \fBl2arc_noprefetch\fR (int)
155 .ad
156 .RS 12n
157 Do not write buffers to L2ARC if they were prefetched but not used by
158 applications
159 .sp
160 Use \fB1\fR for yes (default) and \fB0\fR to disable.
161 .RE
162
163 .sp
164 .ne 2
165 .na
166 \fBl2arc_norw\fR (int)
167 .ad
168 .RS 12n
169 No reads during writes
170 .sp
171 Use \fB1\fR for yes and \fB0\fR for no (default).
172 .RE
173
174 .sp
175 .ne 2
176 .na
177 \fBl2arc_write_boost\fR (ulong)
178 .ad
179 .RS 12n
180 Cold L2ARC devices will have \fBl2arc_write_max\fR increased by this amount
181 while they remain cold.
182 .sp
183 Default value: \fB8,388,608\fR.
184 .RE
185
186 .sp
187 .ne 2
188 .na
189 \fBl2arc_write_max\fR (ulong)
190 .ad
191 .RS 12n
192 Max write bytes per interval
193 .sp
194 Default value: \fB8,388,608\fR.
195 .RE
196
197 .sp
198 .ne 2
199 .na
200 \fBmetaslab_aliquot\fR (ulong)
201 .ad
202 .RS 12n
203 Metaslab granularity, in bytes. This is roughly similar to what would be
204 referred to as the "stripe size" in traditional RAID arrays. In normal
205 operation, ZFS will try to write this amount of data to a top-level vdev
206 before moving on to the next one.
207 .sp
208 Default value: \fB524,288\fR.
209 .RE
210
211 .sp
212 .ne 2
213 .na
214 \fBmetaslab_bias_enabled\fR (int)
215 .ad
216 .RS 12n
217 Enable metaslab group biasing based on its vdev's over- or under-utilization
218 relative to the pool.
219 .sp
220 Use \fB1\fR for yes (default) and \fB0\fR for no.
221 .RE
222
223 .sp
224 .ne 2
225 .na
226 \fBzfs_metaslab_segment_weight_enabled\fR (int)
227 .ad
228 .RS 12n
229 Enable/disable segment-based metaslab selection.
230 .sp
231 Use \fB1\fR for yes (default) and \fB0\fR for no.
232 .RE
233
234 .sp
235 .ne 2
236 .na
237 \fBzfs_metaslab_switch_threshold\fR (int)
238 .ad
239 .RS 12n
240 When using segment-based metaslab selection, continue allocating
241 from the active metaslab until \fBzfs_metaslab_switch_threshold\fR
242 worth of buckets have been exhausted.
243 .sp
244 Default value: \fB2\fR.
245 .RE
246
247 .sp
248 .ne 2
249 .na
250 \fBmetaslab_debug_load\fR (int)
251 .ad
252 .RS 12n
253 Load all metaslabs during pool import.
254 .sp
255 Use \fB1\fR for yes and \fB0\fR for no (default).
256 .RE
257
258 .sp
259 .ne 2
260 .na
261 \fBmetaslab_debug_unload\fR (int)
262 .ad
263 .RS 12n
264 Prevent metaslabs from being unloaded.
265 .sp
266 Use \fB1\fR for yes and \fB0\fR for no (default).
267 .RE
268
269 .sp
270 .ne 2
271 .na
272 \fBmetaslab_fragmentation_factor_enabled\fR (int)
273 .ad
274 .RS 12n
275 Enable use of the fragmentation metric in computing metaslab weights.
276 .sp
277 Use \fB1\fR for yes (default) and \fB0\fR for no.
278 .RE
279
280 .sp
281 .ne 2
282 .na
283 \fBmetaslabs_per_vdev\fR (int)
284 .ad
285 .RS 12n
286 When a vdev is added, it will be divided into approximately (but no more than) this number of metaslabs.
287 .sp
288 Default value: \fB200\fR.
289 .RE
290
291 .sp
292 .ne 2
293 .na
294 \fBmetaslab_preload_enabled\fR (int)
295 .ad
296 .RS 12n
297 Enable metaslab group preloading.
298 .sp
299 Use \fB1\fR for yes (default) and \fB0\fR for no.
300 .RE
301
302 .sp
303 .ne 2
304 .na
305 \fBmetaslab_lba_weighting_enabled\fR (int)
306 .ad
307 .RS 12n
308 Give more weight to metaslabs with lower LBAs, assuming they have
309 greater bandwidth as is typically the case on a modern constant
310 angular velocity disk drive.
311 .sp
312 Use \fB1\fR for yes (default) and \fB0\fR for no.
313 .RE
314
315 .sp
316 .ne 2
317 .na
318 \fBspa_config_path\fR (charp)
319 .ad
320 .RS 12n
321 SPA config file
322 .sp
323 Default value: \fB/etc/zfs/zpool.cache\fR.
324 .RE
325
326 .sp
327 .ne 2
328 .na
329 \fBspa_asize_inflation\fR (int)
330 .ad
331 .RS 12n
332 Multiplication factor used to estimate actual disk consumption from the
333 size of data being written. The default value is a worst case estimate,
334 but lower values may be valid for a given pool depending on its
335 configuration.  Pool administrators who understand the factors involved
336 may wish to specify a more realistic inflation factor, particularly if
337 they operate close to quota or capacity limits.
338 .sp
339 Default value: \fB24\fR.
340 .RE
341
342 .sp
343 .ne 2
344 .na
345 \fBspa_load_verify_data\fR (int)
346 .ad
347 .RS 12n
348 Whether to traverse data blocks during an "extreme rewind" (\fB-X\fR)
349 import.  Use 0 to disable and 1 to enable.
350
351 An extreme rewind import normally performs a full traversal of all
352 blocks in the pool for verification.  If this parameter is set to 0,
353 the traversal skips non-metadata blocks.  It can be toggled once the
354 import has started to stop or start the traversal of non-metadata blocks.
355 .sp
356 Default value: \fB1\fR.
357 .RE
358
359 .sp
360 .ne 2
361 .na
362 \fBspa_load_verify_metadata\fR (int)
363 .ad
364 .RS 12n
365 Whether to traverse blocks during an "extreme rewind" (\fB-X\fR)
366 pool import.  Use 0 to disable and 1 to enable.
367
368 An extreme rewind import normally performs a full traversal of all
369 blocks in the pool for verification.  If this parameter is set to 0,
370 the traversal is not performed.  It can be toggled once the import has
371 started to stop or start the traversal.
372 .sp
373 Default value: \fB1\fR.
374 .RE
375
376 .sp
377 .ne 2
378 .na
379 \fBspa_load_verify_maxinflight\fR (int)
380 .ad
381 .RS 12n
382 Maximum concurrent I/Os during the traversal performed during an "extreme
383 rewind" (\fB-X\fR) pool import.
384 .sp
385 Default value: \fB10000\fR.
386 .RE
387
388 .sp
389 .ne 2
390 .na
391 \fBspa_slop_shift\fR (int)
392 .ad
393 .RS 12n
394 Normally, we don't allow the last 3.2% (1/(2^spa_slop_shift)) of space
395 in the pool to be consumed.  This ensures that we don't run the pool
396 completely out of space, due to unaccounted changes (e.g. to the MOS).
397 It also limits the worst-case time to allocate space.  If we have
398 less than this amount of free space, most ZPL operations (e.g. write,
399 create) will return ENOSPC.
400 .sp
401 Default value: \fB5\fR.
402 .RE
403
404 .sp
405 .ne 2
406 .na
407 \fBzfetch_array_rd_sz\fR (ulong)
408 .ad
409 .RS 12n
410 If prefetching is enabled, disable prefetching for reads larger than this size.
411 .sp
412 Default value: \fB1,048,576\fR.
413 .RE
414
415 .sp
416 .ne 2
417 .na
418 \fBzfetch_max_distance\fR (uint)
419 .ad
420 .RS 12n
421 Max bytes to prefetch per stream (default 8MB).
422 .sp
423 Default value: \fB8,388,608\fR.
424 .RE
425
426 .sp
427 .ne 2
428 .na
429 \fBzfetch_max_streams\fR (uint)
430 .ad
431 .RS 12n
432 Max number of streams per zfetch (prefetch streams per file).
433 .sp
434 Default value: \fB8\fR.
435 .RE
436
437 .sp
438 .ne 2
439 .na
440 \fBzfetch_min_sec_reap\fR (uint)
441 .ad
442 .RS 12n
443 Min time before an active prefetch stream can be reclaimed
444 .sp
445 Default value: \fB2\fR.
446 .RE
447
448 .sp
449 .ne 2
450 .na
451 \fBzfs_arc_dnode_limit\fR (ulong)
452 .ad
453 .RS 12n
454 When the number of bytes consumed by dnodes in the ARC exceeds this number of
455 bytes, try to unpin some of it in response to demand for non-metadata. This
456 value acts as a ceiling to the amount of dnode metadata, and defaults to 0 which
457 indicates that a percent which is based on \fBzfs_arc_dnode_limit_percent\fR of
458 the ARC meta buffers that may be used for dnodes.
459
460 See also \fBzfs_arc_meta_prune\fR which serves a similar purpose but is used
461 when the amount of metadata in the ARC exceeds \fBzfs_arc_meta_limit\fR rather
462 than in response to overall demand for non-metadata.
463
464 .sp
465 Default value: \fB0\fR.
466 .RE
467
468 .sp
469 .ne 2
470 .na
471 \fBzfs_arc_dnode_limit_percent\fR (ulong)
472 .ad
473 .RS 12n
474 Percentage that can be consumed by dnodes of ARC meta buffers.
475 .sp
476 See also \fBzfs_arc_dnode_limit\fR which serves a similar purpose but has a
477 higher priority if set to nonzero value.
478 .sp
479 Default value: \fB10\fR%.
480 .RE
481
482 .sp
483 .ne 2
484 .na
485 \fBzfs_arc_dnode_reduce_percent\fR (ulong)
486 .ad
487 .RS 12n
488 Percentage of ARC dnodes to try to scan in response to demand for non-metadata
489 when the number of bytes consumed by dnodes exceeds \fBzfs_arc_dnode_limit\fR.
490
491 .sp
492 Default value: \fB10\fR% of the number of dnodes in the ARC.
493 .RE
494
495 .sp
496 .ne 2
497 .na
498 \fBzfs_arc_average_blocksize\fR (int)
499 .ad
500 .RS 12n
501 The ARC's buffer hash table is sized based on the assumption of an average
502 block size of \fBzfs_arc_average_blocksize\fR (default 8K).  This works out
503 to roughly 1MB of hash table per 1GB of physical memory with 8-byte pointers.
504 For configurations with a known larger average block size this value can be
505 increased to reduce the memory footprint.
506
507 .sp
508 Default value: \fB8192\fR.
509 .RE
510
511 .sp
512 .ne 2
513 .na
514 \fBzfs_arc_evict_batch_limit\fR (int)
515 .ad
516 .RS 12n
517 Number ARC headers to evict per sub-list before proceeding to another sub-list.
518 This batch-style operation prevents entire sub-lists from being evicted at once
519 but comes at a cost of additional unlocking and locking.
520 .sp
521 Default value: \fB10\fR.
522 .RE
523
524 .sp
525 .ne 2
526 .na
527 \fBzfs_arc_grow_retry\fR (int)
528 .ad
529 .RS 12n
530 If set to a non zero value, it will replace the arc_grow_retry value with this value.
531 The arc_grow_retry value (default 5) is the number of seconds the ARC will wait before
532 trying to resume growth after a memory pressure event.
533 .sp
534 Default value: \fB0\fR.
535 .RE
536
537 .sp
538 .ne 2
539 .na
540 \fBzfs_arc_lotsfree_percent\fR (int)
541 .ad
542 .RS 12n
543 Throttle I/O when free system memory drops below this percentage of total
544 system memory.  Setting this value to 0 will disable the throttle.
545 .sp
546 Default value: \fB10\fR%.
547 .RE
548
549 .sp
550 .ne 2
551 .na
552 \fBzfs_arc_max\fR (ulong)
553 .ad
554 .RS 12n
555 Max arc size of ARC in bytes. If set to 0 then it will consume 1/2 of system
556 RAM. This value must be at least 67108864 (64 megabytes).
557 .sp
558 This value can be changed dynamically with some caveats. It cannot be set back
559 to 0 while running and reducing it below the current ARC size will not cause
560 the ARC to shrink without memory pressure to induce shrinking.
561 .sp
562 Default value: \fB0\fR.
563 .RE
564
565 .sp
566 .ne 2
567 .na
568 \fBzfs_arc_meta_adjust_restarts\fR (ulong)
569 .ad
570 .RS 12n
571 The number of restart passes to make while scanning the ARC attempting
572 the free buffers in order to stay below the \fBzfs_arc_meta_limit\fR.
573 This value should not need to be tuned but is available to facilitate
574 performance analysis.
575 .sp
576 Default value: \fB4096\fR.
577 .RE
578
579 .sp
580 .ne 2
581 .na
582 \fBzfs_arc_meta_limit\fR (ulong)
583 .ad
584 .RS 12n
585 The maximum allowed size in bytes that meta data buffers are allowed to
586 consume in the ARC.  When this limit is reached meta data buffers will
587 be reclaimed even if the overall arc_c_max has not been reached.  This
588 value defaults to 0 which indicates that a percent which is based on
589 \fBzfs_arc_meta_limit_percent\fR of the ARC may be used for meta data.
590 .sp
591 This value my be changed dynamically except that it cannot be set back to 0
592 for a specific percent of the ARC; it must be set to an explicit value.
593 .sp
594 Default value: \fB0\fR.
595 .RE
596
597 .sp
598 .ne 2
599 .na
600 \fBzfs_arc_meta_limit_percent\fR (ulong)
601 .ad
602 .RS 12n
603 Percentage of ARC buffers that can be used for meta data.
604
605 See also \fBzfs_arc_meta_limit\fR which serves a similar purpose but has a
606 higher priority if set to nonzero value.
607
608 .sp
609 Default value: \fB75\fR%.
610 .RE
611
612 .sp
613 .ne 2
614 .na
615 \fBzfs_arc_meta_min\fR (ulong)
616 .ad
617 .RS 12n
618 The minimum allowed size in bytes that meta data buffers may consume in
619 the ARC.  This value defaults to 0 which disables a floor on the amount
620 of the ARC devoted meta data.
621 .sp
622 Default value: \fB0\fR.
623 .RE
624
625 .sp
626 .ne 2
627 .na
628 \fBzfs_arc_meta_prune\fR (int)
629 .ad
630 .RS 12n
631 The number of dentries and inodes to be scanned looking for entries
632 which can be dropped.  This may be required when the ARC reaches the
633 \fBzfs_arc_meta_limit\fR because dentries and inodes can pin buffers
634 in the ARC.  Increasing this value will cause to dentry and inode caches
635 to be pruned more aggressively.  Setting this value to 0 will disable
636 pruning the inode and dentry caches.
637 .sp
638 Default value: \fB10,000\fR.
639 .RE
640
641 .sp
642 .ne 2
643 .na
644 \fBzfs_arc_meta_strategy\fR (int)
645 .ad
646 .RS 12n
647 Define the strategy for ARC meta data buffer eviction (meta reclaim strategy).
648 A value of 0 (META_ONLY) will evict only the ARC meta data buffers.
649 A value of 1 (BALANCED) indicates that additional data buffers may be evicted if
650 that is required to in order to evict the required number of meta data buffers.
651 .sp
652 Default value: \fB1\fR.
653 .RE
654
655 .sp
656 .ne 2
657 .na
658 \fBzfs_arc_min\fR (ulong)
659 .ad
660 .RS 12n
661 Min arc size of ARC in bytes. If set to 0 then arc_c_min will default to
662 consuming the larger of 32M or 1/32 of total system memory.
663 .sp
664 Default value: \fB0\fR.
665 .RE
666
667 .sp
668 .ne 2
669 .na
670 \fBzfs_arc_min_prefetch_ms\fR (int)
671 .ad
672 .RS 12n
673 Minimum time prefetched blocks are locked in the ARC, specified in ms.
674 A value of \fB0\fR will default to 1000 ms.
675 .sp
676 Default value: \fB0\fR.
677 .RE
678
679 .sp
680 .ne 2
681 .na
682 \fBzfs_arc_min_prescient_prefetch_ms\fR (int)
683 .ad
684 .RS 12n
685 Minimum time "prescient prefetched" blocks are locked in the ARC, specified
686 in ms. These blocks are meant to be prefetched fairly aggresively ahead of
687 the code that may use them. A value of \fB0\fR will default to 6000 ms.
688 .sp
689 Default value: \fB0\fR.
690 .RE
691
692 .sp
693 .ne 2
694 .na
695 \fBzfs_multilist_num_sublists\fR (int)
696 .ad
697 .RS 12n
698 To allow more fine-grained locking, each ARC state contains a series
699 of lists for both data and meta data objects.  Locking is performed at
700 the level of these "sub-lists".  This parameters controls the number of
701 sub-lists per ARC state, and also applies to other uses of the
702 multilist data structure.
703 .sp
704 Default value: \fB4\fR or the number of online CPUs, whichever is greater
705 .RE
706
707 .sp
708 .ne 2
709 .na
710 \fBzfs_arc_overflow_shift\fR (int)
711 .ad
712 .RS 12n
713 The ARC size is considered to be overflowing if it exceeds the current
714 ARC target size (arc_c) by a threshold determined by this parameter.
715 The threshold is calculated as a fraction of arc_c using the formula
716 "arc_c >> \fBzfs_arc_overflow_shift\fR".
717
718 The default value of 8 causes the ARC to be considered to be overflowing
719 if it exceeds the target size by 1/256th (0.3%) of the target size.
720
721 When the ARC is overflowing, new buffer allocations are stalled until
722 the reclaim thread catches up and the overflow condition no longer exists.
723 .sp
724 Default value: \fB8\fR.
725 .RE
726
727 .sp
728 .ne 2
729 .na
730
731 \fBzfs_arc_p_min_shift\fR (int)
732 .ad
733 .RS 12n
734 If set to a non zero value, this will update arc_p_min_shift (default 4)
735 with the new value.
736 arc_p_min_shift is used to shift of arc_c for calculating both min and max
737 max arc_p
738 .sp
739 Default value: \fB0\fR.
740 .RE
741
742 .sp
743 .ne 2
744 .na
745 \fBzfs_arc_p_dampener_disable\fR (int)
746 .ad
747 .RS 12n
748 Disable arc_p adapt dampener
749 .sp
750 Use \fB1\fR for yes (default) and \fB0\fR to disable.
751 .RE
752
753 .sp
754 .ne 2
755 .na
756 \fBzfs_arc_shrink_shift\fR (int)
757 .ad
758 .RS 12n
759 If set to a non zero value, this will update arc_shrink_shift (default 7)
760 with the new value.
761 .sp
762 Default value: \fB0\fR.
763 .RE
764
765 .sp
766 .ne 2
767 .na
768 \fBzfs_arc_pc_percent\fR (uint)
769 .ad
770 .RS 12n
771 Percent of pagecache to reclaim arc to
772
773 This tunable allows ZFS arc to play more nicely with the kernel's LRU
774 pagecache. It can guarantee that the arc size won't collapse under scanning
775 pressure on the pagecache, yet still allows arc to be reclaimed down to
776 zfs_arc_min if necessary. This value is specified as percent of pagecache
777 size (as measured by NR_FILE_PAGES) where that percent may exceed 100. This
778 only operates during memory pressure/reclaim.
779 .sp
780 Default value: \fB0\fR% (disabled).
781 .RE
782
783 .sp
784 .ne 2
785 .na
786 \fBzfs_arc_sys_free\fR (ulong)
787 .ad
788 .RS 12n
789 The target number of bytes the ARC should leave as free memory on the system.
790 Defaults to the larger of 1/64 of physical memory or 512K.  Setting this
791 option to a non-zero value will override the default.
792 .sp
793 Default value: \fB0\fR.
794 .RE
795
796 .sp
797 .ne 2
798 .na
799 \fBzfs_autoimport_disable\fR (int)
800 .ad
801 .RS 12n
802 Disable pool import at module load by ignoring the cache file (typically \fB/etc/zfs/zpool.cache\fR).
803 .sp
804 Use \fB1\fR for yes (default) and \fB0\fR for no.
805 .RE
806
807 .sp
808 .ne 2
809 .na
810 \fBzfs_checksums_per_second\fR (int)
811 .ad
812 .RS 12n
813 Rate limit checksum events to this many per second.  Note that this should
814 not be set below the zed thresholds (currently 10 checksums over 10 sec)
815 or else zed may not trigger any action.
816 .sp
817 Default value: 20
818 .RE
819
820 .sp
821 .ne 2
822 .na
823 \fBzfs_commit_timeout_pct\fR (int)
824 .ad
825 .RS 12n
826 This controls the amount of time that a ZIL block (lwb) will remain "open"
827 when it isn't "full", and it has a thread waiting for it to be committed to
828 stable storage.  The timeout is scaled based on a percentage of the last lwb
829 latency to avoid significantly impacting the latency of each individual
830 transaction record (itx).
831 .sp
832 Default value: \fB5\fR%.
833 .RE
834
835 .sp
836 .ne 2
837 .na
838 \fBzfs_dbgmsg_enable\fR (int)
839 .ad
840 .RS 12n
841 Internally ZFS keeps a small log to facilitate debugging.  By default the log
842 is disabled, to enable it set this option to 1.  The contents of the log can
843 be accessed by reading the /proc/spl/kstat/zfs/dbgmsg file.  Writing 0 to
844 this proc file clears the log.
845 .sp
846 Default value: \fB0\fR.
847 .RE
848
849 .sp
850 .ne 2
851 .na
852 \fBzfs_dbgmsg_maxsize\fR (int)
853 .ad
854 .RS 12n
855 The maximum size in bytes of the internal ZFS debug log.
856 .sp
857 Default value: \fB4M\fR.
858 .RE
859
860 .sp
861 .ne 2
862 .na
863 \fBzfs_dbuf_state_index\fR (int)
864 .ad
865 .RS 12n
866 This feature is currently unused. It is normally used for controlling what
867 reporting is available under /proc/spl/kstat/zfs.
868 .sp
869 Default value: \fB0\fR.
870 .RE
871
872 .sp
873 .ne 2
874 .na
875 \fBzfs_deadman_enabled\fR (int)
876 .ad
877 .RS 12n
878 When a pool sync operation takes longer than \fBzfs_deadman_synctime_ms\fR
879 milliseconds, or when an individual I/O takes longer than
880 \fBzfs_deadman_ziotime_ms\fR milliseconds, then the operation is considered to
881 be "hung".  If \fBzfs_deadman_enabled\fR is set then the deadman behavior is
882 invoked as described by the \fBzfs_deadman_failmode\fR module option.
883 By default the deadman is enabled and configured to \fBwait\fR which results
884 in "hung" I/Os only being logged.  The deadman is automatically disabled
885 when a pool gets suspended.
886 .sp
887 Default value: \fB1\fR.
888 .RE
889
890 .sp
891 .ne 2
892 .na
893 \fBzfs_deadman_failmode\fR (charp)
894 .ad
895 .RS 12n
896 Controls the failure behavior when the deadman detects a "hung" I/O.  Valid
897 values are \fBwait\fR, \fBcontinue\fR, and \fBpanic\fR.
898 .sp
899 \fBwait\fR - Wait for a "hung" I/O to complete.  For each "hung" I/O a
900 "deadman" event will be posted describing that I/O.
901 .sp
902 \fBcontinue\fR - Attempt to recover from a "hung" I/O by re-dispatching it
903 to the I/O pipeline if possible.
904 .sp
905 \fBpanic\fR - Panic the system.  This can be used to facilitate an automatic
906 fail-over to a properly configured fail-over partner.
907 .sp
908 Default value: \fBwait\fR.
909 .RE
910
911 .sp
912 .ne 2
913 .na
914 \fBzfs_deadman_checktime_ms\fR (int)
915 .ad
916 .RS 12n
917 Check time in milliseconds. This defines the frequency at which we check
918 for hung I/O and potentially invoke the \fBzfs_deadman_failmode\fR behavior.
919 .sp
920 Default value: \fB60,000\fR.
921 .RE
922
923 .sp
924 .ne 2
925 .na
926 \fBzfs_deadman_synctime_ms\fR (ulong)
927 .ad
928 .RS 12n
929 Interval in milliseconds after which the deadman is triggered and also
930 the interval after which a pool sync operation is considered to be "hung".
931 Once this limit is exceeded the deadman will be invoked every
932 \fBzfs_deadman_checktime_ms\fR milliseconds until the pool sync completes.
933 .sp
934 Default value: \fB600,000\fR.
935 .RE
936
937 .sp
938 .ne 2
939 .na
940 \fBzfs_deadman_ziotime_ms\fR (ulong)
941 .ad
942 .RS 12n
943 Interval in milliseconds after which the deadman is triggered and an
944 individual IO operation is considered to be "hung".  As long as the I/O
945 remains "hung" the deadman will be invoked every \fBzfs_deadman_checktime_ms\fR
946 milliseconds until the I/O completes.
947 .sp
948 Default value: \fB300,000\fR.
949 .RE
950
951 .sp
952 .ne 2
953 .na
954 \fBzfs_dedup_prefetch\fR (int)
955 .ad
956 .RS 12n
957 Enable prefetching dedup-ed blks
958 .sp
959 Use \fB1\fR for yes and \fB0\fR to disable (default).
960 .RE
961
962 .sp
963 .ne 2
964 .na
965 \fBzfs_delay_min_dirty_percent\fR (int)
966 .ad
967 .RS 12n
968 Start to delay each transaction once there is this amount of dirty data,
969 expressed as a percentage of \fBzfs_dirty_data_max\fR.
970 This value should be >= zfs_vdev_async_write_active_max_dirty_percent.
971 See the section "ZFS TRANSACTION DELAY".
972 .sp
973 Default value: \fB60\fR%.
974 .RE
975
976 .sp
977 .ne 2
978 .na
979 \fBzfs_delay_scale\fR (int)
980 .ad
981 .RS 12n
982 This controls how quickly the transaction delay approaches infinity.
983 Larger values cause longer delays for a given amount of dirty data.
984 .sp
985 For the smoothest delay, this value should be about 1 billion divided
986 by the maximum number of operations per second.  This will smoothly
987 handle between 10x and 1/10th this number.
988 .sp
989 See the section "ZFS TRANSACTION DELAY".
990 .sp
991 Note: \fBzfs_delay_scale\fR * \fBzfs_dirty_data_max\fR must be < 2^64.
992 .sp
993 Default value: \fB500,000\fR.
994 .RE
995
996 .sp
997 .ne 2
998 .na
999 \fBzfs_delays_per_second\fR (int)
1000 .ad
1001 .RS 12n
1002 Rate limit IO delay events to this many per second.
1003 .sp
1004 Default value: 20
1005 .RE
1006
1007 .sp
1008 .ne 2
1009 .na
1010 \fBzfs_delete_blocks\fR (ulong)
1011 .ad
1012 .RS 12n
1013 This is the used to define a large file for the purposes of delete.  Files
1014 containing more than \fBzfs_delete_blocks\fR will be deleted asynchronously
1015 while smaller files are deleted synchronously.  Decreasing this value will
1016 reduce the time spent in an unlink(2) system call at the expense of a longer
1017 delay before the freed space is available.
1018 .sp
1019 Default value: \fB20,480\fR.
1020 .RE
1021
1022 .sp
1023 .ne 2
1024 .na
1025 \fBzfs_dirty_data_max\fR (int)
1026 .ad
1027 .RS 12n
1028 Determines the dirty space limit in bytes.  Once this limit is exceeded, new
1029 writes are halted until space frees up. This parameter takes precedence
1030 over \fBzfs_dirty_data_max_percent\fR.
1031 See the section "ZFS TRANSACTION DELAY".
1032 .sp
1033 Default value: \fB10\fR% of physical RAM, capped at \fBzfs_dirty_data_max_max\fR.
1034 .RE
1035
1036 .sp
1037 .ne 2
1038 .na
1039 \fBzfs_dirty_data_max_max\fR (int)
1040 .ad
1041 .RS 12n
1042 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed in bytes.
1043 This limit is only enforced at module load time, and will be ignored if
1044 \fBzfs_dirty_data_max\fR is later changed.  This parameter takes
1045 precedence over \fBzfs_dirty_data_max_max_percent\fR. See the section
1046 "ZFS TRANSACTION DELAY".
1047 .sp
1048 Default value: \fB25\fR% of physical RAM.
1049 .RE
1050
1051 .sp
1052 .ne 2
1053 .na
1054 \fBzfs_dirty_data_max_max_percent\fR (int)
1055 .ad
1056 .RS 12n
1057 Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed as a
1058 percentage of physical RAM.  This limit is only enforced at module load
1059 time, and will be ignored if \fBzfs_dirty_data_max\fR is later changed.
1060 The parameter \fBzfs_dirty_data_max_max\fR takes precedence over this
1061 one. See the section "ZFS TRANSACTION DELAY".
1062 .sp
1063 Default value: \fB25\fR%.
1064 .RE
1065
1066 .sp
1067 .ne 2
1068 .na
1069 \fBzfs_dirty_data_max_percent\fR (int)
1070 .ad
1071 .RS 12n
1072 Determines the dirty space limit, expressed as a percentage of all
1073 memory.  Once this limit is exceeded, new writes are halted until space frees
1074 up.  The parameter \fBzfs_dirty_data_max\fR takes precedence over this
1075 one.  See the section "ZFS TRANSACTION DELAY".
1076 .sp
1077 Default value: \fB10\fR%, subject to \fBzfs_dirty_data_max_max\fR.
1078 .RE
1079
1080 .sp
1081 .ne 2
1082 .na
1083 \fBzfs_dirty_data_sync\fR (int)
1084 .ad
1085 .RS 12n
1086 Start syncing out a transaction group if there is at least this much dirty data.
1087 .sp
1088 Default value: \fB67,108,864\fR.
1089 .RE
1090
1091 .sp
1092 .ne 2
1093 .na
1094 \fBzfs_fletcher_4_impl\fR (string)
1095 .ad
1096 .RS 12n
1097 Select a fletcher 4 implementation.
1098 .sp
1099 Supported selectors are: \fBfastest\fR, \fBscalar\fR, \fBsse2\fR, \fBssse3\fR,
1100 \fBavx2\fR, \fBavx512f\fR, and \fBaarch64_neon\fR.
1101 All of the selectors except \fBfastest\fR and \fBscalar\fR require instruction
1102 set extensions to be available and will only appear if ZFS detects that they are
1103 present at runtime. If multiple implementations of fletcher 4 are available,
1104 the \fBfastest\fR will be chosen using a micro benchmark. Selecting \fBscalar\fR
1105 results in the original, CPU based calculation, being used. Selecting any option
1106 other than \fBfastest\fR and \fBscalar\fR results in vector instructions from
1107 the respective CPU instruction set being used.
1108 .sp
1109 Default value: \fBfastest\fR.
1110 .RE
1111
1112 .sp
1113 .ne 2
1114 .na
1115 \fBzfs_free_bpobj_enabled\fR (int)
1116 .ad
1117 .RS 12n
1118 Enable/disable the processing of the free_bpobj object.
1119 .sp
1120 Default value: \fB1\fR.
1121 .RE
1122
1123 .sp
1124 .ne 2
1125 .na
1126 \fBzfs_free_max_blocks\fR (ulong)
1127 .ad
1128 .RS 12n
1129 Maximum number of blocks freed in a single txg.
1130 .sp
1131 Default value: \fB100,000\fR.
1132 .RE
1133
1134 .sp
1135 .ne 2
1136 .na
1137 \fBzfs_vdev_async_read_max_active\fR (int)
1138 .ad
1139 .RS 12n
1140 Maximum asynchronous read I/Os active to each device.
1141 See the section "ZFS I/O SCHEDULER".
1142 .sp
1143 Default value: \fB3\fR.
1144 .RE
1145
1146 .sp
1147 .ne 2
1148 .na
1149 \fBzfs_vdev_async_read_min_active\fR (int)
1150 .ad
1151 .RS 12n
1152 Minimum asynchronous read I/Os active to each device.
1153 See the section "ZFS I/O SCHEDULER".
1154 .sp
1155 Default value: \fB1\fR.
1156 .RE
1157
1158 .sp
1159 .ne 2
1160 .na
1161 \fBzfs_vdev_async_write_active_max_dirty_percent\fR (int)
1162 .ad
1163 .RS 12n
1164 When the pool has more than
1165 \fBzfs_vdev_async_write_active_max_dirty_percent\fR dirty data, use
1166 \fBzfs_vdev_async_write_max_active\fR to limit active async writes.  If
1167 the dirty data is between min and max, the active I/O limit is linearly
1168 interpolated. See the section "ZFS I/O SCHEDULER".
1169 .sp
1170 Default value: \fB60\fR%.
1171 .RE
1172
1173 .sp
1174 .ne 2
1175 .na
1176 \fBzfs_vdev_async_write_active_min_dirty_percent\fR (int)
1177 .ad
1178 .RS 12n
1179 When the pool has less than
1180 \fBzfs_vdev_async_write_active_min_dirty_percent\fR dirty data, use
1181 \fBzfs_vdev_async_write_min_active\fR to limit active async writes.  If
1182 the dirty data is between min and max, the active I/O limit is linearly
1183 interpolated. See the section "ZFS I/O SCHEDULER".
1184 .sp
1185 Default value: \fB30\fR%.
1186 .RE
1187
1188 .sp
1189 .ne 2
1190 .na
1191 \fBzfs_vdev_async_write_max_active\fR (int)
1192 .ad
1193 .RS 12n
1194 Maximum asynchronous write I/Os active to each device.
1195 See the section "ZFS I/O SCHEDULER".
1196 .sp
1197 Default value: \fB10\fR.
1198 .RE
1199
1200 .sp
1201 .ne 2
1202 .na
1203 \fBzfs_vdev_async_write_min_active\fR (int)
1204 .ad
1205 .RS 12n
1206 Minimum asynchronous write I/Os active to each device.
1207 See the section "ZFS I/O SCHEDULER".
1208 .sp
1209 Lower values are associated with better latency on rotational media but poorer
1210 resilver performance. The default value of 2 was chosen as a compromise. A
1211 value of 3 has been shown to improve resilver performance further at a cost of
1212 further increasing latency.
1213 .sp
1214 Default value: \fB2\fR.
1215 .RE
1216
1217 .sp
1218 .ne 2
1219 .na
1220 \fBzfs_vdev_max_active\fR (int)
1221 .ad
1222 .RS 12n
1223 The maximum number of I/Os active to each device.  Ideally, this will be >=
1224 the sum of each queue's max_active.  It must be at least the sum of each
1225 queue's min_active.  See the section "ZFS I/O SCHEDULER".
1226 .sp
1227 Default value: \fB1,000\fR.
1228 .RE
1229
1230 .sp
1231 .ne 2
1232 .na
1233 \fBzfs_vdev_scrub_max_active\fR (int)
1234 .ad
1235 .RS 12n
1236 Maximum scrub I/Os active to each device.
1237 See the section "ZFS I/O SCHEDULER".
1238 .sp
1239 Default value: \fB2\fR.
1240 .RE
1241
1242 .sp
1243 .ne 2
1244 .na
1245 \fBzfs_vdev_scrub_min_active\fR (int)
1246 .ad
1247 .RS 12n
1248 Minimum scrub I/Os active to each device.
1249 See the section "ZFS I/O SCHEDULER".
1250 .sp
1251 Default value: \fB1\fR.
1252 .RE
1253
1254 .sp
1255 .ne 2
1256 .na
1257 \fBzfs_vdev_sync_read_max_active\fR (int)
1258 .ad
1259 .RS 12n
1260 Maximum synchronous read I/Os active to each device.
1261 See the section "ZFS I/O SCHEDULER".
1262 .sp
1263 Default value: \fB10\fR.
1264 .RE
1265
1266 .sp
1267 .ne 2
1268 .na
1269 \fBzfs_vdev_sync_read_min_active\fR (int)
1270 .ad
1271 .RS 12n
1272 Minimum synchronous read I/Os active to each device.
1273 See the section "ZFS I/O SCHEDULER".
1274 .sp
1275 Default value: \fB10\fR.
1276 .RE
1277
1278 .sp
1279 .ne 2
1280 .na
1281 \fBzfs_vdev_sync_write_max_active\fR (int)
1282 .ad
1283 .RS 12n
1284 Maximum synchronous write I/Os active to each device.
1285 See the section "ZFS I/O SCHEDULER".
1286 .sp
1287 Default value: \fB10\fR.
1288 .RE
1289
1290 .sp
1291 .ne 2
1292 .na
1293 \fBzfs_vdev_sync_write_min_active\fR (int)
1294 .ad
1295 .RS 12n
1296 Minimum synchronous write I/Os active to each device.
1297 See the section "ZFS I/O SCHEDULER".
1298 .sp
1299 Default value: \fB10\fR.
1300 .RE
1301
1302 .sp
1303 .ne 2
1304 .na
1305 \fBzfs_vdev_queue_depth_pct\fR (int)
1306 .ad
1307 .RS 12n
1308 Maximum number of queued allocations per top-level vdev expressed as
1309 a percentage of \fBzfs_vdev_async_write_max_active\fR which allows the
1310 system to detect devices that are more capable of handling allocations
1311 and to allocate more blocks to those devices.  It allows for dynamic
1312 allocation distribution when devices are imbalanced as fuller devices
1313 will tend to be slower than empty devices.
1314
1315 See also \fBzio_dva_throttle_enabled\fR.
1316 .sp
1317 Default value: \fB1000\fR%.
1318 .RE
1319
1320 .sp
1321 .ne 2
1322 .na
1323 \fBzfs_expire_snapshot\fR (int)
1324 .ad
1325 .RS 12n
1326 Seconds to expire .zfs/snapshot
1327 .sp
1328 Default value: \fB300\fR.
1329 .RE
1330
1331 .sp
1332 .ne 2
1333 .na
1334 \fBzfs_admin_snapshot\fR (int)
1335 .ad
1336 .RS 12n
1337 Allow the creation, removal, or renaming of entries in the .zfs/snapshot
1338 directory to cause the creation, destruction, or renaming of snapshots.
1339 When enabled this functionality works both locally and over NFS exports
1340 which have the 'no_root_squash' option set. This functionality is disabled
1341 by default.
1342 .sp
1343 Use \fB1\fR for yes and \fB0\fR for no (default).
1344 .RE
1345
1346 .sp
1347 .ne 2
1348 .na
1349 \fBzfs_flags\fR (int)
1350 .ad
1351 .RS 12n
1352 Set additional debugging flags. The following flags may be bitwise-or'd
1353 together.
1354 .sp
1355 .TS
1356 box;
1357 rB lB
1358 lB lB
1359 r l.
1360 Value   Symbolic Name
1361         Description
1362 _
1363 1       ZFS_DEBUG_DPRINTF
1364         Enable dprintf entries in the debug log.
1365 _
1366 2       ZFS_DEBUG_DBUF_VERIFY *
1367         Enable extra dbuf verifications.
1368 _
1369 4       ZFS_DEBUG_DNODE_VERIFY *
1370         Enable extra dnode verifications.
1371 _
1372 8       ZFS_DEBUG_SNAPNAMES
1373         Enable snapshot name verification.
1374 _
1375 16      ZFS_DEBUG_MODIFY
1376         Check for illegally modified ARC buffers.
1377 _
1378 32      ZFS_DEBUG_SPA
1379         Enable spa_dbgmsg entries in the debug log.
1380 _
1381 64      ZFS_DEBUG_ZIO_FREE
1382         Enable verification of block frees.
1383 _
1384 128     ZFS_DEBUG_HISTOGRAM_VERIFY
1385         Enable extra spacemap histogram verifications.
1386 _
1387 256     ZFS_DEBUG_METASLAB_VERIFY
1388         Verify space accounting on disk matches in-core range_trees.
1389 _
1390 512     ZFS_DEBUG_SET_ERROR
1391         Enable SET_ERROR and dprintf entries in the debug log.
1392 .TE
1393 .sp
1394 * Requires debug build.
1395 .sp
1396 Default value: \fB0\fR.
1397 .RE
1398
1399 .sp
1400 .ne 2
1401 .na
1402 \fBzfs_free_leak_on_eio\fR (int)
1403 .ad
1404 .RS 12n
1405 If destroy encounters an EIO while reading metadata (e.g. indirect
1406 blocks), space referenced by the missing metadata can not be freed.
1407 Normally this causes the background destroy to become "stalled", as
1408 it is unable to make forward progress.  While in this stalled state,
1409 all remaining space to free from the error-encountering filesystem is
1410 "temporarily leaked".  Set this flag to cause it to ignore the EIO,
1411 permanently leak the space from indirect blocks that can not be read,
1412 and continue to free everything else that it can.
1413
1414 The default, "stalling" behavior is useful if the storage partially
1415 fails (i.e. some but not all i/os fail), and then later recovers.  In
1416 this case, we will be able to continue pool operations while it is
1417 partially failed, and when it recovers, we can continue to free the
1418 space, with no leaks.  However, note that this case is actually
1419 fairly rare.
1420
1421 Typically pools either (a) fail completely (but perhaps temporarily,
1422 e.g. a top-level vdev going offline), or (b) have localized,
1423 permanent errors (e.g. disk returns the wrong data due to bit flip or
1424 firmware bug).  In case (a), this setting does not matter because the
1425 pool will be suspended and the sync thread will not be able to make
1426 forward progress regardless.  In case (b), because the error is
1427 permanent, the best we can do is leak the minimum amount of space,
1428 which is what setting this flag will do.  Therefore, it is reasonable
1429 for this flag to normally be set, but we chose the more conservative
1430 approach of not setting it, so that there is no possibility of
1431 leaking space in the "partial temporary" failure case.
1432 .sp
1433 Default value: \fB0\fR.
1434 .RE
1435
1436 .sp
1437 .ne 2
1438 .na
1439 \fBzfs_free_min_time_ms\fR (int)
1440 .ad
1441 .RS 12n
1442 During a \fBzfs destroy\fR operation using \fBfeature@async_destroy\fR a minimum
1443 of this much time will be spent working on freeing blocks per txg.
1444 .sp
1445 Default value: \fB1,000\fR.
1446 .RE
1447
1448 .sp
1449 .ne 2
1450 .na
1451 \fBzfs_immediate_write_sz\fR (long)
1452 .ad
1453 .RS 12n
1454 Largest data block to write to zil. Larger blocks will be treated as if the
1455 dataset being written to had the property setting \fBlogbias=throughput\fR.
1456 .sp
1457 Default value: \fB32,768\fR.
1458 .RE
1459
1460 .sp
1461 .ne 2
1462 .na
1463 \fBzfs_max_recordsize\fR (int)
1464 .ad
1465 .RS 12n
1466 We currently support block sizes from 512 bytes to 16MB.  The benefits of
1467 larger blocks, and thus larger IO, need to be weighed against the cost of
1468 COWing a giant block to modify one byte.  Additionally, very large blocks
1469 can have an impact on i/o latency, and also potentially on the memory
1470 allocator.  Therefore, we do not allow the recordsize to be set larger than
1471 zfs_max_recordsize (default 1MB).  Larger blocks can be created by changing
1472 this tunable, and pools with larger blocks can always be imported and used,
1473 regardless of this setting.
1474 .sp
1475 Default value: \fB1,048,576\fR.
1476 .RE
1477
1478 .sp
1479 .ne 2
1480 .na
1481 \fBzfs_metaslab_fragmentation_threshold\fR (int)
1482 .ad
1483 .RS 12n
1484 Allow metaslabs to keep their active state as long as their fragmentation
1485 percentage is less than or equal to this value. An active metaslab that
1486 exceeds this threshold will no longer keep its active status allowing
1487 better metaslabs to be selected.
1488 .sp
1489 Default value: \fB70\fR.
1490 .RE
1491
1492 .sp
1493 .ne 2
1494 .na
1495 \fBzfs_mg_fragmentation_threshold\fR (int)
1496 .ad
1497 .RS 12n
1498 Metaslab groups are considered eligible for allocations if their
1499 fragmentation metric (measured as a percentage) is less than or equal to
1500 this value. If a metaslab group exceeds this threshold then it will be
1501 skipped unless all metaslab groups within the metaslab class have also
1502 crossed this threshold.
1503 .sp
1504 Default value: \fB85\fR.
1505 .RE
1506
1507 .sp
1508 .ne 2
1509 .na
1510 \fBzfs_mg_noalloc_threshold\fR (int)
1511 .ad
1512 .RS 12n
1513 Defines a threshold at which metaslab groups should be eligible for
1514 allocations.  The value is expressed as a percentage of free space
1515 beyond which a metaslab group is always eligible for allocations.
1516 If a metaslab group's free space is less than or equal to the
1517 threshold, the allocator will avoid allocating to that group
1518 unless all groups in the pool have reached the threshold.  Once all
1519 groups have reached the threshold, all groups are allowed to accept
1520 allocations.  The default value of 0 disables the feature and causes
1521 all metaslab groups to be eligible for allocations.
1522
1523 This parameter allows one to deal with pools having heavily imbalanced
1524 vdevs such as would be the case when a new vdev has been added.
1525 Setting the threshold to a non-zero percentage will stop allocations
1526 from being made to vdevs that aren't filled to the specified percentage
1527 and allow lesser filled vdevs to acquire more allocations than they
1528 otherwise would under the old \fBzfs_mg_alloc_failures\fR facility.
1529 .sp
1530 Default value: \fB0\fR.
1531 .RE
1532
1533 .sp
1534 .ne 2
1535 .na
1536 \fBzfs_multihost_history\fR (int)
1537 .ad
1538 .RS 12n
1539 Historical statistics for the last N multihost updates will be available in
1540 \fB/proc/spl/kstat/zfs/<pool>/multihost\fR
1541 .sp
1542 Default value: \fB0\fR.
1543 .RE
1544
1545 .sp
1546 .ne 2
1547 .na
1548 \fBzfs_multihost_interval\fR (ulong)
1549 .ad
1550 .RS 12n
1551 Used to control the frequency of multihost writes which are performed when the
1552 \fBmultihost\fR pool property is on.  This is one factor used to determine
1553 the length of the activity check during import.
1554 .sp
1555 The multihost write period is \fBzfs_multihost_interval / leaf-vdevs\fR milliseconds.
1556 This means that on average a multihost write will be issued for each leaf vdev every
1557 \fBzfs_multihost_interval\fR milliseconds.  In practice, the observed period can
1558 vary with the I/O load and this observed value is the delay which is stored in
1559 the uberblock.
1560 .sp
1561 On import the activity check waits a minimum amount of time determined by
1562 \fBzfs_multihost_interval * zfs_multihost_import_intervals\fR.  The activity
1563 check time may be further extended if the value of mmp delay found in the best
1564 uberblock indicates actual multihost updates happened at longer intervals than
1565 \fBzfs_multihost_interval\fR.  A minimum value of \fB100ms\fR is enforced.
1566 .sp
1567 Default value: \fB1000\fR.
1568 .RE
1569
1570 .sp
1571 .ne 2
1572 .na
1573 \fBzfs_multihost_import_intervals\fR (uint)
1574 .ad
1575 .RS 12n
1576 Used to control the duration of the activity test on import.  Smaller values of
1577 \fBzfs_multihost_import_intervals\fR will reduce the import time but increase
1578 the risk of failing to detect an active pool.  The total activity check time is
1579 never allowed to drop below one second.  A value of 0 is ignored and treated as
1580 if it was set to 1
1581 .sp
1582 Default value: \fB10\fR.
1583 .RE
1584
1585 .sp
1586 .ne 2
1587 .na
1588 \fBzfs_multihost_fail_intervals\fR (uint)
1589 .ad
1590 .RS 12n
1591 Controls the behavior of the pool when multihost write failures are detected.
1592 .sp
1593 When \fBzfs_multihost_fail_intervals = 0\fR then multihost write failures are ignored.
1594 The failures will still be reported to the ZED which depending on its
1595 configuration may take action such as suspending the pool or offlining a device.
1596 .sp
1597 When \fBzfs_multihost_fail_intervals > 0\fR then sequential multihost write failures
1598 will cause the pool to be suspended.  This occurs when
1599 \fBzfs_multihost_fail_intervals * zfs_multihost_interval\fR milliseconds have
1600 passed since the last successful multihost write.  This guarantees the activity test
1601 will see multihost writes if the pool is imported.
1602 .sp
1603 Default value: \fB5\fR.
1604 .RE
1605
1606 .sp
1607 .ne 2
1608 .na
1609 \fBzfs_no_scrub_io\fR (int)
1610 .ad
1611 .RS 12n
1612 Set for no scrub I/O. This results in scrubs not actually scrubbing data and
1613 simply doing a metadata crawl of the pool instead.
1614 .sp
1615 Use \fB1\fR for yes and \fB0\fR for no (default).
1616 .RE
1617
1618 .sp
1619 .ne 2
1620 .na
1621 \fBzfs_no_scrub_prefetch\fR (int)
1622 .ad
1623 .RS 12n
1624 Set to disable block prefetching for scrubs.
1625 .sp
1626 Use \fB1\fR for yes and \fB0\fR for no (default).
1627 .RE
1628
1629 .sp
1630 .ne 2
1631 .na
1632 \fBzfs_nocacheflush\fR (int)
1633 .ad
1634 .RS 12n
1635 Disable cache flush operations on disks when writing. Beware, this may cause
1636 corruption if disks re-order writes.
1637 .sp
1638 Use \fB1\fR for yes and \fB0\fR for no (default).
1639 .RE
1640
1641 .sp
1642 .ne 2
1643 .na
1644 \fBzfs_nopwrite_enabled\fR (int)
1645 .ad
1646 .RS 12n
1647 Enable NOP writes
1648 .sp
1649 Use \fB1\fR for yes (default) and \fB0\fR to disable.
1650 .RE
1651
1652 .sp
1653 .ne 2
1654 .na
1655 \fBzfs_dmu_offset_next_sync\fR (int)
1656 .ad
1657 .RS 12n
1658 Enable forcing txg sync to find holes. When enabled forces ZFS to act
1659 like prior versions when SEEK_HOLE or SEEK_DATA flags are used, which
1660 when a dnode is dirty causes txg's to be synced so that this data can be
1661 found.
1662 .sp
1663 Use \fB1\fR for yes and \fB0\fR to disable (default).
1664 .RE
1665
1666 .sp
1667 .ne 2
1668 .na
1669 \fBzfs_pd_bytes_max\fR (int)
1670 .ad
1671 .RS 12n
1672 The number of bytes which should be prefetched during a pool traversal
1673 (eg: \fBzfs send\fR or other data crawling operations)
1674 .sp
1675 Default value: \fB52,428,800\fR.
1676 .RE
1677
1678 .sp
1679 .ne 2
1680 .na
1681 \fBzfs_per_txg_dirty_frees_percent \fR (ulong)
1682 .ad
1683 .RS 12n
1684 Tunable to control percentage of dirtied blocks from frees in one TXG.
1685 After this threshold is crossed, additional dirty blocks from frees
1686 wait until the next TXG.
1687 A value of zero will disable this throttle.
1688 .sp
1689 Default value: \fB30\fR and \fB0\fR to disable.
1690 .RE
1691
1692
1693
1694 .sp
1695 .ne 2
1696 .na
1697 \fBzfs_prefetch_disable\fR (int)
1698 .ad
1699 .RS 12n
1700 This tunable disables predictive prefetch.  Note that it leaves "prescient"
1701 prefetch (e.g. prefetch for zfs send) intact.  Unlike predictive prefetch,
1702 prescient prefetch never issues i/os that end up not being needed, so it
1703 can't hurt performance.
1704 .sp
1705 Use \fB1\fR for yes and \fB0\fR for no (default).
1706 .RE
1707
1708 .sp
1709 .ne 2
1710 .na
1711 \fBzfs_read_chunk_size\fR (long)
1712 .ad
1713 .RS 12n
1714 Bytes to read per chunk
1715 .sp
1716 Default value: \fB1,048,576\fR.
1717 .RE
1718
1719 .sp
1720 .ne 2
1721 .na
1722 \fBzfs_read_history\fR (int)
1723 .ad
1724 .RS 12n
1725 Historical statistics for the last N reads will be available in
1726 \fB/proc/spl/kstat/zfs/<pool>/reads\fR
1727 .sp
1728 Default value: \fB0\fR (no data is kept).
1729 .RE
1730
1731 .sp
1732 .ne 2
1733 .na
1734 \fBzfs_read_history_hits\fR (int)
1735 .ad
1736 .RS 12n
1737 Include cache hits in read history
1738 .sp
1739 Use \fB1\fR for yes and \fB0\fR for no (default).
1740 .RE
1741
1742 .sp
1743 .ne 2
1744 .na
1745 \fBzfs_recover\fR (int)
1746 .ad
1747 .RS 12n
1748 Set to attempt to recover from fatal errors. This should only be used as a
1749 last resort, as it typically results in leaked space, or worse.
1750 .sp
1751 Use \fB1\fR for yes and \fB0\fR for no (default).
1752 .RE
1753
1754 .sp
1755 .ne 2
1756 .na
1757 \fBzfs_resilver_min_time_ms\fR (int)
1758 .ad
1759 .RS 12n
1760 Resilvers are processed by the sync thread. While resilvering it will spend
1761 at least this much time working on a resilver between txg flushes.
1762 .sp
1763 Default value: \fB3,000\fR.
1764 .RE
1765
1766 .sp
1767 .ne 2
1768 .na
1769 \fBzfs_scan_ignore_errors\fR (int)
1770 .ad
1771 .RS 12n
1772 If set to a nonzero value, remove the DTL (dirty time list) upon
1773 completion of a pool scan (scrub) even if there were unrepairable
1774 errors.  It is intended to be used during pool repair or recovery to
1775 stop resilvering when the pool is next imported.
1776 .sp
1777 Default value: \fB0\fR.
1778 .RE
1779
1780 .sp
1781 .ne 2
1782 .na
1783 \fBzfs_scrub_min_time_ms\fR (int)
1784 .ad
1785 .RS 12n
1786 Scrubs are processed by the sync thread. While scrubbing it will spend
1787 at least this much time working on a scrub between txg flushes.
1788 .sp
1789 Default value: \fB1,000\fR.
1790 .RE
1791
1792 .sp
1793 .ne 2
1794 .na
1795 \fBzfs_scan_checkpoint_intval\fR (int)
1796 .ad
1797 .RS 12n
1798 To preserve progress across reboots the sequential scan algorithm periodically
1799 needs to stop metadata scanning and issue all the verifications I/Os to disk.
1800 The frequency of this flushing is determined by the
1801 \fBfBzfs_scan_checkpoint_intval\fR tunable.
1802 .sp
1803 Default value: \fB7200\fR seconds (every 2 hours).
1804 .RE
1805
1806 .sp
1807 .ne 2
1808 .na
1809 \fBzfs_scan_fill_weight\fR (int)
1810 .ad
1811 .RS 12n
1812 This tunable affects how scrub and resilver I/O segments are ordered. A higher
1813 number indicates that we care more about how filled in a segment is, while a
1814 lower number indicates we care more about the size of the extent without
1815 considering the gaps within a segment. This value is only tunable upon module
1816 insertion. Changing the value afterwards will have no affect on scrub or
1817 resilver performance.
1818 .sp
1819 Default value: \fB3\fR.
1820 .RE
1821
1822 .sp
1823 .ne 2
1824 .na
1825 \fBzfs_scan_issue_strategy\fR (int)
1826 .ad
1827 .RS 12n
1828 Determines the order that data will be verified while scrubbing or resilvering.
1829 If set to \fB1\fR, data will be verified as sequentially as possible, given the
1830 amount of memory reserved for scrubbing (see \fBzfs_scan_mem_lim_fact\fR). This
1831 may improve scrub performance if the pool's data is very fragmented. If set to
1832 \fB2\fR, the largest mostly-contiguous chunk of found data will be verified
1833 first. By deferring scrubbing of small segments, we may later find adjacent data
1834 to coalesce and increase the segment size. If set to \fB0\fR, zfs will use
1835 strategy \fB1\fR during normal verification and strategy \fB2\fR while taking a
1836 checkpoint.
1837 .sp
1838 Default value: \fB0\fR.
1839 .RE
1840
1841 .sp
1842 .ne 2
1843 .na
1844 \fBzfs_scan_legacy\fR (int)
1845 .ad
1846 .RS 12n
1847 A value of 0 indicates that scrubs and resilvers will gather metadata in
1848 memory before issuing sequential I/O. A value of 1 indicates that the legacy
1849 algorithm will be used where I/O is initiated as soon as it is discovered.
1850 Changing this value to 0 will not affect scrubs or resilvers that are already
1851 in progress.
1852 .sp
1853 Default value: \fB0\fR.
1854 .RE
1855
1856 .sp
1857 .ne 2
1858 .na
1859 \fBzfs_scan_max_ext_gap\fR (int)
1860 .ad
1861 .RS 12n
1862 Indicates the largest gap in bytes between scrub / resilver I/Os that will still
1863 be considered sequential for sorting purposes. Changing this value will not
1864 affect scrubs or resilvers that are already in progress.
1865 .sp
1866 Default value: \fB2097152 (2 MB)\fR.
1867 .RE
1868
1869 .sp
1870 .ne 2
1871 .na
1872 \fBzfs_scan_mem_lim_fact\fR (int)
1873 .ad
1874 .RS 12n
1875 Maximum fraction of RAM used for I/O sorting by sequential scan algorithm.
1876 This tunable determines the hard limit for I/O sorting memory usage.
1877 When the hard limit is reached we stop scanning metadata and start issuing
1878 data verification I/O. This is done until we get below the soft limit.
1879 .sp
1880 Default value: \fB20\fR which is 5% of RAM (1/20).
1881 .RE
1882
1883 .sp
1884 .ne 2
1885 .na
1886 \fBzfs_scan_mem_lim_soft_fact\fR (int)
1887 .ad
1888 .RS 12n
1889 The fraction of the hard limit used to determined the soft limit for I/O sorting
1890 by the sequential scan algorithm. When we cross this limit from bellow no action
1891 is taken. When we cross this limit from above it is because we are issuing
1892 verification I/O. In this case (unless the metadata scan is done) we stop
1893 issuing verification I/O and start scanning metadata again until we get to the
1894 hard limit.
1895 .sp
1896 Default value: \fB20\fR which is 5% of the hard limit (1/20).
1897 .RE
1898
1899 .sp
1900 .ne 2
1901 .na
1902 \fBzfs_scan_vdev_limit\fR (int)
1903 .ad
1904 .RS 12n
1905 Maximum amount of data that can be concurrently issued at once for scrubs and
1906 resilvers per leaf device, given in bytes.
1907 .sp
1908 Default value: \fB41943040\fR.
1909 .RE
1910
1911 .sp
1912 .ne 2
1913 .na
1914 \fBzfs_send_corrupt_data\fR (int)
1915 .ad
1916 .RS 12n
1917 Allow sending of corrupt data (ignore read/checksum errors when sending data)
1918 .sp
1919 Use \fB1\fR for yes and \fB0\fR for no (default).
1920 .RE
1921
1922 .sp
1923 .ne 2
1924 .na
1925 \fBzfs_sync_pass_deferred_free\fR (int)
1926 .ad
1927 .RS 12n
1928 Flushing of data to disk is done in passes. Defer frees starting in this pass
1929 .sp
1930 Default value: \fB2\fR.
1931 .RE
1932
1933 .sp
1934 .ne 2
1935 .na
1936 \fBzfs_sync_pass_dont_compress\fR (int)
1937 .ad
1938 .RS 12n
1939 Don't compress starting in this pass
1940 .sp
1941 Default value: \fB5\fR.
1942 .RE
1943
1944 .sp
1945 .ne 2
1946 .na
1947 \fBzfs_sync_pass_rewrite\fR (int)
1948 .ad
1949 .RS 12n
1950 Rewrite new block pointers starting in this pass
1951 .sp
1952 Default value: \fB2\fR.
1953 .RE
1954
1955 .sp
1956 .ne 2
1957 .na
1958 \fBzfs_sync_taskq_batch_pct\fR (int)
1959 .ad
1960 .RS 12n
1961 This controls the number of threads used by the dp_sync_taskq.  The default
1962 value of 75% will create a maximum of one thread per cpu.
1963 .sp
1964 Default value: \fB75\fR%.
1965 .RE
1966
1967 .sp
1968 .ne 2
1969 .na
1970 \fBzfs_txg_history\fR (int)
1971 .ad
1972 .RS 12n
1973 Historical statistics for the last N txgs will be available in
1974 \fB/proc/spl/kstat/zfs/<pool>/txgs\fR
1975 .sp
1976 Default value: \fB0\fR.
1977 .RE
1978
1979 .sp
1980 .ne 2
1981 .na
1982 \fBzfs_txg_timeout\fR (int)
1983 .ad
1984 .RS 12n
1985 Flush dirty data to disk at least every N seconds (maximum txg duration)
1986 .sp
1987 Default value: \fB5\fR.
1988 .RE
1989
1990 .sp
1991 .ne 2
1992 .na
1993 \fBzfs_vdev_aggregation_limit\fR (int)
1994 .ad
1995 .RS 12n
1996 Max vdev I/O aggregation size
1997 .sp
1998 Default value: \fB131,072\fR.
1999 .RE
2000
2001 .sp
2002 .ne 2
2003 .na
2004 \fBzfs_vdev_cache_bshift\fR (int)
2005 .ad
2006 .RS 12n
2007 Shift size to inflate reads too
2008 .sp
2009 Default value: \fB16\fR (effectively 65536).
2010 .RE
2011
2012 .sp
2013 .ne 2
2014 .na
2015 \fBzfs_vdev_cache_max\fR (int)
2016 .ad
2017 .RS 12n
2018 Inflate reads smaller than this value to meet the \fBzfs_vdev_cache_bshift\fR
2019 size (default 64k).
2020 .sp
2021 Default value: \fB16384\fR.
2022 .RE
2023
2024 .sp
2025 .ne 2
2026 .na
2027 \fBzfs_vdev_cache_size\fR (int)
2028 .ad
2029 .RS 12n
2030 Total size of the per-disk cache in bytes.
2031 .sp
2032 Currently this feature is disabled as it has been found to not be helpful
2033 for performance and in some cases harmful.
2034 .sp
2035 Default value: \fB0\fR.
2036 .RE
2037
2038 .sp
2039 .ne 2
2040 .na
2041 \fBzfs_vdev_mirror_rotating_inc\fR (int)
2042 .ad
2043 .RS 12n
2044 A number by which the balancing algorithm increments the load calculation for
2045 the purpose of selecting the least busy mirror member when an I/O immediately
2046 follows its predecessor on rotational vdevs for the purpose of making decisions
2047 based on load.
2048 .sp
2049 Default value: \fB0\fR.
2050 .RE
2051
2052 .sp
2053 .ne 2
2054 .na
2055 \fBzfs_vdev_mirror_rotating_seek_inc\fR (int)
2056 .ad
2057 .RS 12n
2058 A number by which the balancing algorithm increments the load calculation for
2059 the purpose of selecting the least busy mirror member when an I/O lacks
2060 locality as defined by the zfs_vdev_mirror_rotating_seek_offset.  I/Os within
2061 this that are not immediately following the previous I/O are incremented by
2062 half.
2063 .sp
2064 Default value: \fB5\fR.
2065 .RE
2066
2067 .sp
2068 .ne 2
2069 .na
2070 \fBzfs_vdev_mirror_rotating_seek_offset\fR (int)
2071 .ad
2072 .RS 12n
2073 The maximum distance for the last queued I/O in which the balancing algorithm
2074 considers an I/O to have locality.
2075 See the section "ZFS I/O SCHEDULER".
2076 .sp
2077 Default value: \fB1048576\fR.
2078 .RE
2079
2080 .sp
2081 .ne 2
2082 .na
2083 \fBzfs_vdev_mirror_non_rotating_inc\fR (int)
2084 .ad
2085 .RS 12n
2086 A number by which the balancing algorithm increments the load calculation for
2087 the purpose of selecting the least busy mirror member on non-rotational vdevs
2088 when I/Os do not immediately follow one another.
2089 .sp
2090 Default value: \fB0\fR.
2091 .RE
2092
2093 .sp
2094 .ne 2
2095 .na
2096 \fBzfs_vdev_mirror_non_rotating_seek_inc\fR (int)
2097 .ad
2098 .RS 12n
2099 A number by which the balancing algorithm increments the load calculation for
2100 the purpose of selecting the least busy mirror member when an I/O lacks
2101 locality as defined by the zfs_vdev_mirror_rotating_seek_offset. I/Os within
2102 this that are not immediately following the previous I/O are incremented by
2103 half.
2104 .sp
2105 Default value: \fB1\fR.
2106 .RE
2107
2108 .sp
2109 .ne 2
2110 .na
2111 \fBzfs_vdev_read_gap_limit\fR (int)
2112 .ad
2113 .RS 12n
2114 Aggregate read I/O operations if the gap on-disk between them is within this
2115 threshold.
2116 .sp
2117 Default value: \fB32,768\fR.
2118 .RE
2119
2120 .sp
2121 .ne 2
2122 .na
2123 \fBzfs_vdev_scheduler\fR (charp)
2124 .ad
2125 .RS 12n
2126 Set the Linux I/O scheduler on whole disk vdevs to this scheduler. Valid options
2127 are noop, cfq, bfq & deadline
2128 .sp
2129 Default value: \fBnoop\fR.
2130 .RE
2131
2132 .sp
2133 .ne 2
2134 .na
2135 \fBzfs_vdev_write_gap_limit\fR (int)
2136 .ad
2137 .RS 12n
2138 Aggregate write I/O over gap
2139 .sp
2140 Default value: \fB4,096\fR.
2141 .RE
2142
2143 .sp
2144 .ne 2
2145 .na
2146 \fBzfs_vdev_raidz_impl\fR (string)
2147 .ad
2148 .RS 12n
2149 Parameter for selecting raidz parity implementation to use.
2150
2151 Options marked (always) below may be selected on module load as they are
2152 supported on all systems.
2153 The remaining options may only be set after the module is loaded, as they
2154 are available only if the implementations are compiled in and supported
2155 on the running system.
2156
2157 Once the module is loaded, the content of
2158 /sys/module/zfs/parameters/zfs_vdev_raidz_impl will show available options
2159 with the currently selected one enclosed in [].
2160 Possible options are:
2161   fastest  - (always) implementation selected using built-in benchmark
2162   original - (always) original raidz implementation
2163   scalar   - (always) scalar raidz implementation
2164   sse2     - implementation using SSE2 instruction set (64bit x86 only)
2165   ssse3    - implementation using SSSE3 instruction set (64bit x86 only)
2166   avx2     - implementation using AVX2 instruction set (64bit x86 only)
2167   avx512f  - implementation using AVX512F instruction set (64bit x86 only)
2168   avx512bw - implementation using AVX512F & AVX512BW instruction sets (64bit x86 only)
2169   aarch64_neon - implementation using NEON (Aarch64/64 bit ARMv8 only)
2170   aarch64_neonx2 - implementation using NEON with more unrolling (Aarch64/64 bit ARMv8 only)
2171 .sp
2172 Default value: \fBfastest\fR.
2173 .RE
2174
2175 .sp
2176 .ne 2
2177 .na
2178 \fBzfs_zevent_cols\fR (int)
2179 .ad
2180 .RS 12n
2181 When zevents are logged to the console use this as the word wrap width.
2182 .sp
2183 Default value: \fB80\fR.
2184 .RE
2185
2186 .sp
2187 .ne 2
2188 .na
2189 \fBzfs_zevent_console\fR (int)
2190 .ad
2191 .RS 12n
2192 Log events to the console
2193 .sp
2194 Use \fB1\fR for yes and \fB0\fR for no (default).
2195 .RE
2196
2197 .sp
2198 .ne 2
2199 .na
2200 \fBzfs_zevent_len_max\fR (int)
2201 .ad
2202 .RS 12n
2203 Max event queue length. A value of 0 will result in a calculated value which
2204 increases with the number of CPUs in the system (minimum 64 events). Events
2205 in the queue can be viewed with the \fBzpool events\fR command.
2206 .sp
2207 Default value: \fB0\fR.
2208 .RE
2209
2210 .sp
2211 .ne 2
2212 .na
2213 \fBzfs_zil_clean_taskq_maxalloc\fR (int)
2214 .ad
2215 .RS 12n
2216 The maximum number of taskq entries that are allowed to be cached.  When this
2217 limit is exceeded transaction records (itxs) will be cleaned synchronously.
2218 .sp
2219 Default value: \fB1048576\fR.
2220 .RE
2221
2222 .sp
2223 .ne 2
2224 .na
2225 \fBzfs_zil_clean_taskq_minalloc\fR (int)
2226 .ad
2227 .RS 12n
2228 The number of taskq entries that are pre-populated when the taskq is first
2229 created and are immediately available for use.
2230 .sp
2231 Default value: \fB1024\fR.
2232 .RE
2233
2234 .sp
2235 .ne 2
2236 .na
2237 \fBzfs_zil_clean_taskq_nthr_pct\fR (int)
2238 .ad
2239 .RS 12n
2240 This controls the number of threads used by the dp_zil_clean_taskq.  The default
2241 value of 100% will create a maximum of one thread per cpu.
2242 .sp
2243 Default value: \fB100\fR%.
2244 .RE
2245
2246 .sp
2247 .ne 2
2248 .na
2249 \fBzil_replay_disable\fR (int)
2250 .ad
2251 .RS 12n
2252 Disable intent logging replay. Can be disabled for recovery from corrupted
2253 ZIL
2254 .sp
2255 Use \fB1\fR for yes and \fB0\fR for no (default).
2256 .RE
2257
2258 .sp
2259 .ne 2
2260 .na
2261 \fBzil_slog_bulk\fR (ulong)
2262 .ad
2263 .RS 12n
2264 Limit SLOG write size per commit executed with synchronous priority.
2265 Any writes above that will be executed with lower (asynchronous) priority
2266 to limit potential SLOG device abuse by single active ZIL writer.
2267 .sp
2268 Default value: \fB786,432\fR.
2269 .RE
2270
2271 .sp
2272 .ne 2
2273 .na
2274 \fBzio_delay_max\fR (int)
2275 .ad
2276 .RS 12n
2277 A zevent will be logged if a ZIO operation takes more than N milliseconds to
2278 complete. Note that this is only a logging facility, not a timeout on
2279 operations.
2280 .sp
2281 Default value: \fB30,000\fR.
2282 .RE
2283
2284 .sp
2285 .ne 2
2286 .na
2287 \fBzio_dva_throttle_enabled\fR (int)
2288 .ad
2289 .RS 12n
2290 Throttle block allocations in the ZIO pipeline. This allows for
2291 dynamic allocation distribution when devices are imbalanced.
2292 When enabled, the maximum number of pending allocations per top-level vdev
2293 is limited by \fBzfs_vdev_queue_depth_pct\fR.
2294 .sp
2295 Default value: \fB1\fR.
2296 .RE
2297
2298 .sp
2299 .ne 2
2300 .na
2301 \fBzio_requeue_io_start_cut_in_line\fR (int)
2302 .ad
2303 .RS 12n
2304 Prioritize requeued I/O
2305 .sp
2306 Default value: \fB0\fR.
2307 .RE
2308
2309 .sp
2310 .ne 2
2311 .na
2312 \fBzio_taskq_batch_pct\fR (uint)
2313 .ad
2314 .RS 12n
2315 Percentage of online CPUs (or CPU cores, etc) which will run a worker thread
2316 for IO. These workers are responsible for IO work such as compression and
2317 checksum calculations. Fractional number of CPUs will be rounded down.
2318 .sp
2319 The default value of 75 was chosen to avoid using all CPUs which can result in
2320 latency issues and inconsistent application performance, especially when high
2321 compression is enabled.
2322 .sp
2323 Default value: \fB75\fR.
2324 .RE
2325
2326 .sp
2327 .ne 2
2328 .na
2329 \fBzvol_inhibit_dev\fR (uint)
2330 .ad
2331 .RS 12n
2332 Do not create zvol device nodes. This may slightly improve startup time on
2333 systems with a very large number of zvols.
2334 .sp
2335 Use \fB1\fR for yes and \fB0\fR for no (default).
2336 .RE
2337
2338 .sp
2339 .ne 2
2340 .na
2341 \fBzvol_major\fR (uint)
2342 .ad
2343 .RS 12n
2344 Major number for zvol block devices
2345 .sp
2346 Default value: \fB230\fR.
2347 .RE
2348
2349 .sp
2350 .ne 2
2351 .na
2352 \fBzvol_max_discard_blocks\fR (ulong)
2353 .ad
2354 .RS 12n
2355 Discard (aka TRIM) operations done on zvols will be done in batches of this
2356 many blocks, where block size is determined by the \fBvolblocksize\fR property
2357 of a zvol.
2358 .sp
2359 Default value: \fB16,384\fR.
2360 .RE
2361
2362 .sp
2363 .ne 2
2364 .na
2365 \fBzvol_prefetch_bytes\fR (uint)
2366 .ad
2367 .RS 12n
2368 When adding a zvol to the system prefetch \fBzvol_prefetch_bytes\fR
2369 from the start and end of the volume.  Prefetching these regions
2370 of the volume is desirable because they are likely to be accessed
2371 immediately by \fBblkid(8)\fR or by the kernel scanning for a partition
2372 table.
2373 .sp
2374 Default value: \fB131,072\fR.
2375 .RE
2376
2377 .sp
2378 .ne 2
2379 .na
2380 \fBzvol_request_sync\fR (uint)
2381 .ad
2382 .RS 12n
2383 When processing I/O requests for a zvol submit them synchronously.  This
2384 effectively limits the queue depth to 1 for each I/O submitter.  When set
2385 to 0 requests are handled asynchronously by a thread pool.  The number of
2386 requests which can be handled concurrently is controller by \fBzvol_threads\fR.
2387 .sp
2388 Default value: \fB0\fR.
2389 .RE
2390
2391 .sp
2392 .ne 2
2393 .na
2394 \fBzvol_threads\fR (uint)
2395 .ad
2396 .RS 12n
2397 Max number of threads which can handle zvol I/O requests concurrently.
2398 .sp
2399 Default value: \fB32\fR.
2400 .RE
2401
2402 .sp
2403 .ne 2
2404 .na
2405 \fBzvol_volmode\fR (uint)
2406 .ad
2407 .RS 12n
2408 Defines zvol block devices behaviour when \fBvolmode\fR is set to \fBdefault\fR.
2409 Valid values are \fB1\fR (full), \fB2\fR (dev) and \fB3\fR (none).
2410 .sp
2411 Default value: \fB1\fR.
2412 .RE
2413
2414 .sp
2415 .ne 2
2416 .na
2417 \fBzfs_qat_disable\fR (int)
2418 .ad
2419 .RS 12n
2420 This tunable disables qat hardware acceleration for gzip compression and.
2421 AES-GCM encryption. It is available only if qat acceleration is compiled in
2422 and the qat driver is present.
2423 .sp
2424 Use \fB1\fR for yes and \fB0\fR for no (default).
2425 .RE
2426
2427 .SH ZFS I/O SCHEDULER
2428 ZFS issues I/O operations to leaf vdevs to satisfy and complete I/Os.
2429 The I/O scheduler determines when and in what order those operations are
2430 issued.  The I/O scheduler divides operations into five I/O classes
2431 prioritized in the following order: sync read, sync write, async read,
2432 async write, and scrub/resilver.  Each queue defines the minimum and
2433 maximum number of concurrent operations that may be issued to the
2434 device.  In addition, the device has an aggregate maximum,
2435 \fBzfs_vdev_max_active\fR. Note that the sum of the per-queue minimums
2436 must not exceed the aggregate maximum.  If the sum of the per-queue
2437 maximums exceeds the aggregate maximum, then the number of active I/Os
2438 may reach \fBzfs_vdev_max_active\fR, in which case no further I/Os will
2439 be issued regardless of whether all per-queue minimums have been met.
2440 .sp
2441 For many physical devices, throughput increases with the number of
2442 concurrent operations, but latency typically suffers. Further, physical
2443 devices typically have a limit at which more concurrent operations have no
2444 effect on throughput or can actually cause it to decrease.
2445 .sp
2446 The scheduler selects the next operation to issue by first looking for an
2447 I/O class whose minimum has not been satisfied. Once all are satisfied and
2448 the aggregate maximum has not been hit, the scheduler looks for classes
2449 whose maximum has not been satisfied. Iteration through the I/O classes is
2450 done in the order specified above. No further operations are issued if the
2451 aggregate maximum number of concurrent operations has been hit or if there
2452 are no operations queued for an I/O class that has not hit its maximum.
2453 Every time an I/O is queued or an operation completes, the I/O scheduler
2454 looks for new operations to issue.
2455 .sp
2456 In general, smaller max_active's will lead to lower latency of synchronous
2457 operations.  Larger max_active's may lead to higher overall throughput,
2458 depending on underlying storage.
2459 .sp
2460 The ratio of the queues' max_actives determines the balance of performance
2461 between reads, writes, and scrubs.  E.g., increasing
2462 \fBzfs_vdev_scrub_max_active\fR will cause the scrub or resilver to complete
2463 more quickly, but reads and writes to have higher latency and lower throughput.
2464 .sp
2465 All I/O classes have a fixed maximum number of outstanding operations
2466 except for the async write class. Asynchronous writes represent the data
2467 that is committed to stable storage during the syncing stage for
2468 transaction groups. Transaction groups enter the syncing state
2469 periodically so the number of queued async writes will quickly burst up
2470 and then bleed down to zero. Rather than servicing them as quickly as
2471 possible, the I/O scheduler changes the maximum number of active async
2472 write I/Os according to the amount of dirty data in the pool.  Since
2473 both throughput and latency typically increase with the number of
2474 concurrent operations issued to physical devices, reducing the
2475 burstiness in the number of concurrent operations also stabilizes the
2476 response time of operations from other -- and in particular synchronous
2477 -- queues. In broad strokes, the I/O scheduler will issue more
2478 concurrent operations from the async write queue as there's more dirty
2479 data in the pool.
2480 .sp
2481 Async Writes
2482 .sp
2483 The number of concurrent operations issued for the async write I/O class
2484 follows a piece-wise linear function defined by a few adjustable points.
2485 .nf
2486
2487        |              o---------| <-- zfs_vdev_async_write_max_active
2488   ^    |             /^         |
2489   |    |            / |         |
2490 active |           /  |         |
2491  I/O   |          /   |         |
2492 count  |         /    |         |
2493        |        /     |         |
2494        |-------o      |         | <-- zfs_vdev_async_write_min_active
2495       0|_______^______|_________|
2496        0%      |      |       100% of zfs_dirty_data_max
2497                |      |
2498                |      `-- zfs_vdev_async_write_active_max_dirty_percent
2499                `--------- zfs_vdev_async_write_active_min_dirty_percent
2500
2501 .fi
2502 Until the amount of dirty data exceeds a minimum percentage of the dirty
2503 data allowed in the pool, the I/O scheduler will limit the number of
2504 concurrent operations to the minimum. As that threshold is crossed, the
2505 number of concurrent operations issued increases linearly to the maximum at
2506 the specified maximum percentage of the dirty data allowed in the pool.
2507 .sp
2508 Ideally, the amount of dirty data on a busy pool will stay in the sloped
2509 part of the function between \fBzfs_vdev_async_write_active_min_dirty_percent\fR
2510 and \fBzfs_vdev_async_write_active_max_dirty_percent\fR. If it exceeds the
2511 maximum percentage, this indicates that the rate of incoming data is
2512 greater than the rate that the backend storage can handle. In this case, we
2513 must further throttle incoming writes, as described in the next section.
2514
2515 .SH ZFS TRANSACTION DELAY
2516 We delay transactions when we've determined that the backend storage
2517 isn't able to accommodate the rate of incoming writes.
2518 .sp
2519 If there is already a transaction waiting, we delay relative to when
2520 that transaction will finish waiting.  This way the calculated delay time
2521 is independent of the number of threads concurrently executing
2522 transactions.
2523 .sp
2524 If we are the only waiter, wait relative to when the transaction
2525 started, rather than the current time.  This credits the transaction for
2526 "time already served", e.g. reading indirect blocks.
2527 .sp
2528 The minimum time for a transaction to take is calculated as:
2529 .nf
2530     min_time = zfs_delay_scale * (dirty - min) / (max - dirty)
2531     min_time is then capped at 100 milliseconds.
2532 .fi
2533 .sp
2534 The delay has two degrees of freedom that can be adjusted via tunables.  The
2535 percentage of dirty data at which we start to delay is defined by
2536 \fBzfs_delay_min_dirty_percent\fR. This should typically be at or above
2537 \fBzfs_vdev_async_write_active_max_dirty_percent\fR so that we only start to
2538 delay after writing at full speed has failed to keep up with the incoming write
2539 rate. The scale of the curve is defined by \fBzfs_delay_scale\fR. Roughly speaking,
2540 this variable determines the amount of delay at the midpoint of the curve.
2541 .sp
2542 .nf
2543 delay
2544  10ms +-------------------------------------------------------------*+
2545       |                                                             *|
2546   9ms +                                                             *+
2547       |                                                             *|
2548   8ms +                                                             *+
2549       |                                                            * |
2550   7ms +                                                            * +
2551       |                                                            * |
2552   6ms +                                                            * +
2553       |                                                            * |
2554   5ms +                                                           *  +
2555       |                                                           *  |
2556   4ms +                                                           *  +
2557       |                                                           *  |
2558   3ms +                                                          *   +
2559       |                                                          *   |
2560   2ms +                                              (midpoint) *    +
2561       |                                                  |    **     |
2562   1ms +                                                  v ***       +
2563       |             zfs_delay_scale ---------->     ********         |
2564     0 +-------------------------------------*********----------------+
2565       0%                    <- zfs_dirty_data_max ->               100%
2566 .fi
2567 .sp
2568 Note that since the delay is added to the outstanding time remaining on the
2569 most recent transaction, the delay is effectively the inverse of IOPS.
2570 Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve
2571 was chosen such that small changes in the amount of accumulated dirty data
2572 in the first 3/4 of the curve yield relatively small differences in the
2573 amount of delay.
2574 .sp
2575 The effects can be easier to understand when the amount of delay is
2576 represented on a log scale:
2577 .sp
2578 .nf
2579 delay
2580 100ms +-------------------------------------------------------------++
2581       +                                                              +
2582       |                                                              |
2583       +                                                             *+
2584  10ms +                                                             *+
2585       +                                                           ** +
2586       |                                              (midpoint)  **  |
2587       +                                                  |     **    +
2588   1ms +                                                  v ****      +
2589       +             zfs_delay_scale ---------->        *****         +
2590       |                                             ****             |
2591       +                                          ****                +
2592 100us +                                        **                    +
2593       +                                       *                      +
2594       |                                      *                       |
2595       +                                     *                        +
2596  10us +                                     *                        +
2597       +                                                              +
2598       |                                                              |
2599       +                                                              +
2600       +--------------------------------------------------------------+
2601       0%                    <- zfs_dirty_data_max ->               100%
2602 .fi
2603 .sp
2604 Note here that only as the amount of dirty data approaches its limit does
2605 the delay start to increase rapidly. The goal of a properly tuned system
2606 should be to keep the amount of dirty data out of that range by first
2607 ensuring that the appropriate limits are set for the I/O scheduler to reach
2608 optimal throughput on the backend storage, and then by changing the value
2609 of \fBzfs_delay_scale\fR to increase the steepness of the curve.