>Number: 146108 >Category: kern >Synopsis: [zfs] [patch] write throttling bugfix (onnv 9366) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Apr 28 09:50:04 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Martin Matuska >Release: FreeBSD 8.0-STABLE amd64 >Organization: >Environment: System: FreeBSD neo.vx.sk 8.0-STABLE FreeBSD 8.0-STABLE #10 r207271M: Tue Apr 27 21:36:49 CEST 2010 r...@neo.vx.sk:/usr/obj/stable/sys/NEO amd64 >Description: - fix improper pool write throughput calculation [1] - make vfs.zfs.write_limit_override tunable (like in OpenSolaris)
The tunable is in bytes and enables fine-tuning of ZFS write bursts (tradeoff stalls vs. lower write throughput) Discussed with and approved by: pjd@ MFS suggestion: 2 weeks Sources: OpenSolaris bug-id: 6817339 [1] Onnv revision: 9366 [1] >How-To-Repeat: >Fix: Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c =================================================================== --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c (revision 207314) +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c (working copy) @@ -47,6 +47,11 @@ uint64_t zfs_write_limit_override = 0; extern uint64_t zfs_write_limit_min; +SYSCTL_DECL(_vfs_zfs); +TUNABLE_ULONG("vfs.zfs.write_limit_override", &zfs_write_limit_override); +SYSCTL_ULONG(_vfs_zfs, OID_AUTO, write_limit_override, CTLFLAG_RW, &zfs_write_limit_override, 0, + "Override maximum TXG size"); + kmutex_t zfs_write_limit_lock; static pgcnt_t old_physmem = 0; @@ -300,6 +305,7 @@ tx = dmu_tx_create_assigned(dp, txg); dp->dp_read_overhead = 0; + start = gethrtime(); zio = zio_root(dp->dp_spa, NULL, NULL, ZIO_FLAG_MUSTSUCCEED); while (ds = txg_list_remove(&dp->dp_dirty_datasets, txg)) { if (!list_link_active(&ds->ds_synced_link)) @@ -310,7 +316,6 @@ } DTRACE_PROBE(pool_sync__1setup); - start = gethrtime(); err = zio_wait(zio); write_time = gethrtime() - start; ASSERT(err == 0); >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"