Skip to content

ZFS 2.3.0 ignores zfs_arc_max, exhausts system memory #17052

Open
@brian-maloney

Description

@brian-maloney

System information

Type Version/Name
Distribution Name Arch Linux
Distribution Version Rolling Release
Kernel Version 6.12.13
Architecture x86_64
OpenZFS Version 2.3.0

Describe the problem you're observing

Possibly a duplicate of #16325, but I didn't see the behavior with the versions listed in that bug.

After upgrading from kernel 6.6.63 with ZFS 2.2.6 to kernel 6.12.13 with ZFS 2.3.0, I am experiencing issues with ARC memory utilization when my system's daily backups occur. My system has 16GB of RAM and I have zfs_arc_max set to 2147483648 (2 GiB). When the backup occurs now, the ARC grows to a large size and the system locks up due to memory exhaustion.

I can help the system get through the backup using /proc/sys/vm/drop_caches to clear the cache manually. I'm attempting to tune other ZFS settings to see if there's another way around it but I've never seen it exceed zfs_arc_max by this much before.

Describe how to reproduce the problem

This is reproducible any time I run a backup task.

Include any warning/errors/backtraces from the system logs

Here's an arc_summary -d run exhibiting the issue:


------------------------------------------------------------------------
ZFS Subsystem Report                            Wed Feb 12 14:34:22 2025
Linux 6.12.13-1-lts                                              2.3.0-1
Machine: industry (x86_64)                                       2.3.0-1

ARC status:
        Total memory size:                                      15.6 GiB
        Min target size:                                3.1 %  499.6 MiB
        Max target size:                               12.8 %    2.0 GiB
        Target size (adaptive):                       229.6 %    2.0 GiB
        Current size:                                 229.6 %    4.6 GiB
        Free memory size:                                        1.4 GiB
        Available memory size:                                 804.8 MiB

ARC structural breakdown (current size):                         4.6 GiB
        Compressed size:                               47.5 %    2.2 GiB
        Overhead size:                                 26.0 %    1.2 GiB
        Bonus size:                                     9.8 %  459.5 MiB
        Dnode size:                                    11.2 %  526.9 MiB
        Dbuf size:                                      4.9 %  229.5 MiB
        Header size:                                    0.6 %   29.1 MiB
        L2 header size:                                 0.0 %    0 Bytes
        ABD chunk waste size:                         < 0.1 %  148.0 KiB

ARC types breakdown (compressed + overhead):                     3.4 GiB
        Data size:                                      2.5 %   84.8 MiB
        Metadata size:                                 97.5 %    3.3 GiB

ARC states breakdown (compressed + overhead):                    3.4 GiB
        Anonymous data size:                            0.3 %   11.3 MiB
        Anonymous metadata size:                      < 0.1 %  942.0 KiB
        MFU data target:                               35.3 %    1.2 GiB
        MFU data size:                                  1.9 %   65.5 MiB
        MFU evictable data size:                        0.1 %    2.5 MiB
        MFU ghost data size:                                   460.4 MiB
        MFU metadata target:                           13.4 %  461.9 MiB
        MFU metadata size:                             80.3 %    2.7 GiB
        MFU evictable metadata size:                  < 0.1 %   56.0 KiB
        MFU ghost metadata size:                               329.7 MiB
        MRU data target:                               36.6 %    1.2 GiB
        MRU data size:                                  0.2 %    8.1 MiB
        MRU evictable data size:                        0.0 %    0 Bytes
        MRU ghost data size:                                   915.5 MiB
        MRU metadata target:                           14.8 %  511.6 MiB
        MRU metadata size:                             17.2 %  595.5 MiB
        MRU evictable metadata size:                  < 0.1 %  176.0 KiB
        MRU ghost metadata size:                               191.4 MiB
        Uncached data size:                             0.0 %    0 Bytes
        Uncached metadata size:                         0.0 %    0 Bytes

ARC hash breakdown:
        Elements:                                                 117.1k
        Collisions:                                                14.2k
        Chain max:                                                     3
        Chains:                                                     3.2k

ARC misc:
        Memory throttles:                                              0
        Memory direct reclaims:                                        0
        Memory indirect reclaims:                                      0
        Deleted:                                                  169.2k
        Mutex misses:                                               9.2k
        Eviction skips:                                            14.3M
        Eviction skips due to L2 writes:                               0
        L2 cached evictions:                                     0 Bytes
        L2 eligible evictions:                                   4.7 GiB
        L2 eligible MFU evictions:                     19.0 %  916.8 MiB
        L2 eligible MRU evictions:                     81.0 %    3.8 GiB
        L2 ineligible evictions:                               716.9 MiB

ARC total accesses:                                                10.1M
        Total hits:                                    96.8 %       9.8M
        Total I/O hits:                                 0.3 %      26.7k
        Total misses:                                   3.0 %     300.4k

ARC demand data accesses:                              63.7 %       6.4M
        Demand data hits:                              97.3 %       6.3M
        Demand data I/O hits:                         < 0.1 %       3.2k
        Demand data misses:                             2.7 %     172.7k

ARC demand metadata accesses:                          35.1 %       3.5M
        Demand metadata hits:                          99.2 %       3.5M
        Demand metadata I/O hits:                       0.3 %       9.7k
        Demand metadata misses:                         0.5 %      18.6k

ARC prefetch data accesses:                             0.3 %      26.6k
        Prefetch data hits:                             5.4 %       1.4k
        Prefetch data I/O hits:                       < 0.1 %          5
        Prefetch data misses:                          94.6 %      25.2k

