]> git.proxmox.com Git - mirror_zfs.git/blame - man/man5/zfs-module-parameters.5
Document metaslab_aliquot.
[mirror_zfs.git] / man / man5 / zfs-module-parameters.5
CommitLineData
29714574
TF
1'\" te
2.\" Copyright (c) 2013 by Turbo Fredriksson <turbo@bayour.com>. All rights reserved.
3.\" The contents of this file are subject to the terms of the Common Development
4.\" and Distribution License (the "License"). You may not use this file except
5.\" in compliance with the License. You can obtain a copy of the license at
6.\" usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
7.\"
8.\" See the License for the specific language governing permissions and
9.\" limitations under the License. When distributing Covered Code, include this
10.\" CDDL HEADER in each file and include the License file at
11.\" usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this
12.\" CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your
13.\" own identifying information:
14.\" Portions Copyright [yyyy] [name of copyright owner]
15.TH ZFS-MODULE-PARAMETERS 5 "Nov 16, 2013"
16.SH NAME
17zfs\-module\-parameters \- ZFS module parameters
18.SH DESCRIPTION
19.sp
20.LP
21Description of the different parameters to the ZFS module.
22
23.SS "Module parameters"
24.sp
25.LP
26
27.sp
28.ne 2
29.na
30\fBl2arc_feed_again\fR (int)
31.ad
32.RS 12n
33Turbo L2ARC warmup
34.sp
35Use \fB1\fR for yes (default) and \fB0\fR to disable.
36.RE
37
38.sp
39.ne 2
40.na
41\fBl2arc_feed_min_ms\fR (ulong)
42.ad
43.RS 12n
44Min feed interval in milliseconds
45.sp
46Default value: \fB200\fR.
47.RE
48
49.sp
50.ne 2
51.na
52\fBl2arc_feed_secs\fR (ulong)
53.ad
54.RS 12n
55Seconds between L2ARC writing
56.sp
57Default value: \fB1\fR.
58.RE
59
60.sp
61.ne 2
62.na
63\fBl2arc_headroom\fR (ulong)
64.ad
65.RS 12n
66Number of max device writes to precache
67.sp
68Default value: \fB2\fR.
69.RE
70
71.sp
72.ne 2
73.na
74\fBl2arc_headroom_boost\fR (ulong)
75.ad
76.RS 12n
77Compressed l2arc_headroom multiplier
78.sp
79Default value: \fB200\fR.
80.RE
81
82.sp
83.ne 2
84.na
85\fBl2arc_nocompress\fR (int)
86.ad
87.RS 12n
88Skip compressing L2ARC buffers
89.sp
90Use \fB1\fR for yes and \fB0\fR for no (default).
91.RE
92
93.sp
94.ne 2
95.na
96\fBl2arc_noprefetch\fR (int)
97.ad
98.RS 12n
99Skip caching prefetched buffers
100.sp
101Use \fB1\fR for yes (default) and \fB0\fR to disable.
102.RE
103
104.sp
105.ne 2
106.na
107\fBl2arc_norw\fR (int)
108.ad
109.RS 12n
110No reads during writes
111.sp
112Use \fB1\fR for yes and \fB0\fR for no (default).
113.RE
114
115.sp
116.ne 2
117.na
118\fBl2arc_write_boost\fR (ulong)
119.ad
120.RS 12n
121Extra write bytes during device warmup
122.sp
123Default value: \fB8,388,608\fR.
124.RE
125
126.sp
127.ne 2
128.na
129\fBl2arc_write_max\fR (ulong)
130.ad
131.RS 12n
132Max write bytes per interval
133.sp
134Default value: \fB8,388,608\fR.
135.RE
136
f3a7f661
GW
137.sp
138.ne 2
139.na
140\fBmetaslab_bias_enabled\fR (int)
141.ad
142.RS 12n
143Enable metaslab group biasing based on its vdev's over- or under-utilization
144relative to the pool.
145.sp
146Use \fB1\fR for yes (default) and \fB0\fR for no.
147.RE
148
29714574
TF
149.sp
150.ne 2
151.na
aa7d06a9 152\fBmetaslab_debug_load\fR (int)
29714574
TF
153.ad
154.RS 12n
aa7d06a9
GW
155Load all metaslabs during pool import.
156.sp
157Use \fB1\fR for yes and \fB0\fR for no (default).
158.RE
159
160.sp
161.ne 2
162.na
163\fBmetaslab_debug_unload\fR (int)
164.ad
165.RS 12n
166Prevent metaslabs from being unloaded.
29714574
TF
167.sp
168Use \fB1\fR for yes and \fB0\fR for no (default).
169.RE
170
f3a7f661
GW
171.sp
172.ne 2
173.na
174\fBmetaslab_fragmentation_factor_enabled\fR (int)
175.ad
176.RS 12n
177Enable use of the fragmentation metric in computing metaslab weights.
178.sp
179Use \fB1\fR for yes (default) and \fB0\fR for no.
180.RE
181
b8bcca18
MA
182.sp
183.ne 2
184.na
185\fBmetaslabs_per_vdev\fR (int)
186.ad
187.RS 12n
188When a vdev is added, it will be divided into approximately (but no more than) this number of metaslabs.
189.sp
190Default value: \fB200\fR.
191.RE
192
f3a7f661
GW
193.sp
194.ne 2
195.na
196\fBmetaslab_preload_enabled\fR (int)
197.ad
198.RS 12n
199Enable metaslab group preloading.
200.sp
201Use \fB1\fR for yes (default) and \fB0\fR for no.
202.RE
203
204.sp
205.ne 2
206.na
207\fBmetaslab_lba_weighting_enabled\fR (int)
208.ad
209.RS 12n
210Give more weight to metaslabs with lower LBAs, assuming they have
211greater bandwidth as is typically the case on a modern constant
212angular velocity disk drive.
213.sp
214Use \fB1\fR for yes (default) and \fB0\fR for no.
215.RE
216
29714574
TF
217.sp
218.ne 2
219.na
220\fBspa_config_path\fR (charp)
221.ad
222.RS 12n
223SPA config file
224.sp
225Default value: \fB/etc/zfs/zpool.cache\fR.
226.RE
227
e8b96c60
MA
228.sp
229.ne 2
230.na
231\fBspa_asize_inflation\fR (int)
232.ad
233.RS 12n
234Multiplication factor used to estimate actual disk consumption from the
235size of data being written. The default value is a worst case estimate,
236but lower values may be valid for a given pool depending on its
237configuration. Pool administrators who understand the factors involved
238may wish to specify a more realistic inflation factor, particularly if
239they operate close to quota or capacity limits.
240.sp
241Default value: 24
242.RE
243
dea377c0
MA
244.sp
245.ne 2
246.na
247\fBspa_load_verify_data\fR (int)
248.ad
249.RS 12n
250Whether to traverse data blocks during an "extreme rewind" (\fB-X\fR)
251import. Use 0 to disable and 1 to enable.
252
253An extreme rewind import normally performs a full traversal of all
254blocks in the pool for verification. If this parameter is set to 0,
255the traversal skips non-metadata blocks. It can be toggled once the
256import has started to stop or start the traversal of non-metadata blocks.
257.sp
258Default value: 1
259.RE
260
261.sp
262.ne 2
263.na
264\fBspa_load_verify_metadata\fR (int)
265.ad
266.RS 12n
267Whether to traverse blocks during an "extreme rewind" (\fB-X\fR)
268pool import. Use 0 to disable and 1 to enable.
269
270An extreme rewind import normally performs a full traversal of all
271blocks in the pool for verification. If this parameter is set to 1,
272the traversal is not performed. It can be toggled once the import has
273started to stop or start the traversal.
274.sp
275Default value: 1
276.RE
277
278.sp
279.ne 2
280.na
281\fBspa_load_verify_maxinflight\fR (int)
282.ad
283.RS 12n
284Maximum concurrent I/Os during the traversal performed during an "extreme
285rewind" (\fB-X\fR) pool import.
286.sp
287Default value: 10000
288.RE
289
29714574
TF
290.sp
291.ne 2
292.na
293\fBzfetch_array_rd_sz\fR (ulong)
294.ad
295.RS 12n
27b293be 296If prefetching is enabled, disable prefetching for reads larger than this size.
29714574
TF
297.sp
298Default value: \fB1,048,576\fR.
299.RE
300
301.sp
302.ne 2
303.na
304\fBzfetch_block_cap\fR (uint)
305.ad
306.RS 12n
27b293be 307Max number of blocks to prefetch at a time
29714574
TF
308.sp
309Default value: \fB256\fR.
310.RE
311
312.sp
313.ne 2
314.na
315\fBzfetch_max_streams\fR (uint)
316.ad
317.RS 12n
27b293be 318Max number of streams per zfetch (prefetch streams per file).
29714574
TF
319.sp
320Default value: \fB8\fR.
321.RE
322
323.sp
324.ne 2
325.na
326\fBzfetch_min_sec_reap\fR (uint)
327.ad
328.RS 12n
27b293be 329Min time before an active prefetch stream can be reclaimed
29714574
TF
330.sp
331Default value: \fB2\fR.
332.RE
333
49ddb315
MA
334.sp
335.ne 2
336.na
337\fBzfs_arc_average_blocksize\fR (int)
338.ad
339.RS 12n
340The ARC's buffer hash table is sized based on the assumption of an average
341block size of \fBzfs_arc_average_blocksize\fR (default 8K). This works out
342to roughly 1MB of hash table per 1GB of physical memory with 8-byte pointers.
343For configurations with a known larger average block size this value can be
344increased to reduce the memory footprint.
345
346.sp
347Default value: \fB8192\fR.
348.RE
349
ca0bf58d
PS
350.sp
351.ne 2
352.na
353\fBzfs_arc_evict_batch_limit\fR (int)
354.ad
355.RS 12n
356Number ARC headers to evict per sub-list before proceding to another sub-list.
357This batch-style operation prevents entire sub-lists from being evicted at once
358but comes at a cost of additional unlocking and locking.
359.sp
360Default value: \fB10\fR.
361.RE
362
29714574
TF
363.sp
364.ne 2
365.na
366\fBzfs_arc_grow_retry\fR (int)
367.ad
368.RS 12n
369Seconds before growing arc size
370.sp
371Default value: \fB5\fR.
372.RE
373
374.sp
375.ne 2
376.na
377\fBzfs_arc_max\fR (ulong)
378.ad
379.RS 12n
380Max arc size
381.sp
382Default value: \fB0\fR.
383.RE
384
385.sp
386.ne 2
387.na
388\fBzfs_arc_memory_throttle_disable\fR (int)
389.ad
390.RS 12n
391Disable memory throttle
392.sp
393Use \fB1\fR for yes (default) and \fB0\fR to disable.
394.RE
395
396.sp
397.ne 2
398.na
399\fBzfs_arc_meta_limit\fR (ulong)
400.ad
401.RS 12n
2cbb06b5
BB
402The maximum allowed size in bytes that meta data buffers are allowed to
403consume in the ARC. When this limit is reached meta data buffers will
404be reclaimed even if the overall arc_c_max has not been reached. This
405value defaults to 0 which indicates that 3/4 of the ARC may be used
406for meta data.
29714574
TF
407.sp
408Default value: \fB0\fR.
409.RE
410
ca0bf58d
PS
411.sp
412.ne 2
413.na
414\fBzfs_arc_meta_min\fR (ulong)
415.ad
416.RS 12n
417The minimum allowed size in bytes that meta data buffers may consume in
418the ARC. This value defaults to 0 which disables a floor on the amount
419of the ARC devoted meta data.
420.sp
421Default value: \fB0\fR.
422.RE
423
29714574
TF
424.sp
425.ne 2
426.na
427\fBzfs_arc_meta_prune\fR (int)
428.ad
429.RS 12n
2cbb06b5
BB
430The number of dentries and inodes to be scanned looking for entries
431which can be dropped. This may be required when the ARC reaches the
432\fBzfs_arc_meta_limit\fR because dentries and inodes can pin buffers
433in the ARC. Increasing this value will cause to dentry and inode caches
434to be pruned more aggressively. Setting this value to 0 will disable
435pruning the inode and dentry caches.
29714574 436.sp
2cbb06b5 437Default value: \fB10,000\fR.
29714574
TF
438.RE
439
bc888666
BB
440.sp
441.ne 2
442.na
443\fBzfs_arc_meta_adjust_restarts\fR (ulong)
444.ad
445.RS 12n
446The number of restart passes to make while scanning the ARC attempting
447the free buffers in order to stay below the \fBzfs_arc_meta_limit\fR.
448This value should not need to be tuned but is available to facilitate
449performance analysis.
450.sp
451Default value: \fB4096\fR.
452.RE
453
29714574
TF
454.sp
455.ne 2
456.na
457\fBzfs_arc_min\fR (ulong)
458.ad
459.RS 12n
460Min arc size
461.sp
462Default value: \fB100\fR.
463.RE
464
465.sp
466.ne 2
467.na
468\fBzfs_arc_min_prefetch_lifespan\fR (int)
469.ad
470.RS 12n
471Min life of prefetch block
472.sp
473Default value: \fB100\fR.
474.RE
475
ca0bf58d
PS
476.sp
477.ne 2
478.na
479\fBzfs_arc_num_sublists_per_state\fR (int)
480.ad
481.RS 12n
482To allow more fine-grained locking, each ARC state contains a series
483of lists for both data and meta data objects. Locking is performed at
484the level of these "sub-lists". This parameters controls the number of
485sub-lists per ARC state.
486.sp
487Default value: 1 or the number of on-online CPUs, whichever is greater
488.RE
489
490.sp
491.ne 2
492.na
493\fBzfs_arc_overflow_shift\fR (int)
494.ad
495.RS 12n
496The ARC size is considered to be overflowing if it exceeds the current
497ARC target size (arc_c) by a threshold determined by this parameter.
498The threshold is calculated as a fraction of arc_c using the formula
499"arc_c >> \fBzfs_arc_overflow_shift\fR".
500
501The default value of 8 causes the ARC to be considered to be overflowing
502if it exceeds the target size by 1/256th (0.3%) of the target size.
503
504When the ARC is overflowing, new buffer allocations are stalled until
505the reclaim thread catches up and the overflow condition no longer exists.
506.sp
507Default value: \fB8\fR.
508.RE
509
89c8cac4
PS
510.sp
511.ne 2
512.na
513\fBzfs_arc_p_aggressive_disable\fR (int)
514.ad
515.RS 12n
516Disable aggressive arc_p growth
517.sp
518Use \fB1\fR for yes (default) and \fB0\fR to disable.
519.RE
520
62422785
PS
521.sp
522.ne 2
523.na
524\fBzfs_arc_p_dampener_disable\fR (int)
525.ad
526.RS 12n
527Disable arc_p adapt dampener
528.sp
529Use \fB1\fR for yes (default) and \fB0\fR to disable.
530.RE
531
29714574
TF
532.sp
533.ne 2
534.na
535\fBzfs_arc_shrink_shift\fR (int)
536.ad
537.RS 12n
538log2(fraction of arc to reclaim)
539.sp
540Default value: \fB5\fR.
541.RE
542
543.sp
544.ne 2
545.na
546\fBzfs_autoimport_disable\fR (int)
547.ad
548.RS 12n
27b293be 549Disable pool import at module load by ignoring the cache file (typically \fB/etc/zfs/zpool.cache\fR).
29714574 550.sp
70081096 551Use \fB1\fR for yes (default) and \fB0\fR for no.
29714574
TF
552.RE
553
554.sp
555.ne 2
556.na
557\fBzfs_dbuf_state_index\fR (int)
558.ad
559.RS 12n
560Calculate arc header index
561.sp
562Default value: \fB0\fR.
563.RE
564
565.sp
566.ne 2
567.na
568\fBzfs_deadman_enabled\fR (int)
569.ad
570.RS 12n
571Enable deadman timer
572.sp
573Use \fB1\fR for yes (default) and \fB0\fR to disable.
574.RE
575
576.sp
577.ne 2
578.na
e8b96c60 579\fBzfs_deadman_synctime_ms\fR (ulong)
29714574
TF
580.ad
581.RS 12n
e8b96c60
MA
582Expiration time in milliseconds. This value has two meanings. First it is
583used to determine when the spa_deadman() logic should fire. By default the
584spa_deadman() will fire if spa_sync() has not completed in 1000 seconds.
585Secondly, the value determines if an I/O is considered "hung". Any I/O that
586has not completed in zfs_deadman_synctime_ms is considered "hung" resulting
587in a zevent being logged.
29714574 588.sp
e8b96c60 589Default value: \fB1,000,000\fR.
29714574
TF
590.RE
591
592.sp
593.ne 2
594.na
595\fBzfs_dedup_prefetch\fR (int)
596.ad
597.RS 12n
598Enable prefetching dedup-ed blks
599.sp
0dfc7324 600Use \fB1\fR for yes and \fB0\fR to disable (default).
29714574
TF
601.RE
602
e8b96c60
MA
603.sp
604.ne 2
605.na
606\fBzfs_delay_min_dirty_percent\fR (int)
607.ad
608.RS 12n
609Start to delay each transaction once there is this amount of dirty data,
610expressed as a percentage of \fBzfs_dirty_data_max\fR.
611This value should be >= zfs_vdev_async_write_active_max_dirty_percent.
612See the section "ZFS TRANSACTION DELAY".
613.sp
614Default value: \fB60\fR.
615.RE
616
617.sp
618.ne 2
619.na
620\fBzfs_delay_scale\fR (int)
621.ad
622.RS 12n
623This controls how quickly the transaction delay approaches infinity.
624Larger values cause longer delays for a given amount of dirty data.
625.sp
626For the smoothest delay, this value should be about 1 billion divided
627by the maximum number of operations per second. This will smoothly
628handle between 10x and 1/10th this number.
629.sp
630See the section "ZFS TRANSACTION DELAY".
631.sp
632Note: \fBzfs_delay_scale\fR * \fBzfs_dirty_data_max\fR must be < 2^64.
633.sp
634Default value: \fB500,000\fR.
635.RE
636
637.sp
638.ne 2
639.na
640\fBzfs_dirty_data_max\fR (int)
641.ad
642.RS 12n
643Determines the dirty space limit in bytes. Once this limit is exceeded, new
644writes are halted until space frees up. This parameter takes precedence
645over \fBzfs_dirty_data_max_percent\fR.
646See the section "ZFS TRANSACTION DELAY".
647.sp
648Default value: 10 percent of all memory, capped at \fBzfs_dirty_data_max_max\fR.
649.RE
650
651.sp
652.ne 2
653.na
654\fBzfs_dirty_data_max_max\fR (int)
655.ad
656.RS 12n
657Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed in bytes.
658This limit is only enforced at module load time, and will be ignored if
659\fBzfs_dirty_data_max\fR is later changed. This parameter takes
660precedence over \fBzfs_dirty_data_max_max_percent\fR. See the section
661"ZFS TRANSACTION DELAY".
662.sp
663Default value: 25% of physical RAM.
664.RE
665
666.sp
667.ne 2
668.na
669\fBzfs_dirty_data_max_max_percent\fR (int)
670.ad
671.RS 12n
672Maximum allowable value of \fBzfs_dirty_data_max\fR, expressed as a
673percentage of physical RAM. This limit is only enforced at module load
674time, and will be ignored if \fBzfs_dirty_data_max\fR is later changed.
675The parameter \fBzfs_dirty_data_max_max\fR takes precedence over this
676one. See the section "ZFS TRANSACTION DELAY".
677.sp
678Default value: 25
679.RE
680
681.sp
682.ne 2
683.na
684\fBzfs_dirty_data_max_percent\fR (int)
685.ad
686.RS 12n
687Determines the dirty space limit, expressed as a percentage of all
688memory. Once this limit is exceeded, new writes are halted until space frees
689up. The parameter \fBzfs_dirty_data_max\fR takes precedence over this
690one. See the section "ZFS TRANSACTION DELAY".
691.sp
692Default value: 10%, subject to \fBzfs_dirty_data_max_max\fR.
693.RE
694
695.sp
696.ne 2
697.na
698\fBzfs_dirty_data_sync\fR (int)
699.ad
700.RS 12n
701Start syncing out a transaction group if there is at least this much dirty data.
702.sp
703Default value: \fB67,108,864\fR.
704.RE
705
36283ca2
MG
706.sp
707.ne 2
708.na
709\fBzfs_free_max_blocks\fR (ulong)
710.ad
711.RS 12n
712Maximum number of blocks freed in a single txg.
713.sp
714Default value: \fB100,000\fR.
715.RE
716
e8b96c60
MA
717.sp
718.ne 2
719.na
720\fBzfs_vdev_async_read_max_active\fR (int)
721.ad
722.RS 12n
723Maxium asynchronous read I/Os active to each device.
724See the section "ZFS I/O SCHEDULER".
725.sp
726Default value: \fB3\fR.
727.RE
728
729.sp
730.ne 2
731.na
732\fBzfs_vdev_async_read_min_active\fR (int)
733.ad
734.RS 12n
735Minimum asynchronous read I/Os active to each device.
736See the section "ZFS I/O SCHEDULER".
737.sp
738Default value: \fB1\fR.
739.RE
740
741.sp
742.ne 2
743.na
744\fBzfs_vdev_async_write_active_max_dirty_percent\fR (int)
745.ad
746.RS 12n
747When the pool has more than
748\fBzfs_vdev_async_write_active_max_dirty_percent\fR dirty data, use
749\fBzfs_vdev_async_write_max_active\fR to limit active async writes. If
750the dirty data is between min and max, the active I/O limit is linearly
751interpolated. See the section "ZFS I/O SCHEDULER".
752.sp
753Default value: \fB60\fR.
754.RE
755
756.sp
757.ne 2
758.na
759\fBzfs_vdev_async_write_active_min_dirty_percent\fR (int)
760.ad
761.RS 12n
762When the pool has less than
763\fBzfs_vdev_async_write_active_min_dirty_percent\fR dirty data, use
764\fBzfs_vdev_async_write_min_active\fR to limit active async writes. If
765the dirty data is between min and max, the active I/O limit is linearly
766interpolated. See the section "ZFS I/O SCHEDULER".
767.sp
768Default value: \fB30\fR.
769.RE
770
771.sp
772.ne 2
773.na
774\fBzfs_vdev_async_write_max_active\fR (int)
775.ad
776.RS 12n
777Maxium asynchronous write I/Os active to each device.
778See the section "ZFS I/O SCHEDULER".
779.sp
780Default value: \fB10\fR.
781.RE
782
783.sp
784.ne 2
785.na
786\fBzfs_vdev_async_write_min_active\fR (int)
787.ad
788.RS 12n
789Minimum asynchronous write I/Os active to each device.
790See the section "ZFS I/O SCHEDULER".
791.sp
792Default value: \fB1\fR.
793.RE
794
795.sp
796.ne 2
797.na
798\fBzfs_vdev_max_active\fR (int)
799.ad
800.RS 12n
801The maximum number of I/Os active to each device. Ideally, this will be >=
802the sum of each queue's max_active. It must be at least the sum of each
803queue's min_active. See the section "ZFS I/O SCHEDULER".
804.sp
805Default value: \fB1,000\fR.
806.RE
807
808.sp
809.ne 2
810.na
811\fBzfs_vdev_scrub_max_active\fR (int)
812.ad
813.RS 12n
814Maxium scrub I/Os active to each device.
815See the section "ZFS I/O SCHEDULER".
816.sp
817Default value: \fB2\fR.
818.RE
819
820.sp
821.ne 2
822.na
823\fBzfs_vdev_scrub_min_active\fR (int)
824.ad
825.RS 12n
826Minimum scrub I/Os active to each device.
827See the section "ZFS I/O SCHEDULER".
828.sp
829Default value: \fB1\fR.
830.RE
831
832.sp
833.ne 2
834.na
835\fBzfs_vdev_sync_read_max_active\fR (int)
836.ad
837.RS 12n
838Maxium synchronous read I/Os active to each device.
839See the section "ZFS I/O SCHEDULER".
840.sp
841Default value: \fB10\fR.
842.RE
843
844.sp
845.ne 2
846.na
847\fBzfs_vdev_sync_read_min_active\fR (int)
848.ad
849.RS 12n
850Minimum synchronous read I/Os active to each device.
851See the section "ZFS I/O SCHEDULER".
852.sp
853Default value: \fB10\fR.
854.RE
855
856.sp
857.ne 2
858.na
859\fBzfs_vdev_sync_write_max_active\fR (int)
860.ad
861.RS 12n
862Maxium synchronous write I/Os active to each device.
863See the section "ZFS I/O SCHEDULER".
864.sp
865Default value: \fB10\fR.
866.RE
867
868.sp
869.ne 2
870.na
871\fBzfs_vdev_sync_write_min_active\fR (int)
872.ad
873.RS 12n
874Minimum synchronous write I/Os active to each device.
875See the section "ZFS I/O SCHEDULER".
876.sp
877Default value: \fB10\fR.
878.RE
879
29714574
TF
880.sp
881.ne 2
882.na
883\fBzfs_disable_dup_eviction\fR (int)
884.ad
885.RS 12n
886Disable duplicate buffer eviction
887.sp
888Use \fB1\fR for yes and \fB0\fR for no (default).
889.RE
890
891.sp
892.ne 2
893.na
894\fBzfs_expire_snapshot\fR (int)
895.ad
896.RS 12n
897Seconds to expire .zfs/snapshot
898.sp
899Default value: \fB300\fR.
900.RE
901
902.sp
903.ne 2
904.na
905\fBzfs_flags\fR (int)
906.ad
907.RS 12n
33b6dbbc
NB
908Set additional debugging flags. The following flags may be bitwise-or'd
909together.
910.sp
911.TS
912box;
913rB lB
914lB lB
915r l.
916Value Symbolic Name
917 Description
918_
9191 ZFS_DEBUG_DPRINTF
920 Enable dprintf entries in the debug log.
921_
9222 ZFS_DEBUG_DBUF_VERIFY *
923 Enable extra dbuf verifications.
924_
9254 ZFS_DEBUG_DNODE_VERIFY *
926 Enable extra dnode verifications.
927_
9288 ZFS_DEBUG_SNAPNAMES
929 Enable snapshot name verification.
930_
93116 ZFS_DEBUG_MODIFY
932 Check for illegally modified ARC buffers.
933_
93432 ZFS_DEBUG_SPA
935 Enable spa_dbgmsg entries in the debug log.
936_
93764 ZFS_DEBUG_ZIO_FREE
938 Enable verification of block frees.
939_
940128 ZFS_DEBUG_HISTOGRAM_VERIFY
941 Enable extra spacemap histogram verifications.
942.TE
943.sp
944* Requires debug build.
29714574 945.sp
33b6dbbc 946Default value: \fB0\fR.
29714574
TF
947.RE
948
fbeddd60
MA
949.sp
950.ne 2
951.na
952\fBzfs_free_leak_on_eio\fR (int)
953.ad
954.RS 12n
955If destroy encounters an EIO while reading metadata (e.g. indirect
956blocks), space referenced by the missing metadata can not be freed.
957Normally this causes the background destroy to become "stalled", as
958it is unable to make forward progress. While in this stalled state,
959all remaining space to free from the error-encountering filesystem is
960"temporarily leaked". Set this flag to cause it to ignore the EIO,
961permanently leak the space from indirect blocks that can not be read,
962and continue to free everything else that it can.
963
964The default, "stalling" behavior is useful if the storage partially
965fails (i.e. some but not all i/os fail), and then later recovers. In
966this case, we will be able to continue pool operations while it is
967partially failed, and when it recovers, we can continue to free the
968space, with no leaks. However, note that this case is actually
969fairly rare.
970
971Typically pools either (a) fail completely (but perhaps temporarily,
972e.g. a top-level vdev going offline), or (b) have localized,
973permanent errors (e.g. disk returns the wrong data due to bit flip or
974firmware bug). In case (a), this setting does not matter because the
975pool will be suspended and the sync thread will not be able to make
976forward progress regardless. In case (b), because the error is
977permanent, the best we can do is leak the minimum amount of space,
978which is what setting this flag will do. Therefore, it is reasonable
979for this flag to normally be set, but we chose the more conservative
980approach of not setting it, so that there is no possibility of
981leaking space in the "partial temporary" failure case.
982.sp
983Default value: \fB0\fR.
984.RE
985
29714574
TF
986.sp
987.ne 2
988.na
989\fBzfs_free_min_time_ms\fR (int)
990.ad
991.RS 12n
992Min millisecs to free per txg
993.sp
994Default value: \fB1,000\fR.
995.RE
996
997.sp
998.ne 2
999.na
1000\fBzfs_immediate_write_sz\fR (long)
1001.ad
1002.RS 12n
1003Largest data block to write to zil
1004.sp
1005Default value: \fB32,768\fR.
1006.RE
1007
f1512ee6
MA
1008.sp
1009.ne 2
1010.na
1011\fBzfs_max_recordsize\fR (int)
1012.ad
1013.RS 12n
1014We currently support block sizes from 512 bytes to 16MB. The benefits of
1015larger blocks, and thus larger IO, need to be weighed against the cost of
1016COWing a giant block to modify one byte. Additionally, very large blocks
1017can have an impact on i/o latency, and also potentially on the memory
1018allocator. Therefore, we do not allow the recordsize to be set larger than
1019zfs_max_recordsize (default 1MB). Larger blocks can be created by changing
1020this tunable, and pools with larger blocks can always be imported and used,
1021regardless of this setting.
1022.sp
1023Default value: \fB1,048,576\fR.
1024.RE
1025
29714574
TF
1026.sp
1027.ne 2
1028.na
1029\fBzfs_mdcomp_disable\fR (int)
1030.ad
1031.RS 12n
1032Disable meta data compression
1033.sp
1034Use \fB1\fR for yes and \fB0\fR for no (default).
1035.RE
1036
f3a7f661
GW
1037.sp
1038.ne 2
1039.na
1040\fBzfs_metaslab_fragmentation_threshold\fR (int)
1041.ad
1042.RS 12n
1043Allow metaslabs to keep their active state as long as their fragmentation
1044percentage is less than or equal to this value. An active metaslab that
1045exceeds this threshold will no longer keep its active status allowing
1046better metaslabs to be selected.
1047.sp
1048Default value: \fB70\fR.
1049.RE
1050
1051.sp
1052.ne 2
1053.na
1054\fBzfs_mg_fragmentation_threshold\fR (int)
1055.ad
1056.RS 12n
1057Metaslab groups are considered eligible for allocations if their
1058fragmenation metric (measured as a percentage) is less than or equal to
1059this value. If a metaslab group exceeds this threshold then it will be
1060skipped unless all metaslab groups within the metaslab class have also
1061crossed this threshold.
1062.sp
1063Default value: \fB85\fR.
1064.RE
1065
f4a4046b
TC
1066.sp
1067.ne 2
1068.na
1069\fBzfs_mg_noalloc_threshold\fR (int)
1070.ad
1071.RS 12n
1072Defines a threshold at which metaslab groups should be eligible for
1073allocations. The value is expressed as a percentage of free space
1074beyond which a metaslab group is always eligible for allocations.
1075If a metaslab group's free space is less than or equal to the
1076the threshold, the allocator will avoid allocating to that group
1077unless all groups in the pool have reached the threshold. Once all
1078groups have reached the threshold, all groups are allowed to accept
1079allocations. The default value of 0 disables the feature and causes
1080all metaslab groups to be eligible for allocations.
1081
1082This parameter allows to deal with pools having heavily imbalanced
1083vdevs such as would be the case when a new vdev has been added.
1084Setting the threshold to a non-zero percentage will stop allocations
1085from being made to vdevs that aren't filled to the specified percentage
1086and allow lesser filled vdevs to acquire more allocations than they
1087otherwise would under the old \fBzfs_mg_alloc_failures\fR facility.
1088.sp
1089Default value: \fB0\fR.
1090.RE
1091
29714574
TF
1092.sp
1093.ne 2
1094.na
1095\fBzfs_no_scrub_io\fR (int)
1096.ad
1097.RS 12n
1098Set for no scrub I/O
1099.sp
1100Use \fB1\fR for yes and \fB0\fR for no (default).
1101.RE
1102
1103.sp
1104.ne 2
1105.na
1106\fBzfs_no_scrub_prefetch\fR (int)
1107.ad
1108.RS 12n
1109Set for no scrub prefetching
1110.sp
1111Use \fB1\fR for yes and \fB0\fR for no (default).
1112.RE
1113
29714574
TF
1114.sp
1115.ne 2
1116.na
1117\fBzfs_nocacheflush\fR (int)
1118.ad
1119.RS 12n
1120Disable cache flushes
1121.sp
1122Use \fB1\fR for yes and \fB0\fR for no (default).
1123.RE
1124
1125.sp
1126.ne 2
1127.na
1128\fBzfs_nopwrite_enabled\fR (int)
1129.ad
1130.RS 12n
1131Enable NOP writes
1132.sp
1133Use \fB1\fR for yes (default) and \fB0\fR to disable.
1134.RE
1135
1136.sp
1137.ne 2
1138.na
b738bc5a 1139\fBzfs_pd_bytes_max\fR (int)
29714574
TF
1140.ad
1141.RS 12n
b738bc5a 1142The number of bytes which should be prefetched.
29714574 1143.sp
74aa2ba2 1144Default value: \fB52,428,800\fR.
29714574
TF
1145.RE
1146
1147.sp
1148.ne 2
1149.na
1150\fBzfs_prefetch_disable\fR (int)
1151.ad
1152.RS 12n
1153Disable all ZFS prefetching
1154.sp
1155Use \fB1\fR for yes and \fB0\fR for no (default).
1156.RE
1157
1158.sp
1159.ne 2
1160.na
1161\fBzfs_read_chunk_size\fR (long)
1162.ad
1163.RS 12n
1164Bytes to read per chunk
1165.sp
1166Default value: \fB1,048,576\fR.
1167.RE
1168
1169.sp
1170.ne 2
1171.na
1172\fBzfs_read_history\fR (int)
1173.ad
1174.RS 12n
1175Historic statistics for the last N reads
1176.sp
1177Default value: \fB0\fR.
1178.RE
1179
1180.sp
1181.ne 2
1182.na
1183\fBzfs_read_history_hits\fR (int)
1184.ad
1185.RS 12n
1186Include cache hits in read history
1187.sp
1188Use \fB1\fR for yes and \fB0\fR for no (default).
1189.RE
1190
1191.sp
1192.ne 2
1193.na
1194\fBzfs_recover\fR (int)
1195.ad
1196.RS 12n
1197Set to attempt to recover from fatal errors. This should only be used as a
1198last resort, as it typically results in leaked space, or worse.
1199.sp
1200Use \fB1\fR for yes and \fB0\fR for no (default).
1201.RE
1202
1203.sp
1204.ne 2
1205.na
1206\fBzfs_resilver_delay\fR (int)
1207.ad
1208.RS 12n
27b293be
TC
1209Number of ticks to delay prior to issuing a resilver I/O operation when
1210a non-resilver or non-scrub I/O operation has occurred within the past
1211\fBzfs_scan_idle\fR ticks.
29714574
TF
1212.sp
1213Default value: \fB2\fR.
1214.RE
1215
1216.sp
1217.ne 2
1218.na
1219\fBzfs_resilver_min_time_ms\fR (int)
1220.ad
1221.RS 12n
1222Min millisecs to resilver per txg
1223.sp
1224Default value: \fB3,000\fR.
1225.RE
1226
1227.sp
1228.ne 2
1229.na
1230\fBzfs_scan_idle\fR (int)
1231.ad
1232.RS 12n
27b293be
TC
1233Idle window in clock ticks. During a scrub or a resilver, if
1234a non-scrub or non-resilver I/O operation has occurred during this
1235window, the next scrub or resilver operation is delayed by, respectively
1236\fBzfs_scrub_delay\fR or \fBzfs_resilver_delay\fR ticks.
29714574
TF
1237.sp
1238Default value: \fB50\fR.
1239.RE
1240
1241.sp
1242.ne 2
1243.na
1244\fBzfs_scan_min_time_ms\fR (int)
1245.ad
1246.RS 12n
1247Min millisecs to scrub per txg
1248.sp
1249Default value: \fB1,000\fR.
1250.RE
1251
1252.sp
1253.ne 2
1254.na
1255\fBzfs_scrub_delay\fR (int)
1256.ad
1257.RS 12n
27b293be
TC
1258Number of ticks to delay prior to issuing a scrub I/O operation when
1259a non-scrub or non-resilver I/O operation has occurred within the past
1260\fBzfs_scan_idle\fR ticks.
29714574
TF
1261.sp
1262Default value: \fB4\fR.
1263.RE
1264
fd8febbd
TF
1265.sp
1266.ne 2
1267.na
1268\fBzfs_send_corrupt_data\fR (int)
1269.ad
1270.RS 12n
1271Allow to send corrupt data (ignore read/checksum errors when sending data)
1272.sp
1273Use \fB1\fR for yes and \fB0\fR for no (default).
1274.RE
1275
29714574
TF
1276.sp
1277.ne 2
1278.na
1279\fBzfs_sync_pass_deferred_free\fR (int)
1280.ad
1281.RS 12n
1282Defer frees starting in this pass
1283.sp
1284Default value: \fB2\fR.
1285.RE
1286
1287.sp
1288.ne 2
1289.na
1290\fBzfs_sync_pass_dont_compress\fR (int)
1291.ad
1292.RS 12n
1293Don't compress starting in this pass
1294.sp
1295Default value: \fB5\fR.
1296.RE
1297
1298.sp
1299.ne 2
1300.na
1301\fBzfs_sync_pass_rewrite\fR (int)
1302.ad
1303.RS 12n
1304Rewrite new bps starting in this pass
1305.sp
1306Default value: \fB2\fR.
1307.RE
1308
1309.sp
1310.ne 2
1311.na
1312\fBzfs_top_maxinflight\fR (int)
1313.ad
1314.RS 12n
27b293be 1315Max I/Os per top-level vdev during scrub or resilver operations.
29714574
TF
1316.sp
1317Default value: \fB32\fR.
1318.RE
1319
1320.sp
1321.ne 2
1322.na
1323\fBzfs_txg_history\fR (int)
1324.ad
1325.RS 12n
1326Historic statistics for the last N txgs
1327.sp
1328Default value: \fB0\fR.
1329.RE
1330
29714574
TF
1331.sp
1332.ne 2
1333.na
1334\fBzfs_txg_timeout\fR (int)
1335.ad
1336.RS 12n
1337Max seconds worth of delta per txg
1338.sp
1339Default value: \fB5\fR.
1340.RE
1341
1342.sp
1343.ne 2
1344.na
1345\fBzfs_vdev_aggregation_limit\fR (int)
1346.ad
1347.RS 12n
1348Max vdev I/O aggregation size
1349.sp
1350Default value: \fB131,072\fR.
1351.RE
1352
1353.sp
1354.ne 2
1355.na
1356\fBzfs_vdev_cache_bshift\fR (int)
1357.ad
1358.RS 12n
1359Shift size to inflate reads too
1360.sp
1361Default value: \fB16\fR.
1362.RE
1363
1364.sp
1365.ne 2
1366.na
1367\fBzfs_vdev_cache_max\fR (int)
1368.ad
1369.RS 12n
1370Inflate reads small than max
1371.RE
1372
1373.sp
1374.ne 2
1375.na
1376\fBzfs_vdev_cache_size\fR (int)
1377.ad
1378.RS 12n
1379Total size of the per-disk cache
1380.sp
1381Default value: \fB0\fR.
1382.RE
1383
29714574
TF
1384.sp
1385.ne 2
1386.na
1387\fBzfs_vdev_mirror_switch_us\fR (int)
1388.ad
1389.RS 12n
1390Switch mirrors every N usecs
1391.sp
1392Default value: \fB10,000\fR.
1393.RE
1394
29714574
TF
1395.sp
1396.ne 2
1397.na
1398\fBzfs_vdev_read_gap_limit\fR (int)
1399.ad
1400.RS 12n
1401Aggregate read I/O over gap
1402.sp
1403Default value: \fB32,768\fR.
1404.RE
1405
1406.sp
1407.ne 2
1408.na
1409\fBzfs_vdev_scheduler\fR (charp)
1410.ad
1411.RS 12n
1412I/O scheduler
1413.sp
1414Default value: \fBnoop\fR.
1415.RE
1416
29714574
TF
1417.sp
1418.ne 2
1419.na
1420\fBzfs_vdev_write_gap_limit\fR (int)
1421.ad
1422.RS 12n
1423Aggregate write I/O over gap
1424.sp
1425Default value: \fB4,096\fR.
1426.RE
1427
29714574
TF
1428.sp
1429.ne 2
1430.na
1431\fBzfs_zevent_cols\fR (int)
1432.ad
1433.RS 12n
1434Max event column width
1435.sp
1436Default value: \fB80\fR.
1437.RE
1438
1439.sp
1440.ne 2
1441.na
1442\fBzfs_zevent_console\fR (int)
1443.ad
1444.RS 12n
1445Log events to the console
1446.sp
1447Use \fB1\fR for yes and \fB0\fR for no (default).
1448.RE
1449
1450.sp
1451.ne 2
1452.na
1453\fBzfs_zevent_len_max\fR (int)
1454.ad
1455.RS 12n
1456Max event queue length
1457.sp
1458Default value: \fB0\fR.
1459.RE
1460
1461.sp
1462.ne 2
1463.na
1464\fBzil_replay_disable\fR (int)
1465.ad
1466.RS 12n
1467Disable intent logging replay
1468.sp
1469Use \fB1\fR for yes and \fB0\fR for no (default).
1470.RE
1471
1472.sp
1473.ne 2
1474.na
1475\fBzil_slog_limit\fR (ulong)
1476.ad
1477.RS 12n
1478Max commit bytes to separate log device
1479.sp
1480Default value: \fB1,048,576\fR.
1481.RE
1482
29714574
TF
1483.sp
1484.ne 2
1485.na
1486\fBzio_delay_max\fR (int)
1487.ad
1488.RS 12n
1489Max zio millisec delay before posting event
1490.sp
1491Default value: \fB30,000\fR.
1492.RE
1493
29714574
TF
1494.sp
1495.ne 2
1496.na
1497\fBzio_requeue_io_start_cut_in_line\fR (int)
1498.ad
1499.RS 12n
1500Prioritize requeued I/O
1501.sp
1502Default value: \fB0\fR.
1503.RE
1504
1505.sp
1506.ne 2
1507.na
1508\fBzvol_inhibit_dev\fR (uint)
1509.ad
1510.RS 12n
1511Do not create zvol device nodes
1512.sp
1513Use \fB1\fR for yes and \fB0\fR for no (default).
1514.RE
1515
1516.sp
1517.ne 2
1518.na
1519\fBzvol_major\fR (uint)
1520.ad
1521.RS 12n
1522Major number for zvol device
1523.sp
1524Default value: \fB230\fR.
1525.RE
1526
1527.sp
1528.ne 2
1529.na
1530\fBzvol_max_discard_blocks\fR (ulong)
1531.ad
1532.RS 12n
1533Max number of blocks to discard at once
1534.sp
1535Default value: \fB16,384\fR.
1536.RE
1537
1538.sp
1539.ne 2
1540.na
1541\fBzvol_threads\fR (uint)
1542.ad
1543.RS 12n
1544Number of threads for zvol device
1545.sp
1546Default value: \fB32\fR.
1547.RE
1548
e8b96c60
MA
1549.SH ZFS I/O SCHEDULER
1550ZFS issues I/O operations to leaf vdevs to satisfy and complete I/Os.
1551The I/O scheduler determines when and in what order those operations are
1552issued. The I/O scheduler divides operations into five I/O classes
1553prioritized in the following order: sync read, sync write, async read,
1554async write, and scrub/resilver. Each queue defines the minimum and
1555maximum number of concurrent operations that may be issued to the
1556device. In addition, the device has an aggregate maximum,
1557\fBzfs_vdev_max_active\fR. Note that the sum of the per-queue minimums
1558must not exceed the aggregate maximum. If the sum of the per-queue
1559maximums exceeds the aggregate maximum, then the number of active I/Os
1560may reach \fBzfs_vdev_max_active\fR, in which case no further I/Os will
1561be issued regardless of whether all per-queue minimums have been met.
1562.sp
1563For many physical devices, throughput increases with the number of
1564concurrent operations, but latency typically suffers. Further, physical
1565devices typically have a limit at which more concurrent operations have no
1566effect on throughput or can actually cause it to decrease.
1567.sp
1568The scheduler selects the next operation to issue by first looking for an
1569I/O class whose minimum has not been satisfied. Once all are satisfied and
1570the aggregate maximum has not been hit, the scheduler looks for classes
1571whose maximum has not been satisfied. Iteration through the I/O classes is
1572done in the order specified above. No further operations are issued if the
1573aggregate maximum number of concurrent operations has been hit or if there
1574are no operations queued for an I/O class that has not hit its maximum.
1575Every time an I/O is queued or an operation completes, the I/O scheduler
1576looks for new operations to issue.
1577.sp
1578In general, smaller max_active's will lead to lower latency of synchronous
1579operations. Larger max_active's may lead to higher overall throughput,
1580depending on underlying storage.
1581.sp
1582The ratio of the queues' max_actives determines the balance of performance
1583between reads, writes, and scrubs. E.g., increasing
1584\fBzfs_vdev_scrub_max_active\fR will cause the scrub or resilver to complete
1585more quickly, but reads and writes to have higher latency and lower throughput.
1586.sp
1587All I/O classes have a fixed maximum number of outstanding operations
1588except for the async write class. Asynchronous writes represent the data
1589that is committed to stable storage during the syncing stage for
1590transaction groups. Transaction groups enter the syncing state
1591periodically so the number of queued async writes will quickly burst up
1592and then bleed down to zero. Rather than servicing them as quickly as
1593possible, the I/O scheduler changes the maximum number of active async
1594write I/Os according to the amount of dirty data in the pool. Since
1595both throughput and latency typically increase with the number of
1596concurrent operations issued to physical devices, reducing the
1597burstiness in the number of concurrent operations also stabilizes the
1598response time of operations from other -- and in particular synchronous
1599-- queues. In broad strokes, the I/O scheduler will issue more
1600concurrent operations from the async write queue as there's more dirty
1601data in the pool.
1602.sp
1603Async Writes
1604.sp
1605The number of concurrent operations issued for the async write I/O class
1606follows a piece-wise linear function defined by a few adjustable points.
1607.nf
1608
1609 | o---------| <-- zfs_vdev_async_write_max_active
1610 ^ | /^ |
1611 | | / | |
1612active | / | |
1613 I/O | / | |
1614count | / | |
1615 | / | |
1616 |-------o | | <-- zfs_vdev_async_write_min_active
1617 0|_______^______|_________|
1618 0% | | 100% of zfs_dirty_data_max
1619 | |
1620 | `-- zfs_vdev_async_write_active_max_dirty_percent
1621 `--------- zfs_vdev_async_write_active_min_dirty_percent
1622
1623.fi
1624Until the amount of dirty data exceeds a minimum percentage of the dirty
1625data allowed in the pool, the I/O scheduler will limit the number of
1626concurrent operations to the minimum. As that threshold is crossed, the
1627number of concurrent operations issued increases linearly to the maximum at
1628the specified maximum percentage of the dirty data allowed in the pool.
1629.sp
1630Ideally, the amount of dirty data on a busy pool will stay in the sloped
1631part of the function between \fBzfs_vdev_async_write_active_min_dirty_percent\fR
1632and \fBzfs_vdev_async_write_active_max_dirty_percent\fR. If it exceeds the
1633maximum percentage, this indicates that the rate of incoming data is
1634greater than the rate that the backend storage can handle. In this case, we
1635must further throttle incoming writes, as described in the next section.
1636
1637.SH ZFS TRANSACTION DELAY
1638We delay transactions when we've determined that the backend storage
1639isn't able to accommodate the rate of incoming writes.
1640.sp
1641If there is already a transaction waiting, we delay relative to when
1642that transaction will finish waiting. This way the calculated delay time
1643is independent of the number of threads concurrently executing
1644transactions.
1645.sp
1646If we are the only waiter, wait relative to when the transaction
1647started, rather than the current time. This credits the transaction for
1648"time already served", e.g. reading indirect blocks.
1649.sp
1650The minimum time for a transaction to take is calculated as:
1651.nf
1652 min_time = zfs_delay_scale * (dirty - min) / (max - dirty)
1653 min_time is then capped at 100 milliseconds.
1654.fi
1655.sp
1656The delay has two degrees of freedom that can be adjusted via tunables. The
1657percentage of dirty data at which we start to delay is defined by
1658\fBzfs_delay_min_dirty_percent\fR. This should typically be at or above
1659\fBzfs_vdev_async_write_active_max_dirty_percent\fR so that we only start to
1660delay after writing at full speed has failed to keep up with the incoming write
1661rate. The scale of the curve is defined by \fBzfs_delay_scale\fR. Roughly speaking,
1662this variable determines the amount of delay at the midpoint of the curve.
1663.sp
1664.nf
1665delay
1666 10ms +-------------------------------------------------------------*+
1667 | *|
1668 9ms + *+
1669 | *|
1670 8ms + *+
1671 | * |
1672 7ms + * +
1673 | * |
1674 6ms + * +
1675 | * |
1676 5ms + * +
1677 | * |
1678 4ms + * +
1679 | * |
1680 3ms + * +
1681 | * |
1682 2ms + (midpoint) * +
1683 | | ** |
1684 1ms + v *** +
1685 | zfs_delay_scale ----------> ******** |
1686 0 +-------------------------------------*********----------------+
1687 0% <- zfs_dirty_data_max -> 100%
1688.fi
1689.sp
1690Note that since the delay is added to the outstanding time remaining on the
1691most recent transaction, the delay is effectively the inverse of IOPS.
1692Here the midpoint of 500us translates to 2000 IOPS. The shape of the curve
1693was chosen such that small changes in the amount of accumulated dirty data
1694in the first 3/4 of the curve yield relatively small differences in the
1695amount of delay.
1696.sp
1697The effects can be easier to understand when the amount of delay is
1698represented on a log scale:
1699.sp
1700.nf
1701delay
1702100ms +-------------------------------------------------------------++
1703 + +
1704 | |
1705 + *+
1706 10ms + *+
1707 + ** +
1708 | (midpoint) ** |
1709 + | ** +
1710 1ms + v **** +
1711 + zfs_delay_scale ----------> ***** +
1712 | **** |
1713 + **** +
1714100us + ** +
1715 + * +
1716 | * |
1717 + * +
1718 10us + * +
1719 + +
1720 | |
1721 + +
1722 +--------------------------------------------------------------+
1723 0% <- zfs_dirty_data_max -> 100%
1724.fi
1725.sp
1726Note here that only as the amount of dirty data approaches its limit does
1727the delay start to increase rapidly. The goal of a properly tuned system
1728should be to keep the amount of dirty data out of that range by first
1729ensuring that the appropriate limits are set for the I/O scheduler to reach
1730optimal throughput on the backend storage, and then by changing the value
1731of \fBzfs_delay_scale\fR to increase the steepness of the curve.