mirror_zfs/module/zfs
Alexander Motin 55cbd1f9bd Reduce dirty records memory usage
Small block workloads may use a very large number of dirty records.
During simple block cloning test due to BRT still using 4KB blocks
I can easily see up to 2.5M of those used.  Before this change
dbuf_dirty_record_t structures representing them were allocated via
kmem_zalloc(), that rounded their size up to 512 bytes.

Introduction of specialized kmem cache allows to reduce the size
from 512 to 408 bytes.  Additionally, since override and raw params
in dirty records are mutually exclusive, puting them into a union
allows to reduce structure size down to 368 bytes, increasing the
saving to 28%, that can be a 0.5GB or more of RAM.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes #16694
2024-11-04 16:46:39 -08:00
..
abd.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
aggsum.c
arc.c ARC: Cache arc_c value during arc_evict() 2024-10-04 10:56:43 -07:00
blake3_zfs.c
blkptr.c compress: change zio_compress API to use ABDs 2024-08-22 16:22:24 -07:00
bplist.c
bpobj.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
bptree.c
bqueue.c
brt.c BRT: Skip getting length in brt_entry_lookup() 2024-03-25 17:13:45 -07:00
btree.c Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN. 2024-05-10 08:47:21 -07:00
dataset_kstats.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
dbuf_stats.c
dbuf.c Reduce dirty records memory usage 2024-11-04 16:46:39 -08:00
ddt_log.c Add DDT prune command 2024-09-04 14:17:02 -07:00
ddt_stats.c ddt: dedup log 2024-08-16 12:03:35 -07:00
ddt_zap.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
ddt.c Remove set but not used variable in ddt.c (#16522) 2024-09-10 12:46:50 -07:00
dmu_diff.c Simplify issig(). 2024-05-29 10:49:11 -07:00
dmu_direct.c Reduce dirty records memory usage 2024-11-04 16:46:39 -08:00
dmu_object.c Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN. 2024-05-10 08:47:21 -07:00
dmu_objset.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dmu_recv.c feature: large_microzap 2024-10-02 20:47:11 -07:00
dmu_redact.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dmu_send.c feature: large_microzap 2024-10-02 20:47:11 -07:00
dmu_traverse.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dmu_tx.c Add warning for external consumers of dmu_tx_callback_register 2024-11-01 09:49:05 -07:00
dmu_zfetch.c Small fix to prefetch ranges aggregation 2024-04-09 16:14:04 -07:00
dmu.c Reduce dirty records memory usage 2024-11-04 16:46:39 -08:00
dnode_sync.c Reduce dirty records memory usage 2024-11-04 16:46:39 -08:00
dnode.c Linux: Report reclaimable memory to kernel as such (#16385) 2024-07-30 11:40:47 -07:00
dsl_bookmark.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_crypt.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_dataset.c Fix generation of kernel uevents for snapshot rename on linux 2024-10-09 13:44:22 -07:00
dsl_deadlist.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_deleg.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_destroy.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_dir.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
dsl_pool.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
dsl_prop.c snapdir: add 'disabled' value to make .zfs inaccessible 2024-10-02 09:12:02 -07:00
dsl_scan.c Defer resilver only when progress is above a threshold 2024-10-04 10:41:17 -07:00
dsl_synctask.c
dsl_userhold.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
edonr_zfs.c
fm.c
gzip.c compress: change compression providers API to use ABDs 2024-08-22 16:22:24 -07:00
hkdf.c
lz4_zfs.c compress: change compression providers API to use ABDs 2024-08-22 16:22:24 -07:00
lz4.c
lzjb.c compress: change compression providers API to use ABDs 2024-08-22 16:22:24 -07:00
metaslab.c Remove extra newline from spa_set_allocator(). 2024-09-17 13:15:42 -07:00
mmp.c vdev probe to slow disk can stall mmp write checker 2024-04-29 14:35:53 -07:00
multilist.c L2ARC: Relax locking during write 2024-04-09 16:23:19 -07:00
objlist.c
pathname.c
range_tree.c
refcount.c
rrwlock.c
sa.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
sha2_zfs.c
skein_zfs.c
spa_checkpoint.c
spa_config.c
spa_errlog.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
spa_history.c
spa_log_spacemap.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
spa_misc.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
spa_stats.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
spa.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
space_map.c
space_reftree.c
THIRDPARTYLICENSE.cityhash
THIRDPARTYLICENSE.cityhash.descrip
txg.c vdev probe to slow disk can stall mmp write checker 2024-04-29 14:35:53 -07:00
uberblock.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
unique.c
vdev_draid_rand.c
vdev_draid.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
vdev_indirect_births.c
vdev_indirect_mapping.c
vdev_indirect.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
vdev_initialize.c Add support for parallel pool exports 2024-05-14 08:57:41 -07:00
vdev_label.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
vdev_mirror.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
vdev_missing.c
vdev_queue.c
vdev_raidz_math_aarch64_neon_common.h
vdev_raidz_math_aarch64_neon.c
vdev_raidz_math_aarch64_neonx2.c
vdev_raidz_math_avx2.c
vdev_raidz_math_avx512bw.c
vdev_raidz_math_avx512f.c
vdev_raidz_math_impl.h
vdev_raidz_math_powerpc_altivec_common.h
vdev_raidz_math_powerpc_altivec.c
vdev_raidz_math_scalar.c
vdev_raidz_math_sse2.c
vdev_raidz_math_ssse3.c
vdev_raidz_math.c
vdev_raidz.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
vdev_rebuild.c Add support for parallel pool exports 2024-05-14 08:57:41 -07:00
vdev_removal.c
vdev_root.c
vdev_trim.c Add support for parallel pool exports 2024-05-14 08:57:41 -07:00
vdev.c On the first vdev open ignore impossible ashift hints 2024-11-01 09:49:00 -07:00
zap_leaf.c ZAP: Some cleanups/micro-optimizations 2024-03-21 16:43:53 -07:00
zap_micro.c feature: large_microzap 2024-10-02 20:47:11 -07:00
zap.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zcp_get.c
zcp_global.c
zcp_iter.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
zcp_set.c
zcp_synctask.c
zcp.c Simplify issig(). 2024-05-29 10:49:11 -07:00
zfeature.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
zfs_byteswap.c
zfs_chksum.c
zfs_fm.c Adding Direct IO Support 2024-09-14 13:47:59 -07:00
zfs_fuid.c
zfs_impl.c
zfs_ioctl.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zfs_log.c zfs_log: add flex array fields to log record structs 2024-09-27 09:18:11 -07:00
zfs_onexit.c
zfs_quota.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00
zfs_ratelimit.c
zfs_replay.c zfs_log: add flex array fields to log record structs 2024-09-27 09:18:11 -07:00
zfs_rlock.c
zfs_sa.c
zfs_vnops.c zfs(4): remove "experimental" from zfs_bclone_enabled 2024-11-04 16:46:39 -08:00
zfs_znode.c Support for longnames for files/directories (Linux part) 2024-10-01 13:40:27 -07:00
zil.c zfs: add bounds checking to zil_parse (#16308) 2024-07-31 17:17:04 -07:00
zio_checksum.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
zio_compress.c zio_compress: introduce max size threshold 2024-09-19 17:23:58 -07:00
zio_inject.c vdev probe to slow disk can stall mmp write checker 2024-04-29 14:35:53 -07:00
zio.c Always validate checksums for Direct I/O reads 2024-10-09 13:45:06 -07:00
zle.c compress: change compression providers API to use ABDs 2024-08-22 16:22:24 -07:00
zrlock.c
zthr.c
zvol.c Allocate zap_attribute_t from kmem instead of stack 2024-10-01 13:39:08 -07:00