ARC prefetch metadata accesses:                         1.0 %      99.5k
        Prefetch metadata hits:                         1.8 %       1.8k
        Prefetch metadata I/O hits:                    13.8 %      13.8k
        Prefetch metadata misses:                      84.4 %      83.9k

ARC predictive prefetches:                             99.9 %     125.9k
        Demand hits after predictive:                  62.2 %      78.3k
        Demand I/O hits after predictive:              14.7 %      18.6k
        Never demanded after predictive:               23.0 %      29.0k

ARC prescient prefetches:                               0.1 %        182
        Demand hits after prescient:                   65.4 %        119
        Demand I/O hits after prescient:               34.6 %         63
        Never demanded after prescient:                 0.0 %          0

ARC states hits of all accesses:
        Most frequently used (MFU):                    84.7 %       8.6M
        Most recently used (MRU):                      12.1 %       1.2M
        Most frequently used (MFU) ghost:               0.1 %       6.6k
        Most recently used (MRU) ghost:                 0.1 %      12.6k
        Uncached:                                       0.0 %          0

DMU predictive prefetcher calls:                                    2.7M
        Stream hits:                                   67.2 %       1.8M
        Hits ahead of stream:                           3.2 %      88.5k
        Hits behind stream:                            24.9 %     682.7k
        Stream misses:                                  4.6 %     126.5k
        Streams limit reached:                         51.6 %      65.3k
        Stream strides:                                              992
        Prefetches issued                                          26.9k

L2ARC not detected, skipping section

Solaris Porting Layer (SPL):
        # The system hostid.
        spl_hostid                                                     0
        # The system hostid file (/etc/hostid)
        spl_hostid_path                                      /etc/hostid
        # Maximum size in bytes for a kmem_alloc()
        spl_kmem_alloc_max                                       1048576
        # Warning threshold in bytes for a kmem_alloc()
        spl_kmem_alloc_warn                                        65536
        # Number of spl_kmem_cache threads
        spl_kmem_cache_kmem_threads                                    4
        # Default magazine size (2-256), set automatically (0)
        spl_kmem_cache_magazine_size                                   0
        # Maximum size of slab in MB
        spl_kmem_cache_max_size                                       32
        # Number of objects per slab
        spl_kmem_cache_obj_per_slab                                    8
        # Objects less than N bytes use the Linux slab
        spl_kmem_cache_slab_limit                                  16384
        # Cause kernel panic on assertion failures
        spl_panic_halt                                                 0
        # schedule_hrtimeout_range() delta/slack value in us, default
        spl_schedule_hrtimeout_slack_us                                0
        # Write nonzero to kick stuck taskqs to spawn more threads
        spl_taskq_kick                                                 0
        # Bind taskq thread to CPU by default
        spl_taskq_thread_bind                                          0
        # Allow dynamic taskq threads
        spl_taskq_thread_dynamic                                       1
        # Allow non-default priority for taskq threads
        spl_taskq_thread_priority                                      1
        # Create new taskq threads after N sequential tasks
        spl_taskq_thread_sequential                                    4
        # Minimum idle threads exit interval for dynamic taskqs
        spl_taskq_thread_timeout_ms                                 5000

