Mercurial > illumos > illumos-gate
changeset 11614:04f97eb93d43
6918925 txg sync lasts a fraction of zfs_txg_synctime
author | Lin Ling <Lin.Ling@Sun.COM> |
---|---|
date | Mon, 01 Feb 2010 16:10:08 -0800 |
parents | 4e70c20fe777 |
children | c0a53528bc28 |
files | usr/src/uts/common/fs/zfs/dsl_pool.c usr/src/uts/common/fs/zfs/sys/dsl_pool.h |
diffstat | 2 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/dsl_pool.c Mon Feb 01 14:47:31 2010 -0800 +++ b/usr/src/uts/common/fs/zfs/dsl_pool.c Mon Feb 01 16:10:08 2010 -0800 @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -431,10 +431,14 @@ * amount of write traffic allowed into each transaction group. * Weight the throughput calculation towards the current value: * thru = 3/4 old_thru + 1/4 new_thru + * + * Note: write_time is in nanosecs, so write_time/MICROSEC + * yields millisecs */ ASSERT(zfs_write_limit_min > 0); - if (data_written > zfs_write_limit_min / 8 && write_time > 0) { - uint64_t throughput = (data_written * NANOSEC) / write_time; + if (data_written > zfs_write_limit_min / 8 && write_time > MICROSEC) { + uint64_t throughput = data_written / (write_time / MICROSEC); + if (dp->dp_throughput) dp->dp_throughput = throughput / 4 + 3 * dp->dp_throughput / 4; @@ -442,7 +446,7 @@ dp->dp_throughput = throughput; dp->dp_write_limit = MIN(zfs_write_limit_inflated, MAX(zfs_write_limit_min, - dp->dp_throughput * zfs_txg_synctime_ms / MILLISEC)); + dp->dp_throughput * zfs_txg_synctime_ms)); } }
--- a/usr/src/uts/common/fs/zfs/sys/dsl_pool.h Mon Feb 01 14:47:31 2010 -0800 +++ b/usr/src/uts/common/fs/zfs/sys/dsl_pool.h Mon Feb 01 16:10:08 2010 -0800 @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -84,7 +84,7 @@ blkptr_t dp_meta_rootbp; list_t dp_synced_datasets; hrtime_t dp_read_overhead; - uint64_t dp_throughput; + uint64_t dp_throughput; /* bytes per millisec */ uint64_t dp_write_limit; uint64_t dp_tmp_userrefs_obj;