mirror_zfs/module
Alexander Motin 23fad19818 Reduce zfs_dmu_offset_next_sync penalty
Looking on txg_wait_synced(, 0) I've noticed that it always syncs
5 TXGs: 3 TXG_CONCURRENT_STATES + 2 TXG_DEFER_SIZE.  But in case
of dmu_offset_next() we do not care about deferred frees. And even
concurrent TXGs we might not need sync all 3 if the dnode was not
dirtied in last few TXGs.

This patch makes dmu_offset_next() to sync one TXG at a time until
the dnode is clean, but no more than 3 TXG_CONCURRENT_STATES times.
My tests with random simultaneous writes and seeks over many files
on HDD pool show 7-14% performance increase.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes #17434
2025-06-17 10:50:26 -07:00
..
avl SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
icp Linux build: silence objtool warnings 2025-06-17 10:50:26 -07:00
lua SPDX: license tags: MIT 2025-04-16 09:59:44 -07:00
nvpair SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
os linux/zvol_os: don't try to set disk ops if alloc fails 2025-06-17 10:50:26 -07:00
unicode [2.3.2] uconv: add SPDX license tag 2025-04-16 09:59:45 -07:00
zcommon GCC 15: Fix unterminated-string-initialization (#17244) 2025-04-16 09:59:45 -07:00
zfs Reduce zfs_dmu_offset_next_sync penalty 2025-06-17 10:50:26 -07:00
zstd SPDX: license tags: BSD-3-Clause OR GPL-2.0-only 2025-04-16 09:59:44 -07:00
.gitignore FreeBSD: Ignore symlink to i386 includes 2022-08-02 16:34:23 -07:00
Kbuild.in Linux build: always use objtool 2025-06-17 10:50:26 -07:00
Makefile.bsd freebsd: unbreak module/Makefile.bsd build on 15-CURRENT-arm64 2025-04-16 09:59:45 -07:00
Makefile.in Fix "make install" with DESTDIR set (#16995) 2025-02-28 00:42:29 +05:00