Tunables:
        # BRT ZAP leaf blockshift
        brt_zap_default_bs                                            12
        # BRT ZAP indirect blockshift
        brt_zap_default_ibs                                           12
        # Enable prefetching of BRT ZAP entries
        brt_zap_prefetch                                               1
        # Percentage over dbuf_cache_max_bytes for direct dbuf eviction.
        dbuf_cache_hiwater_pct                                        10
        # Percentage below dbuf_cache_max_bytes when dbuf eviction stops.
        dbuf_cache_lowater_pct                                        10
        # Maximum size in bytes of the dbuf cache.
        dbuf_cache_max_bytes                        18446744073709551615
        # Set size of dbuf cache to log2 fraction of arc size.
        dbuf_cache_shift                                               5
        # Maximum size in bytes of dbuf metadata cache.
        dbuf_metadata_cache_max_bytes               18446744073709551615
        # Set size of dbuf metadata cache to log2 fraction of arc size.
        dbuf_metadata_cache_shift                                      6
        # Set size of dbuf cache mutex array as log2 shift.
        dbuf_mutex_cache_shift                                         0
        # DDT ZAP leaf blockshift
        ddt_zap_default_bs                                            15
        # DDT ZAP indirect blockshift
        ddt_zap_default_ibs                                           15
        # Override copies= for dedup objects
        dmu_ddt_copies                                                 0
        # CPU-specific allocator grabs 2^N objects at once
        dmu_object_alloc_chunk_shift                                   7
        # Limit one prefetch call to this size
        dmu_prefetch_max                                       134217728
        # Select aes implementation.
        icp_aes_impl                      cycle [fastest] generic x86_64
        # How many bytes to process while owning the FPU
        icp_gcm_avx_chunk_size                                     32736
        # Select gcm implementation.
        icp_gcm_impl                             cycle [fastest] generic
        # Alias for send_holes_without_birth_time
        ignore_hole_birth                                              1
        # Exclude dbufs on special vdevs from being cached to L2ARC if set.
        l2arc_exclude_special                                          0
        # Turbo L2ARC warmup
        l2arc_feed_again                                               1
        # Min feed interval in milliseconds
        l2arc_feed_min_ms                                            200
        # Seconds between L2ARC writing
        l2arc_feed_secs                                                1
        # Number of max device writes to precache
        l2arc_headroom                                                 8
        # Compressed l2arc_headroom multiplier
        l2arc_headroom_boost                                         200
        # Percent of ARC size allowed for L2ARC-only headers
        l2arc_meta_percent                                            33
        # Cache only MFU data from ARC into L2ARC
        l2arc_mfuonly                                                  0
        # Skip caching prefetched buffers
        l2arc_noprefetch                                               1
        # No reads during writes
        l2arc_norw                                                     0
        # Min size in bytes to write rebuild log blocks in L2ARC
        l2arc_rebuild_blocks_min_l2size                       1073741824
        # Rebuild the L2ARC when importing a pool
        l2arc_rebuild_enabled                                          1
        # TRIM ahead L2ARC write size multiplier
        l2arc_trim_ahead                                               0
        # Extra write bytes during device warmup
        l2arc_write_boost                                       33554432
        # Max write bytes per interval
        l2arc_write_max                                         33554432
        # Allocation granularity
        metaslab_aliquot                                         1048576
        # Enable metaslab group biasing
        metaslab_bias_enabled                                          1
        # Load all metaslabs when pool is first opened
        metaslab_debug_load                                            0
        # Prevent metaslabs from being unloaded
        metaslab_debug_unload                                          0
        # Max distance
        metaslab_df_max_search                                  16777216
        # When looking in size tree, use largest segment instead of exact fit
        metaslab_df_use_largest_segment                                0
        # Blocks larger than this size are sometimes forced to be gang blocks
        metaslab_force_ganging                                  16777217
        # Percentage of large blocks that will be forced to be gang blocks
        metaslab_force_ganging_pct                                     3
        # Use the fragmentation metric to prefer less fragmented metaslabs
        metaslab_fragmentation_factor_enabled                          1
        # Prefer metaslabs with lower LBAs
        metaslab_lba_weighting_enabled                                 1
        # Preload potential metaslabs during reassessment
        metaslab_preload_enabled                                       1
        # Max number of metaslabs per group to preload
        metaslab_preload_limit                                        10
        # Percentage of CPUs to run a metaslab preload taskq
        metaslab_preload_pct                                          50
        # Delay in txgs after metaslab was last used before unloading
        metaslab_unload_delay                                         32
        # Delay in milliseconds after metaslab was last used before unloading
        metaslab_unload_delay_ms                                  600000
        # Max amount of concurrent i/o for RAIDZ expansion
        raidz_expand_max_copy_bytes                            167772160
        # For testing, pause RAIDZ expansion after reflowing this many bytes
        raidz_expand_max_reflow_bytes                                  0
        # For expanded RAIDZ, aggregate reads that have more rows than this
        raidz_io_aggregate_rows                                        4
        # Ignore hole_birth txg for zfs send
        send_holes_without_birth_time                                  1
        # SPA size estimate multiplication factor
        spa_asize_inflation                                           24
        # SPA config file
        spa_config_path                             /etc/zfs/zpool.cache
        # Minimum number of CPUs per allocators
        spa_cpus_per_allocator                                         4
        # Print vdev tree to zfs_dbgmsg during pool import
        spa_load_print_vdev_tree                                       0
        # Set to traverse data on pool import
        spa_load_verify_data                                           1
        # Set to traverse metadata on pool import
        spa_load_verify_metadata                                       1
        # log2 fraction of arc that can be used by inflight I/Os when verifying pool during import
        spa_load_verify_shift                                          4
        # Number of allocators per spa
        spa_num_allocators                                             4
        # Reserved free space in pool
        spa_slop_shift                                                 5
        # Limit the number of errors which will be upgraded to the new on-disk error log when enabling head_errlog
        spa_upgrade_errlog_limit                                       0
        # Logical ashift for file-based devices
        vdev_file_logical_ashift                                       9
        # Physical ashift for file-based devices
        vdev_file_physical_ashift                                      9
        # Largest span of free chunks a remap segment can span
        vdev_removal_max_span                                      32768
        # Bypass vdev_validate
        vdev_validate_skip                                             0
        # When iterating ZAP object, prefetch it
        zap_iterate_prefetch                                           1
        # Maximum micro ZAP size before converting to a fat ZAP, in bytes
        zap_micro_max_size                                        131072
        # Enable ZAP shrinking
        zap_shrink_enabled                                             1
        # Max log2 fraction of holes in a stream
        zfetch_hole_shift                                              2
        # Max bytes to prefetch per stream
        zfetch_max_distance                                     67108864
        # Max bytes to prefetch indirects for per stream
        zfetch_max_idistance                                   134217728
        # Max request reorder distance within a stream
        zfetch_max_reorder                                      16777216
        # Max time before stream delete
        zfetch_max_sec_reap                                            2
        # Max number of streams per zfetch
        zfetch_max_streams                                             8
        # Min bytes to prefetch per stream
        zfetch_min_distance                                      4194304
        # Min time before stream reclaim
        zfetch_min_sec_reap                                            1
        # Toggle whether ABD allocations must be linear.
        zfs_abd_scatter_enabled                                        1
        # Maximum order allocation used for a scatter ABD.
        zfs_abd_scatter_max_order                                      9
        # Minimum size of scatter allocations.
        zfs_abd_scatter_min_size                                    1536
        # SPA active allocator
        zfs_active_allocator                                     dynamic
        # Enable mkdir/rmdir/mv in .zfs/snapshot
        zfs_admin_snapshot                                             0
        # Allow mounting of redacted datasets
        zfs_allow_redacted_dataset_mount                               0
        # Target average block size
        zfs_arc_average_blocksize                                   8192
        # Minimum bytes of dnodes in ARC
        zfs_arc_dnode_limit                                            0
        # Percent of ARC meta buffers for dnodes
        zfs_arc_dnode_limit_percent                                   10
        # Percentage of excess dnodes to try to unpin
        zfs_arc_dnode_reduce_percent                                  10
        # The number of headers to evict per sublist before moving to the next
        zfs_arc_evict_batch_limit                                     10
        # When full, ARC allocation waits for eviction of this % of alloc size
        zfs_arc_eviction_pct                                         200
        # Seconds before growing ARC size
        zfs_arc_grow_retry                                             0
        # System free memory I/O throttle in bytes
        zfs_arc_lotsfree_percent                                      10
        # Maximum ARC size in bytes
        zfs_arc_max                                           2147483648
        # Balance between metadata and data on ghost hits.
        zfs_arc_meta_balance                                         500
        # Minimum ARC size in bytes
        zfs_arc_min                                                    0
        # Min life of prefetch block in ms
        zfs_arc_min_prefetch_ms                                        0
        # Min life of prescient prefetched block in ms
        zfs_arc_min_prescient_prefetch_ms                              0
        # Percent of pagecache to reclaim ARC to
        zfs_arc_pc_percent                                             0
        # Number of arc_prune threads
        zfs_arc_prune_task_threads                                     1
        # log2
        zfs_arc_shrink_shift                                           0
        # Limit on number of pages that ARC shrinker can reclaim at once
        zfs_arc_shrinker_limit                                         0
        # Relative cost of ARC eviction vs other kernel subsystems
        zfs_arc_shrinker_seeks                                         2
        # System free memory target size in bytes
        zfs_arc_sys_free                                               0
        # Max number of blocks freed in one txg
        zfs_async_block_max_blocks                  18446744073709551615
        # Disable pool import at module load
        zfs_autoimport_disable                                         1
        # Enable block cloning
        zfs_bclone_enabled                                             1
        # Wait for dirty blocks when cloning
        zfs_bclone_wait_dirty                                          0
        # Select BLAKE3 implementation.
        zfs_blake3_impl                     cycle [fastest] generic sse2
        # Enable btree verification. Levels above 4 require ZFS be built with debugging
        zfs_btree_verify_intensity                                     0
        # Rate limit checksum events to this many checksum errors per second
        zfs_checksum_events_per_second                                20
        # ZIL block open timeout percentage
        zfs_commit_timeout_pct                                        10
        # Disable compressed ARC buffers
        zfs_compressed_arc_enabled                                     1
        # Used by tests to ensure certain actions happen in the middle of a condense. A maximum value of 1 should be sufficient.
        zfs_condense_indirect_commit_entry_delay_ms                    0
        # Minimum obsolete percent of bytes in the mapping to attempt condensing
        zfs_condense_indirect_obsolete_pct                            25
        # Whether to attempt condensing indirect vdev mappings
        zfs_condense_indirect_vdevs_enable                             1
        # Minimum size obsolete spacemap to attempt condensing
        zfs_condense_max_obsolete_bytes                       1073741824
        # Don't bother condensing if the mapping uses less than this amount of memory
        zfs_condense_min_mapping_bytes                            131072
        # Enable ZFS debug message log
        zfs_dbgmsg_enable                                              1
        # Maximum ZFS debug log size
        zfs_dbgmsg_maxsize                                       4194304
        # Calculate arc header index
        zfs_dbuf_state_index                                           0
        # Place DDT data into the special class
        zfs_ddt_data_is_special                                        1
        # Dead I/O check interval in milliseconds
        zfs_deadman_checktime_ms                                   60000
        # Enable deadman timer
        zfs_deadman_enabled                                            1
        # Rate limit hung IO
        zfs_deadman_events_per_second                                  1
        # Failmode for deadman timer
        zfs_deadman_failmode                                        wait
        # Pool sync expiration time in milliseconds
        zfs_deadman_synctime_ms                                   600000
        # IO expiration time in milliseconds
        zfs_deadman_ziotime_ms                                    300000
        # Min number of log entries to flush each transaction
        zfs_dedup_log_flush_entries_min                             1000
        # Number of txgs to average flow rates across
        zfs_dedup_log_flush_flow_rate_txgs                            10
        # Min time to spend on incremental dedup log flush each transaction
        zfs_dedup_log_flush_min_time_ms                             1000
        # Max number of incremental dedup log flush passes per transaction
        zfs_dedup_log_flush_passes_max                                 8
        # Max memory for dedup logs
        zfs_dedup_log_mem_max                                  167635763
        # Max memory for dedup logs, as % of total memory
        zfs_dedup_log_mem_max_percent                                  1
        # Max transactions before starting to flush dedup logs
        zfs_dedup_log_txg_max                                          8
        # Enable prefetching dedup-ed blks
        zfs_dedup_prefetch                                             0
        # Default dnode block shift
        zfs_default_bs                                                 9
        # Default dnode indirect block shift
        zfs_default_ibs                                               17
        # Transaction delay threshold
        zfs_delay_min_dirty_percent                                   60
        # How quickly delay approaches infinity
        zfs_delay_scale                                           500000
        # Delete files larger than N blocks async
        zfs_delete_blocks                                          20480
        # Enable Direct I/O
        zfs_dio_enabled                                                1
        # Rate Direct I/O write verify events to this many per second
        zfs_dio_write_verify_events_per_second                        20
        # Determines the dirty space limit
        zfs_dirty_data_max                                    1676357632
        # zfs_dirty_data_max upper bound in bytes
        zfs_dirty_data_max_max                                4190894080
        # zfs_dirty_data_max upper bound as % of RAM
        zfs_dirty_data_max_max_percent                                25
        # Max percent of RAM allowed to be dirty
        zfs_dirty_data_max_percent                                    10
        # Dirty data txg sync threshold as a percentage of zfs_dirty_data_max
        zfs_dirty_data_sync_percent                                   20
        # Set to allow raw receives without IVset guids
        zfs_disable_ivset_guid_check                                   0
        # Enable forcing txg sync to find holes
        zfs_dmu_offset_next_sync                                       1
        # Minimum number of metaslabs required to dedicate one for log blocks
        zfs_embedded_slog_min_ms                                      64
        # Seconds to expire .zfs/snapshot
        zfs_expire_snapshot                                          300
        # Percentage of length to use for the available capacity check
        zfs_fallocate_reserve_percent                                110
        # Set additional debugging flags
        zfs_flags                                                      0
        # Select fletcher 4 implementation.
        zfs_fletcher_4_impl [fastest] scalar superscalar superscalar4 sse2 ssse3
        # Enable processing of the free_bpobj
        zfs_free_bpobj_enabled                                         1
        # Set to ignore IO errors during free and permanently leak the space
        zfs_free_leak_on_eio                                           0
        # Min millisecs to free per txg
        zfs_free_min_time_ms                                        1000
        # Maximum size in bytes of ZFS ioctl output that will be logged
        zfs_history_output_max                                   1048576
        # Largest data block to write to zil
        zfs_immediate_write_sz                                     32768
        # Size in bytes of writes by zpool initialize
        zfs_initialize_chunk_size                                1048576
        # Value written during zpool initialize
        zfs_initialize_value                        16045690984833335022
        # Prevent the log spacemaps from being flushed and destroyed during pool export/destroy
        zfs_keep_log_spacemaps_at_export                               0
        # Max number of times a salt value can be used for generating encryption keys before it is rotated
        zfs_key_max_salt_uses                                  400000000
        # Whether extra ALLOC blkptrs were added to a livelist entry while it was being condensed
        zfs_livelist_condense_new_alloc                                0
        # Whether livelist condensing was canceled in the synctask
        zfs_livelist_condense_sync_cancel                              0
        # Set the livelist condense synctask to pause
        zfs_livelist_condense_sync_pause                               0
        # Whether livelist condensing was canceled in the zthr function
        zfs_livelist_condense_zthr_cancel                              0
        # Set the livelist condense zthr to pause
        zfs_livelist_condense_zthr_pause                               0
        # Size to start the next sub-livelist in a livelist
        zfs_livelist_max_entries                                  500000
        # Threshold at which livelist is disabled
        zfs_livelist_min_percent_shared                               75
        # Max instruction limit that can be specified for a channel program
        zfs_lua_max_instrlimit                                 100000000
        # Max memory limit that can be specified for a channel program
        zfs_lua_max_memlimit                                   104857600
        # Max number of dedup blocks freed in one txg
        zfs_max_async_dedup_frees                                 100000
        # Limit to the amount of nesting a path can have. Defaults to 50.
        zfs_max_dataset_nesting                                       50
        # The number of past TXGs that the flushing algorithm of the log spacemap feature uses to estimate incoming log blocks
        zfs_max_log_walking                                            5
        # Maximum number of rows allowed in the summary of the spacemap log
        zfs_max_logsm_summary_length                                  10
        # Allow importing pool with up to this number of missing top-level vdevs
        zfs_max_missing_tvds                                           0
        # Maximum size in bytes allowed for src nvlist passed with ZFS ioctls
        zfs_max_nvlist_src_size                                        0
        # Max allowed record size
        zfs_max_recordsize                                      16777216
        # Normally only consider this many of the best metaslabs in each vdev
        zfs_metaslab_find_max_tries                                  100
        # Fragmentation for metaslab to allow allocation
        zfs_metaslab_fragmentation_threshold                          70
        # How long to trust the cached max chunk size of a metaslab
        zfs_metaslab_max_size_cache_sec                             3600
        # Percentage of memory that can be used to store metaslab range trees
        zfs_metaslab_mem_limit                                        25
        # Enable segment-based metaslab selection
        zfs_metaslab_segment_weight_enabled                            1
        # Segment-based metaslab selection maximum buckets before switching
        zfs_metaslab_switch_threshold                                  2
        # Try hard to allocate before ganging
        zfs_metaslab_try_hard_before_gang                              0
        # Percentage of metaslab group size that should be considered eligible for allocations unless all metaslab groups within the metaslab class have also crossed this threshold
        zfs_mg_fragmentation_threshold                                95
        # Percentage of metaslab group size that should be free to make it eligible for allocation
        zfs_mg_noalloc_threshold                                       0
        # Minimum number of metaslabs to flush per dirty TXG
        zfs_min_metaslabs_to_flush                                     1
        # Max allowed period without a successful mmp write
        zfs_multihost_fail_intervals                                  10
        # Historical statistics for last N multihost writes
        zfs_multihost_history                                          0
        # Number of zfs_multihost_interval periods to wait for activity
        zfs_multihost_import_intervals                                20
        # Milliseconds between mmp writes to each leaf
        zfs_multihost_interval                                      1000
        # Number of sublists used in each multilist
        zfs_multilist_num_sublists                                     0
        # Set to disable scrub I/O
        zfs_no_scrub_io                                                0
        # Set to disable scrub prefetching
        zfs_no_scrub_prefetch                                          0
        # Disable cache flushes
        zfs_nocacheflush                                               0
        # Enable NOP writes
        zfs_nopwrite_enabled                                           1
        # Size of znode hold array
        zfs_object_mutex_size                                         64
        # Min millisecs to obsolete per txg
        zfs_obsolete_min_time_ms                                     500
        # Override block size estimate with fixed size
        zfs_override_estimate_recordsize                               0
        # Max number of bytes to prefetch
        zfs_pd_bytes_max                                        52428800
        # Percentage of dirtied blocks from frees in one TXG
        zfs_per_txg_dirty_frees_percent                               30
        # Disable all ZFS prefetching
        zfs_prefetch_disable                                           0
        # Historical statistics for the last N reads
        zfs_read_history                                               0
        # Include cache hits in read history
        zfs_read_history_hits                                          0
        # Max segment size in bytes of rebuild reads
        zfs_rebuild_max_segment                                  1048576
        # Automatically scrub after sequential resilver completes
        zfs_rebuild_scrub_enabled                                      1
        # Max bytes in flight per leaf vdev for sequential resilvers
        zfs_rebuild_vdev_limit                                  67108864
        # Maximum number of combinations when reconstructing split segments
        zfs_reconstruct_indirect_combinations_max                   4096
        # Set to attempt to recover from fatal errors
        zfs_recover                                                    0
        # Ignore errors during corrective receive
        zfs_recv_best_effort_corrective                                0
        # Receive queue fill fraction
        zfs_recv_queue_ff                                             20
        # Maximum receive queue length
        zfs_recv_queue_length                                   16777216
        # Maximum amount of writes to batch into one transaction
        zfs_recv_write_batch_size                                1048576
        # Ignore hard IO errors when removing device
        zfs_removal_ignore_errors                                      0
        # Pause device removal after this many bytes are copied
        zfs_removal_suspend_progress                                   0
        # Largest contiguous segment to allocate when removing device
        zfs_remove_max_segment                                  16777216
        # Issued IO percent complete after which resilvers are deferred
        zfs_resilver_defer_percent                                    10
        # Process all resilvers immediately
        zfs_resilver_disable_defer                                     0
        # Min millisecs to resilver per txg
        zfs_resilver_min_time_ms                                    3000
        # Enable block statistics calculation during scrub
        zfs_scan_blkstats                                              0
        # Scan progress on-disk checkpointing interval
        zfs_scan_checkpoint_intval                                  7200
        # Tunable to adjust bias towards more filled segments during scans
        zfs_scan_fill_weight                                           3
        # Ignore errors during resilver/scrub
        zfs_scan_ignore_errors                                         0
        # IO issuing strategy during scrubbing. 0 = default, 1 = LBA, 2 = size
        zfs_scan_issue_strategy                                        0
        # Scrub using legacy non-sequential method
        zfs_scan_legacy                                                0
        # Max gap in bytes between sequential scrub / resilver I/Os
        zfs_scan_max_ext_gap                                     2097152
        # Fraction of RAM for scan hard limit
        zfs_scan_mem_lim_fact                                         20
        # Fraction of hard limit used as soft limit
        zfs_scan_mem_lim_soft_fact                                    20
        # Tunable to report resilver performance over the last N txgs
        zfs_scan_report_txgs                                           0
        # Tunable to attempt to reduce lock contention
        zfs_scan_strict_mem_lim                                        0
        # Set to prevent scans from progressing
        zfs_scan_suspend_progress                                      0
        # Max bytes in flight per leaf vdev for scrubs and resilvers
        zfs_scan_vdev_limit                                     16777216
        # For expanded RAIDZ, automatically start a pool scrub when expansion completes
        zfs_scrub_after_expand                                         1
        # Error blocks to be scrubbed in one txg
        zfs_scrub_error_blocks_per_txg                              4096
        # Min millisecs to scrub per txg
        zfs_scrub_min_time_ms                                       1000
        # Allow sending corrupt data
        zfs_send_corrupt_data                                          0
        # Send queue fill fraction for non-prefetch queues
        zfs_send_no_prefetch_queue_ff                                 20
        # Maximum send queue length for non-prefetch queues
        zfs_send_no_prefetch_queue_length                        1048576
        # Send queue fill fraction
        zfs_send_queue_ff                                             20
        # Maximum send queue length
        zfs_send_queue_length                                   16777216
        # Send unmodified spill blocks
        zfs_send_unmodified_spill_blocks                               1
        # Select SHA256 implementation.
        zfs_sha256_impl                cycle [fastest] generic x64 ssse3
        # Select SHA512 implementation.
        zfs_sha512_impl                      cycle [fastest] generic x64
        # Rate limit slow IO
        zfs_slow_io_events_per_second                                 20
        # Include snapshot events in pool history/events
        zfs_snapshot_history_enabled                                   1
        # Disable setuid/setgid for automounts in .zfs/snapshot
        zfs_snapshot_no_setuid                                         0
        # Limit for memory used in prefetching the checkpoint space map done on each vdev while discarding the checkpoint
        zfs_spa_discard_memory_limit                            16777216
        # Small file blocks in special vdevs depends on this much free space available
        zfs_special_class_metadata_reserve_pct                        25
        # Defer frees starting in this pass
        zfs_sync_pass_deferred_free                                    2
        # Don't compress starting in this pass
        zfs_sync_pass_dont_compress                                    8
        # Rewrite new bps starting in this pass
        zfs_sync_pass_rewrite                                          2
        # Traverse prefetch number of blocks pointed by indirect block
        zfs_traverse_indirect_prefetch_limit                          32
        # Max size of TRIM commands, larger will be split
        zfs_trim_extent_bytes_max                              134217728
        # Min size of TRIM commands, smaller will be skipped
        zfs_trim_extent_bytes_min                                  32768
        # Skip metaslabs which have never been initialized
        zfs_trim_metaslab_skip                                         0
        # Max queued TRIMs outstanding per leaf vdev
        zfs_trim_queue_limit                                          10
        # Min number of txgs to aggregate frees before issuing TRIM
        zfs_trim_txg_batch                                            32
        # Historical statistics for the last N txgs
        zfs_txg_history                                              100
        # Max seconds worth of delta per txg
        zfs_txg_timeout                                                5
        # Hard limit
        zfs_unflushed_log_block_max                               131072
        # Lower-bound limit for the maximum amount of blocks allowed in log spacemap
        zfs_unflushed_log_block_min                                 1000
        # Tunable used to determine the number of blocks that can be used for the spacemap log, expressed as a percentage of the total number of metaslabs in the pool
        zfs_unflushed_log_block_pct                                  400
        # Hard limit
        zfs_unflushed_log_txg_max                                   1000
        # Specific hard-limit in memory that ZFS allows to be used for unflushed changes
        zfs_unflushed_max_mem_amt                             1073741824
        # Percentage of the overall system memory that ZFS allows to be used for unflushed changes
        zfs_unflushed_max_mem_ppm                                   1000
        # Set to prevent async unlinks (debug - leaks space into the unlinked set)
        zfs_unlink_suspend_progress                                    0
        # Place user data indirect blocks into the special class
        zfs_user_indirect_is_special                                   1
        # Max vdev I/O aggregation size
        zfs_vdev_aggregation_limit                               1048576
        # Max vdev I/O aggregation size for non-rotating media
        zfs_vdev_aggregation_limit_non_rotating                   131072
        # Max active async read I/Os per vdev
        zfs_vdev_async_read_max_active                                 3
        # Min active async read I/Os per vdev
        zfs_vdev_async_read_min_active                                 1
        # Async write concurrency max threshold
        zfs_vdev_async_write_active_max_dirty_percent                 60
        # Async write concurrency min threshold
        zfs_vdev_async_write_active_min_dirty_percent                 30
        # Max active async write I/Os per vdev
        zfs_vdev_async_write_max_active                               10
        # Min active async write I/Os per vdev
        zfs_vdev_async_write_min_active                                2
        # Default queue depth for each allocator
        zfs_vdev_def_queue_depth                                      32
        # Target number of metaslabs per top-level vdev
        zfs_vdev_default_ms_count                                    200
        # Default lower limit for metaslab size
        zfs_vdev_default_ms_shift                                     29
        # Direct I/O writes will perform for checksum verification before commiting write
        zfs_vdev_direct_write_verify                                   1
        # Use classic BIO submission method
        zfs_vdev_disk_classic                                          0
        # Maximum number of data segments to add to an IO request
        zfs_vdev_disk_max_segs                                         0
        # Defines failfast mask: 1 - device, 2 - transport, 4 - driver
        zfs_vdev_failfast_mask                                         1
        # Max active initializing I/Os per vdev
        zfs_vdev_initializing_max_active                               1
        # Min active initializing I/Os per vdev
        zfs_vdev_initializing_min_active                               1
        # Maximum number of active I/Os per vdev
        zfs_vdev_max_active                                         1000
        # Maximum ashift used when optimizing for logical -> physical sector size on new top-level vdevs
        zfs_vdev_max_auto_ashift                                      14
        # Default upper limit for metaslab size
        zfs_vdev_max_ms_shift                                         34
        # Minimum ashift used when creating new top-level vdevs
        zfs_vdev_min_auto_ashift                                       9
        # Minimum number of metaslabs per top-level vdev
        zfs_vdev_min_ms_count                                         16
        # Non-rotating media load increment for non-seeking I/Os
        zfs_vdev_mirror_non_rotating_inc                               0
        # Non-rotating media load increment for seeking I/Os
        zfs_vdev_mirror_non_rotating_seek_inc                          1
        # Rotating media load increment for non-seeking I/Os
        zfs_vdev_mirror_rotating_inc                                   0
        # Rotating media load increment for seeking I/Os
        zfs_vdev_mirror_rotating_seek_inc                              5
        # Offset in bytes from the last I/O which triggers a reduced rotating media seek increment
        zfs_vdev_mirror_rotating_seek_offset                     1048576
        # Practical upper limit of total metaslabs per top-level vdev
        zfs_vdev_ms_count_limit                                   131072
        # Number of non-interactive I/Os to allow in sequence
        zfs_vdev_nia_credit                                            5
        # Number of non-interactive I/Os before _max_active
        zfs_vdev_nia_delay                                             5
        # Timeout before determining that a device is missing
        zfs_vdev_open_timeout_ms                                    1000
        # Queue depth percentage for each top-level vdev
        zfs_vdev_queue_depth_pct                                    1000
        # Select raidz implementation.
        zfs_vdev_raidz_impl   cycle [fastest] original scalar sse2 ssse3
        # Aggregate read I/O over gap
        zfs_vdev_read_gap_limit                                    32768
        # Max active rebuild I/Os per vdev
        zfs_vdev_rebuild_max_active                                    3
        # Min active rebuild I/Os per vdev
        zfs_vdev_rebuild_min_active                                    1
        # Max active removal I/Os per vdev
        zfs_vdev_removal_max_active                                    2
        # Min active removal I/Os per vdev
        zfs_vdev_removal_min_active                                    1
        # I/O scheduler
        zfs_vdev_scheduler                                        unused
        # Max active scrub I/Os per vdev
        zfs_vdev_scrub_max_active                                      3
        # Min active scrub I/Os per vdev
        zfs_vdev_scrub_min_active                                      1
        # Max active sync read I/Os per vdev
        zfs_vdev_sync_read_max_active                                 10
        # Min active sync read I/Os per vdev
        zfs_vdev_sync_read_min_active                                 10
        # Max active sync write I/Os per vdev
        zfs_vdev_sync_write_max_active                                10
        # Min active sync write I/Os per vdev
        zfs_vdev_sync_write_min_active                                10
        # Max active trim/discard I/Os per vdev
        zfs_vdev_trim_max_active                                       2
        # Min active trim/discard I/Os per vdev
        zfs_vdev_trim_min_active                                       1
        # Aggregate write I/O over gap
        zfs_vdev_write_gap_limit                                    4096
        # Bytes to read per chunk
        zfs_vnops_read_chunk_size                                1048576
        # The size limit of write-transaction zil log data
        zfs_wrlog_data_max                                    3352715264
        # Use legacy ZFS xattr naming for writing new user namespace xattrs
        zfs_xattr_compat                                               0
        # Max event queue length
        zfs_zevent_len_max                                           512
        # Expiration time for recent zevents records
        zfs_zevent_retain_expire_secs                                900
        # Maximum recent zevents records to retain for duplicate checking
        zfs_zevent_retain_max                                       2000
        # Max number of taskq entries that are cached
        zfs_zil_clean_taskq_maxalloc                             1048576
        # Number of taskq entries that are pre-populated
        zfs_zil_clean_taskq_minalloc                                1024
        # Max percent of CPUs that are used per dp_sync_taskq
        zfs_zil_clean_taskq_nthr_pct                                 100
        # Disable xattr=sa extended attribute logging in ZIL by settng 0.
        zfs_zil_saxattr                                                1
        # Limit in bytes of ZIL log block size
        zil_maxblocksize                                          131072
        # Limit in bytes WR_COPIED size
        zil_maxcopied                                               7680
        # Disable ZIL cache flushes
        zil_nocacheflush                                               0
        # Disable intent logging replay
        zil_replay_disable                                             0
        # Limit in bytes slog sync writes per commit
        zil_slog_bulk                                           67108864
        # Log all slow ZIOs, not just those with vdevs
        zio_deadman_log_all                                            0
        # Throttle block allocations in the ZIO pipeline
        zio_dva_throttle_enabled                                       1
        # Prioritize requeued I/O
        zio_requeue_io_start_cut_in_line                               1
        # Max I/O completion time
        zio_slow_io_ms                                             30000
        # Percentage of CPUs to run an IO worker thread
        zio_taskq_batch_pct                                           80
        # Number of threads per IO worker taskqueue
        zio_taskq_batch_tpq                                            0
        # Configure IO queues for read IO
        zio_taskq_read                         fixed,1,8 null scale null
        # Configure IO queues for write IO
        zio_taskq_write                             sync null scale null
        # Number of CPUs per write issue taskq
        zio_taskq_write_tpq                                           16
        # Minimal size of block to attempt early abort
        zstd_abort_size                                           131072
        # Enable early abort attempts when using zstd
        zstd_earlyabort_pass                                           1
        # Process volblocksize blocks per thread
        zvol_blk_mq_blocks_per_thread                                  8
        # Default blk-mq queue depth
        zvol_blk_mq_queue_depth                                      128
        # Enable strict ZVOL quota enforcment
        zvol_enforce_quotas                                            1
        # Do not create zvol device nodes
        zvol_inhibit_dev                                               0
        # Major number for zvol device
        zvol_major                                                   230
        # Max number of blocks to discard
        zvol_max_discard_blocks                                    16384
        # Number of zvol taskqs
        zvol_num_taskqs                                                0
        # Timeout for ZVOL open retries
        zvol_open_timeout_ms                                        1000
        # Prefetch N bytes at zvol start+end
        zvol_prefetch_bytes                                       131072
        # Synchronously handle bio requests
        zvol_request_sync                                              0
        # Number of threads to handle I/O requests. Setto 0 to use all active CPUs
        zvol_threads                                                   0
        # Use the blk-mq API for zvols
        zvol_use_blk_mq                                                0
        # Default volmode property value
        zvol_volmode                                                   1

ZIL committed transactions:                                        52.2k
        Commit requests:                                            9.3k
        Flushes to stable storage:                                  9.3k
        Transactions to SLOG storage pool:            0 Bytes          0
        Transactions to non-SLOG storage pool:      262.1 MiB       7.4k

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: DefectIncorrect behavior (e.g. crash, hang)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions