linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 00/11] IO-less dirty throttling v12
       [not found] ` <1318248846.14400.21.camel@laptop>
@ 2011-10-10 13:07   ` Wu Fengguang
  2011-10-10 13:10     ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
  2011-10-10 14:28     ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
  0 siblings, 2 replies; 10+ messages in thread
From: Wu Fengguang @ 2011-10-10 13:07 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: linux-fsdevel@vger.kernel.org, Andrew Morton, Jan Kara,
	Christoph Hellwig, Dave Chinner, Greg Thelen, Minchan Kim,
	Vivek Goyal, Andrea Righi, linux-mm, LKML, Trond Myklebust,
	linux-nfs

On Mon, Oct 10, 2011 at 08:14:06PM +0800, Peter Zijlstra wrote:
> On Mon, 2011-10-03 at 21:42 +0800, Wu Fengguang wrote:
> > This is the minimal IO-less balance_dirty_pages() changes that are expected to
> > be regression free (well, except for NFS).
> 
> I can't seem to get around reviewing these patches in detail, but fwiw
> I'm fine with pushing fwd with this set (plus a possible NFS fix).
> 
> I don't see a reason to strip it down even further.
> 
> So I guess that's:
> 
> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

Thanks :-) In fact you've already reviewed the major parts of the
patchset in great details and helped simplify parts of the algorithm,
which I appreciate a lot.

As for the NFS performance, the dd tests show that adding a writeback
wait queue to limit the number of NFS PG_writeback pages (patches
will follow) is able to gain 48% throughput in itself:

      3.1.0-rc8-ioless6+         3.1.0-rc8-nfs-wq+  
------------------------  ------------------------  
                   22.43       +81.8%        40.77  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                   28.21       +52.6%        43.07  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                   29.21       +55.4%        45.39  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                   14.12       +40.4%        19.83  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                   29.44       +11.4%        32.81  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                    9.09      +240.9%        30.97  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                   25.68       +84.6%        47.42  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                   41.06        +7.6%        44.20  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                   39.13       +25.9%        49.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                  238.38       +48.4%       353.72  TOTAL

Which will result in 28% overall improvements over the vanilla kernel:

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+  
------------------------  ------------------------  
                   20.89       +95.2%        40.77  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                   39.43        +9.2%        43.07  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                   26.60       +70.6%        45.39  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                   12.70       +56.1%        19.83  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                   27.41       +19.7%        32.81  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                   26.52       +16.8%        30.97  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                   40.70       +16.5%        47.42  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                   45.28        -2.4%        44.20  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                   35.74       +37.8%        49.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                  275.28       +28.5%       353.72  TOTAL

As for the most concerned NFS commits, the wait queue patch increases
the (nr_commits / bytes_written) ratio by +74% for the thresh=1G,10dd
case, +55% for the thresh=100M,10dd case, and mostly ignorable in the
other 1dd, 2dd cases, which looks acceptable.

The other noticeable change of the wait queue is, the RTT time per
write is reduced by 1-2 order(s) in many of the below cases (from
dozens of seconds to hundreds of milliseconds).

Thanks,
Fengguang
---

PS. mountstats numbers

thresh=1GB
==========

1dd

vanilla        WRITE: 33108 33108 0 13794766688 4502688 89550800 1826162 91643336
ioless6        WRITE: 104355 104355 0 12824990824 14192280 1677501539 13497260 1691407074
nfs-wq         WRITE: 58632 58632 0 13635750848 7973952 148662395 4735943 153535047

vanilla       COMMIT: 29 29 0 3248 3712 45210 191022 236235
ioless6       COMMIT: 26 26 0 2912 3328 32875 196848 229725
nfs-wq        COMMIT: 35 35 0 3920 4480 1156 223393 224550

2dd

vanilla        WRITE: 28681 28681 0 11507024952 3900616 178242698 5849890 184288501
ioless6        WRITE: 151075 151075 0 12192866408 20546200 3195004617 5748708 3200969292
nfs-wq         WRITE: 89925 89925 0 15450966104 12229800 212096905 3443883 215849660

vanilla       COMMIT: 43 43 0 4816 5504 45252 349816 396792
ioless6       COMMIT: 52 52 0 5824 6656 40798 376099 417068
nfs-wq        COMMIT: 66 66 0 7392 8448 10854 490021 502373

10dd

vanilla        WRITE: 47281 47281 0 14044390136 6430216 1378503679 11994453 1390582846
ioless6        WRITE: 35972 35972 0 7959317984 4892192 1205239506 7412186 1212670083
nfs-wq         WRITE: 49625 49625 0 14819167672 6749000 10704223 4135391 14876589

vanilla       COMMIT: 235 235 0 26320 30080 328532 1097793 1426737
ioless6       COMMIT: 128 128 0 14336 16384 73611 388716 462470
nfs-wq        COMMIT: 431 432 0 48384 55168 217056 1775499 1993006


thresh=100MB
============

1dd

vanilla        WRITE: 28858 28858 0 12427843376 3924688 6384263 2308574 8722669
nfs-wq         WRITE: 206620 206620 0 13104059680 28100320 90597897 10245879 101016004

vanilla       COMMIT: 250 250 0 28000 32000 27030 229750 256786
nfs-wq        COMMIT: 267 267 0 29904 34176 4672 247504 252184

2dd

vanilla        WRITE: 32593 32593 0 8382655992 4432648 193667999 3611697 197302564
nfs-wq         WRITE: 98662 98662 0 14025467856 13418032 183280630 5381343 188715890

vanilla       COMMIT: 272 272 0 30464 34816 24445 295949 320576
nfs-wq        COMMIT: 584 584 0 65408 74752 1318 483049 484442

10dd

vanilla        WRITE: 32294 32294 0 6651515344 4391984 104926130 8666874 113596871
nfs-wq         WRITE: 27571 27571 0 12711521256 3749656 6129491 2248486 8385102

vanilla       COMMIT: 825 825 0 92400 105600 82135 739763 822179
nfs-wq        COMMIT: 2449 2449 0 274288 313472 6091 2057767 2064555

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RFC][PATCH 1/2] nfs: writeback pages wait queue
  2011-10-10 13:07   ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
@ 2011-10-10 13:10     ` Wu Fengguang
  2011-10-10 13:11       ` [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold Wu Fengguang
  2011-10-18  8:51       ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
  2011-10-10 14:28     ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
  1 sibling, 2 replies; 10+ messages in thread
From: Wu Fengguang @ 2011-10-10 13:10 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

[known bug: this patch will block sync(1) in schecule() if dirty
threshold is set to as low as 1MB.]

The generic writeback routines are departing from congestion_wait()
in preference of get_request_wait(), aka. waiting on the block queues.

Introduce the missing writeback wait queue for NFS, otherwise its
writeback pages will grow out of control, exhausting all PG_dirty pages.

CC: Jens Axboe <axboe@kernel.dk>
CC: Chris Mason <chris.mason@oracle.com>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
CC: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 fs/nfs/client.c           |    2 
 fs/nfs/write.c            |   89 +++++++++++++++++++++++++++++++-----
 include/linux/nfs_fs_sb.h |    1 
 3 files changed, 81 insertions(+), 11 deletions(-)

--- linux-next.orig/fs/nfs/write.c	2011-09-29 20:23:44.000000000 +0800
+++ linux-next/fs/nfs/write.c	2011-10-05 10:43:28.000000000 +0800
@@ -189,11 +189,64 @@ static int wb_priority(struct writeback_
  * NFS congestion control
  */
 
+#define NFS_WAIT_PAGES	(1024L >> (PAGE_SHIFT - 10))
 int nfs_congestion_kb;
 
-#define NFS_CONGESTION_ON_THRESH 	(nfs_congestion_kb >> (PAGE_SHIFT-10))
-#define NFS_CONGESTION_OFF_THRESH	\
-	(NFS_CONGESTION_ON_THRESH - (NFS_CONGESTION_ON_THRESH >> 2))
+/*
+ * SYNC requests will block on (2*limit) and wakeup on (2*limit-NFS_WAIT_PAGES)
+ * ASYNC requests will block on (limit) and wakeup on (limit - NFS_WAIT_PAGES)
+ * In this way SYNC writes will never be blocked by ASYNC ones.
+ */
+
+static void nfs_set_congested(long nr, struct backing_dev_info *bdi)
+{
+	long limit = nfs_congestion_kb >> (PAGE_SHIFT - 10);
+
+	if (nr > limit && !test_bit(BDI_async_congested, &bdi->state))
+		set_bdi_congested(bdi, BLK_RW_ASYNC);
+	else if (nr > 2 * limit && !test_bit(BDI_sync_congested, &bdi->state))
+		set_bdi_congested(bdi, BLK_RW_SYNC);
+}
+
+static void nfs_wait_congested(int is_sync,
+			       struct backing_dev_info *bdi,
+			       wait_queue_head_t *wqh)
+{
+	int waitbit = is_sync ? BDI_sync_congested : BDI_async_congested;
+	DEFINE_WAIT(wait);
+
+	if (!test_bit(waitbit, &bdi->state))
+		return;
+
+	for (;;) {
+		prepare_to_wait(&wqh[is_sync], &wait, TASK_UNINTERRUPTIBLE);
+		if (!test_bit(waitbit, &bdi->state))
+			break;
+
+		io_schedule();
+	}
+	finish_wait(&wqh[is_sync], &wait);
+}
+
+static void nfs_wakeup_congested(long nr,
+				 struct backing_dev_info *bdi,
+				 wait_queue_head_t *wqh)
+{
+	long limit = nfs_congestion_kb >> (PAGE_SHIFT - 10);
+
+	if (nr < 2 * limit - min(limit / 8, NFS_WAIT_PAGES)) {
+		if (test_bit(BDI_sync_congested, &bdi->state))
+			clear_bdi_congested(bdi, BLK_RW_SYNC);
+		if (waitqueue_active(&wqh[BLK_RW_SYNC]))
+			wake_up(&wqh[BLK_RW_SYNC]);
+	}
+	if (nr < limit - min(limit / 8, NFS_WAIT_PAGES)) {
+		if (test_bit(BDI_async_congested, &bdi->state))
+			clear_bdi_congested(bdi, BLK_RW_ASYNC);
+		if (waitqueue_active(&wqh[BLK_RW_ASYNC]))
+			wake_up(&wqh[BLK_RW_ASYNC]);
+	}
+}
 
 static int nfs_set_page_writeback(struct page *page)
 {
@@ -204,11 +257,8 @@ static int nfs_set_page_writeback(struct
 		struct nfs_server *nfss = NFS_SERVER(inode);
 
 		page_cache_get(page);
-		if (atomic_long_inc_return(&nfss->writeback) >
-				NFS_CONGESTION_ON_THRESH) {
-			set_bdi_congested(&nfss->backing_dev_info,
-						BLK_RW_ASYNC);
-		}
+		nfs_set_congested(atomic_long_inc_return(&nfss->writeback),
+				  &nfss->backing_dev_info);
 	}
 	return ret;
 }
@@ -220,8 +270,10 @@ static void nfs_end_page_writeback(struc
 
 	end_page_writeback(page);
 	page_cache_release(page);
-	if (atomic_long_dec_return(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH)
-		clear_bdi_congested(&nfss->backing_dev_info, BLK_RW_ASYNC);
+
+	nfs_wakeup_congested(atomic_long_dec_return(&nfss->writeback),
+			     &nfss->backing_dev_info,
+			     nfss->writeback_wait);
 }
 
 static struct nfs_page *nfs_find_and_lock_request(struct page *page, bool nonblock)
@@ -322,19 +374,34 @@ static int nfs_writepage_locked(struct p
 
 int nfs_writepage(struct page *page, struct writeback_control *wbc)
 {
+	struct inode *inode = page->mapping->host;
+	struct nfs_server *nfss = NFS_SERVER(inode);
 	int ret;
 
 	ret = nfs_writepage_locked(page, wbc);
 	unlock_page(page);
+
+	nfs_wait_congested(wbc->sync_mode == WB_SYNC_ALL,
+			   &nfss->backing_dev_info,
+			   nfss->writeback_wait);
+
 	return ret;
 }
 
-static int nfs_writepages_callback(struct page *page, struct writeback_control *wbc, void *data)
+static int nfs_writepages_callback(struct page *page,
+				   struct writeback_control *wbc, void *data)
 {
+	struct inode *inode = page->mapping->host;
+	struct nfs_server *nfss = NFS_SERVER(inode);
 	int ret;
 
 	ret = nfs_do_writepage(page, wbc, data);
 	unlock_page(page);
+
+	nfs_wait_congested(wbc->sync_mode == WB_SYNC_ALL,
+			   &nfss->backing_dev_info,
+			   nfss->writeback_wait);
+
 	return ret;
 }
 
--- linux-next.orig/include/linux/nfs_fs_sb.h	2011-09-02 09:02:07.000000000 +0800
+++ linux-next/include/linux/nfs_fs_sb.h	2011-10-04 20:26:03.000000000 +0800
@@ -102,6 +102,7 @@ struct nfs_server {
 	struct nfs_iostats __percpu *io_stats;	/* I/O statistics */
 	struct backing_dev_info	backing_dev_info;
 	atomic_long_t		writeback;	/* number of writeback pages */
+	wait_queue_head_t	writeback_wait[2];
 	int			flags;		/* various flags */
 	unsigned int		caps;		/* server capabilities */
 	unsigned int		rsize;		/* read size */
--- linux-next.orig/fs/nfs/client.c	2011-08-22 13:59:52.000000000 +0800
+++ linux-next/fs/nfs/client.c	2011-10-04 20:26:03.000000000 +0800
@@ -1066,6 +1066,8 @@ static struct nfs_server *nfs_alloc_serv
 	INIT_LIST_HEAD(&server->layouts);
 
 	atomic_set(&server->active, 0);
+	init_waitqueue_head(&server->writeback_wait[BLK_RW_SYNC]);
+	init_waitqueue_head(&server->writeback_wait[BLK_RW_ASYNC]);
 
 	server->io_stats = nfs_alloc_iostats();
 	if (!server->io_stats) {

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold
  2011-10-10 13:10     ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
@ 2011-10-10 13:11       ` Wu Fengguang
  2011-10-18  8:53         ` Wu Fengguang
  2011-10-18  8:51       ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
  1 sibling, 1 reply; 10+ messages in thread
From: Wu Fengguang @ 2011-10-10 13:11 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

nfs_congestion_kb is to control the max allowed writeback and in-commit
pages. It's not reasonable for them to outnumber dirty and to-commit
pages. So each of them should not take more than 1/4 dirty threshold.

Considering that nfs_init_writepagecache() is called on fresh boot,
at the time dirty_thresh is much higher than the real dirty limit after
lots of user space memory consumptions, use 1/8 instead.

We might update nfs_congestion_kb when global dirty limit is changed
at runtime, but whatever, do it simple first.

CC: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 fs/nfs/write.c      |   52 ++++++++++++++++++++++++++++--------------
 mm/page-writeback.c |    6 ++++
 2 files changed, 41 insertions(+), 17 deletions(-)

--- linux-next.orig/fs/nfs/write.c	2011-10-09 21:36:22.000000000 +0800
+++ linux-next/fs/nfs/write.c	2011-10-10 21:05:07.000000000 +0800
@@ -1775,61 +1775,79 @@ int nfs_migrate_page(struct address_spac
 	set_page_private(newpage, (unsigned long)req);
 	ClearPagePrivate(page);
 	set_page_private(page, 0);
 	spin_unlock(&mapping->host->i_lock);
 	page_cache_release(page);
 out_unlock:
 	nfs_clear_page_tag_locked(req);
 out:
 	return ret;
 }
 #endif
 
-int __init nfs_init_writepagecache(void)
+void nfs_update_congestion_thresh(void)
 {
-	nfs_wdata_cachep = kmem_cache_create("nfs_write_data",
-					     sizeof(struct nfs_write_data),
-					     0, SLAB_HWCACHE_ALIGN,
-					     NULL);
-	if (nfs_wdata_cachep == NULL)
-		return -ENOMEM;
-
-	nfs_wdata_mempool = mempool_create_slab_pool(MIN_POOL_WRITE,
-						     nfs_wdata_cachep);
-	if (nfs_wdata_mempool == NULL)
-		return -ENOMEM;
-
-	nfs_commit_mempool = mempool_create_slab_pool(MIN_POOL_COMMIT,
-						      nfs_wdata_cachep);
-	if (nfs_commit_mempool == NULL)
-		return -ENOMEM;
+	unsigned long background_thresh;
+	unsigned long dirty_thresh;
 
 	/*
 	 * NFS congestion size, scale with available memory.
 	 *
 	 *  64MB:    8192k
 	 * 128MB:   11585k
 	 * 256MB:   16384k
 	 * 512MB:   23170k
 	 *   1GB:   32768k
 	 *   2GB:   46340k
 	 *   4GB:   65536k
 	 *   8GB:   92681k
 	 *  16GB:  131072k
 	 *
 	 * This allows larger machines to have larger/more transfers.
 	 * Limit the default to 256M
 	 */
 	nfs_congestion_kb = (16*int_sqrt(totalram_pages)) << (PAGE_SHIFT-10);
 	if (nfs_congestion_kb > 256*1024)
 		nfs_congestion_kb = 256*1024;
 
+	/*
+	 * Limit to 1/8 dirty threshold, so that writeback+in_commit pages
+	 * won't overnumber dirty+to_commit pages.
+	 */
+	global_dirty_limits(&background_thresh, &dirty_thresh);
+	dirty_thresh <<= PAGE_SHIFT - 10;
+
+	if (nfs_congestion_kb > dirty_thresh / 8)
+		nfs_congestion_kb = dirty_thresh / 8;
+}
+
+int __init nfs_init_writepagecache(void)
+{
+	nfs_wdata_cachep = kmem_cache_create("nfs_write_data",
+					     sizeof(struct nfs_write_data),
+					     0, SLAB_HWCACHE_ALIGN,
+					     NULL);
+	if (nfs_wdata_cachep == NULL)
+		return -ENOMEM;
+
+	nfs_wdata_mempool = mempool_create_slab_pool(MIN_POOL_WRITE,
+						     nfs_wdata_cachep);
+	if (nfs_wdata_mempool == NULL)
+		return -ENOMEM;
+
+	nfs_commit_mempool = mempool_create_slab_pool(MIN_POOL_COMMIT,
+						      nfs_wdata_cachep);
+	if (nfs_commit_mempool == NULL)
+		return -ENOMEM;
+
+	nfs_update_congestion_thresh();
+
 	return 0;
 }
 
 void nfs_destroy_writepagecache(void)
 {
 	mempool_destroy(nfs_commit_mempool);
 	mempool_destroy(nfs_wdata_mempool);
 	kmem_cache_destroy(nfs_wdata_cachep);
 }
 
--- linux-next.orig/mm/page-writeback.c	2011-10-09 21:36:06.000000000 +0800
+++ linux-next/mm/page-writeback.c	2011-10-10 21:05:07.000000000 +0800
@@ -138,34 +138,39 @@ static struct prop_descriptor vm_dirties
 static int calc_period_shift(void)
 {
 	unsigned long dirty_total;
 
 	if (vm_dirty_bytes)
 		dirty_total = vm_dirty_bytes / PAGE_SIZE;
 	else
 		dirty_total = (vm_dirty_ratio * determine_dirtyable_memory()) /
 				100;
 	return 2 + ilog2(dirty_total - 1);
 }
 
+void __weak nfs_update_congestion_thresh(void)
+{
+}
+
 /*
  * update the period when the dirty threshold changes.
  */
 static void update_completion_period(void)
 {
 	int shift = calc_period_shift();
 	prop_change_shift(&vm_completions, shift);
 	prop_change_shift(&vm_dirties, shift);
 
 	writeback_set_ratelimit();
+	nfs_update_congestion_thresh();
 }
 
 int dirty_background_ratio_handler(struct ctl_table *table, int write,
 		void __user *buffer, size_t *lenp,
 		loff_t *ppos)
 {
 	int ret;
 
 	ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
 	if (ret == 0 && write)
 		dirty_background_bytes = 0;
 	return ret;
@@ -438,24 +443,25 @@ unsigned long bdi_dirty_limit(struct bac
 	bdi_writeout_fraction(bdi, &numerator, &denominator);
 
 	bdi_dirty = (dirty * (100 - bdi_min_ratio)) / 100;
 	bdi_dirty *= numerator;
 	do_div(bdi_dirty, denominator);
 
 	bdi_dirty += (dirty * bdi->min_ratio) / 100;
 	if (bdi_dirty > (dirty * bdi->max_ratio) / 100)
 		bdi_dirty = dirty * bdi->max_ratio / 100;
 
 	return bdi_dirty;
 }
+EXPORT_SYMBOL_GPL(global_dirty_limits);
 
 /*
  * Dirty position control.
  *
  * (o) global/bdi setpoints
  *
  * We want the dirty pages be balanced around the global/bdi setpoints.
  * When the number of dirty pages is higher/lower than the setpoint, the
  * dirty position control ratio (and hence task dirty ratelimit) will be
  * decreased/increased to bring the dirty pages back to the setpoint.
  *
  *     pos_ratio = 1 << RATELIMIT_CALC_SHIFT

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 00/11] IO-less dirty throttling v12
  2011-10-10 13:07   ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
  2011-10-10 13:10     ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
@ 2011-10-10 14:28     ` Wu Fengguang
  2011-10-17  3:03       ` Wu Fengguang
  1 sibling, 1 reply; 10+ messages in thread
From: Wu Fengguang @ 2011-10-10 14:28 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

Hi Trond,

> As for the NFS performance, the dd tests show that adding a writeback
> wait queue to limit the number of NFS PG_writeback pages (patches
> will follow) is able to gain 48% throughput in itself:
> 
>       3.1.0-rc8-ioless6+         3.1.0-rc8-nfs-wq+  
> ------------------------  ------------------------  
>                    22.43       +81.8%        40.77  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
>                    28.21       +52.6%        43.07  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
>                    29.21       +55.4%        45.39  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
>                    14.12       +40.4%        19.83  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
>                    29.44       +11.4%        32.81  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
>                     9.09      +240.9%        30.97  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
>                    25.68       +84.6%        47.42  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
>                    41.06        +7.6%        44.20  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
>                    39.13       +25.9%        49.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
>                   238.38       +48.4%       353.72  TOTAL
> 
> Which will result in 28% overall improvements over the vanilla kernel:
> 
>       3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+  
> ------------------------  ------------------------  
>                    20.89       +95.2%        40.77  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
>                    39.43        +9.2%        43.07  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
>                    26.60       +70.6%        45.39  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
>                    12.70       +56.1%        19.83  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
>                    27.41       +19.7%        32.81  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
>                    26.52       +16.8%        30.97  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
>                    40.70       +16.5%        47.42  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
>                    45.28        -2.4%        44.20  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
>                    35.74       +37.8%        49.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
>                   275.28       +28.5%       353.72  TOTAL
> 
> As for the most concerned NFS commits, the wait queue patch increases
> the (nr_commits / bytes_written) ratio by +74% for the thresh=1G,10dd
> case, +55% for the thresh=100M,10dd case, and mostly ignorable in the
> other 1dd, 2dd cases, which looks acceptable.
> 
> The other noticeable change of the wait queue is, the RTT time per

Sorry it's not RTT, but mainly the local queue time of the WRITE RPCs.

> write is reduced by 1-2 order(s) in many of the below cases (from
> dozens of seconds to hundreds of milliseconds).

I also measured the stddev of the network bandwidths, and find more
smooth network transfers in general with the wait queue, which is
expected.

thresh=1G
        vanilla       ioless6       nfs-wq
1dd     83088173.728  53468627.578  53627922.011
2dd     52398918.208  43733074.167  53531381.177
10dd    67792638.857  44734947.283  39681731.234

However the major difference should still be that the writeback wait
queue can significantly reduce the local queue time for the WRITE RPCs.

The wait queue patch looks reasonable in that it keeps the pages in
PG_dirty state rather than to prematurely put them to PG_writeback
state only to queue them up for dozens of seconds before xmit.

It should be safe because that's exactly the old proved behavior
before the per-bdi writeback patches introduced in 2.6.32. The 2nd
patch on proportional nfs_congestion_kb is a new change, though.

Thanks,
Fengguang

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 00/11] IO-less dirty throttling v12
  2011-10-10 14:28     ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
@ 2011-10-17  3:03       ` Wu Fengguang
  0 siblings, 0 replies; 10+ messages in thread
From: Wu Fengguang @ 2011-10-17  3:03 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

[-- Attachment #1: Type: text/plain, Size: 13557 bytes --]

Hi Trond,

I enhanced the script to compare the write_bw as well as the NFS
write/commit stats.

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
(MB/s)            275.28       +28.5%       353.72  TOTAL write_bw

                 5649.00      +192.3%     16510.00  TOTAL nfs_nr_commits (*)
               261987.00      +205.1%    799451.00  TOTAL nfs_nr_writes  (*)

(MB)              866.52       -18.1%       709.85  TOTAL nfs_commit_size (**)
                    2.94       -44.8%         1.62  TOTAL nfs_write_size

(ms)            47814.05       -84.0%      7631.57  TOTAL nfs_write_queue_time
                 1405.05       -53.6%       652.59  TOTAL nfs_write_rtt_time
                49237.94       -83.2%      8292.74  TOTAL nfs_write_execute_time

                 4320.98       -83.2%       726.27  TOTAL nfs_commit_queue_time
                22943.13        -8.6%     20963.46  TOTAL nfs_commit_rtt_time
                27307.42       -20.5%     21714.12  TOTAL nfs_commit_execute_time

(*) The x3 nfs_nr_writes and nfs_nr_commits numbers should be taken
    with a salt because the total written bytes are increased at the
    same time.

(**) The TOTAL nfs_commit_size mainly reflects the thresh=1G cases
     because the numbers in the 10M/100M cases are very small
     comparing to the 1G cases (as shown in the below case by case
     values). Ditto for the *_time values.  However the thresh=1G
     cases should be most close to the typical NFS client setup, so
     the values are still mostly representative numbers.

Below are the detailed case by case views. The script is attached,
which shows how exactly the numbers are calculated from mountstats.

Thanks,
Fengguang
---

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                   20.89       +95.2%        40.77  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                   39.43        +9.2%        43.07  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                   26.60       +70.6%        45.39  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                   12.70       +56.1%        19.83  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                   27.41       +19.7%        32.81  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                   26.52       +16.8%        30.97  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                   40.70       +16.5%        47.42  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                   45.28        -2.4%        44.20  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                   35.74       +37.8%        49.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                  275.28       +28.5%       353.72  TOTAL write_bw

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                  825.00      +196.8%      2449.00  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                  250.00        +6.8%       267.00  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                  272.00      +114.7%       584.00  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                 1477.00      +350.8%      6658.00  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                  997.00      +115.8%      2152.00  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                 1521.00      +154.3%      3868.00  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                  235.00       +83.4%       431.00  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                   29.00       +20.7%        35.00  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                   43.00       +53.5%        66.00  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                 5649.00      +192.3%     16510.00  TOTAL nfs_nr_commits

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                32294.00       -14.6%     27571.00  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                28858.00      +616.0%    206620.00  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                32593.00      +202.7%     98662.00  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                18937.00      +111.7%     40085.00  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                18762.00      +660.5%    142691.00  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                21473.00      +298.8%     85640.00  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                47281.00        +5.0%     49625.00  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                33108.00       +77.1%     58632.00  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                28681.00      +213.5%     89925.00  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
               261987.00      +205.1%    799451.00  TOTAL nfs_nr_writes

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                    7.69       -35.6%         4.95  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                   47.41        -1.3%        46.81  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                   29.39       -22.1%        22.90  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                    2.73       -68.3%         0.87  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                    8.24       -46.7%         4.39  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                    5.21       -55.1%         2.34  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                   56.99       -42.5%        32.79  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                  453.65       -18.1%       371.54  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                  255.21       -12.5%       223.26  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                  866.52       -18.1%       709.85  TOTAL nfs_commit_size

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                    0.20      +123.8%         0.44  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                    0.41       -85.3%         0.06  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                    0.25       -44.7%         0.14  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                    0.21       -32.4%         0.14  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                    0.44       -84.9%         0.07  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                    0.37       -71.4%         0.11  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                    0.28        +0.5%         0.28  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                    0.40       -44.2%         0.22  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                    0.38       -57.2%         0.16  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                    2.94       -44.8%         1.62  TOTAL nfs_write_size

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                 3249.09       -93.2%       222.32  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                  221.23       +98.2%       438.48  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                 5942.01       -68.7%      1857.66  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                  285.75       -99.9%         0.38  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                    6.21       -95.4%         0.28  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                   34.73       -92.4%         2.63  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                29155.55       -99.3%       215.70  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                 2704.81        -6.3%      2535.52  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                 6214.66       -62.0%      2358.60  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                47814.05       -84.0%      7631.57  TOTAL nfs_write_queue_time

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                  268.37       -69.6%        81.55  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                   80.00       -38.0%        49.59  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                  110.81       -50.8%        54.54  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                  295.72       -41.7%       172.52  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                   36.64       -31.6%        25.05  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                  100.70       -33.5%        66.93  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                  253.68       -67.2%        83.33  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                   55.16       +46.4%        80.77  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                  203.96       -81.2%        38.30  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                 1405.05       -53.6%       652.59  TOTAL nfs_write_rtt_time

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                 3517.58       -91.4%       304.13  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                  302.26       +61.7%       488.90  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                 6053.53       -68.4%      1912.75  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                  581.52       -70.3%       173.00  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                   42.99       -40.7%        25.47  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                  135.56       -48.5%        69.75  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                29411.03       -99.0%       299.78  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                 2768.01        -5.4%      2618.62  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                 6425.46       -62.6%      2400.33  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                49237.94       -83.2%      8292.74  TOTAL nfs_write_execute_time

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                   99.56       -97.5%         2.49  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                  108.12       -83.8%        17.50  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                   89.87       -97.5%         2.26  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                    9.00       -90.5%         0.85  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                    2.41       -58.2%         1.01  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                    2.68       -59.9%         1.07  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                 1398.01       -64.0%       503.61  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                 1558.97       -97.9%        33.03  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                 1052.37       -84.4%       164.45  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                 4320.98       -83.2%       726.27  TOTAL nfs_commit_queue_time

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                  896.68        -6.3%       840.25  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                  919.00        +0.9%       926.98  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                 1088.05       -24.0%       827.14  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                  266.54       -22.7%       206.09  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                  191.28       -41.3%       112.32  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                  187.90       -34.0%       123.98  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                 4671.46       -11.8%      4119.49  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                 6586.97        -3.1%      6382.66  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                 8135.26        -8.7%      7424.56  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                22943.13        -8.6%     20963.46  TOTAL nfs_commit_rtt_time

      3.1.0-rc4-vanilla+         3.1.0-rc8-nfs-wq+
------------------------  ------------------------
                  996.58       -15.4%       843.02  NFS-thresh=100M/nfs-10dd-1M-32p-32768M-100M:10-X
                 1027.14        -8.0%       944.51  NFS-thresh=100M/nfs-1dd-1M-32p-32768M-100M:10-X
                 1178.59       -29.6%       829.52  NFS-thresh=100M/nfs-2dd-1M-32p-32768M-100M:10-X
                  275.75       -24.9%       207.03  NFS-thresh=10M/nfs-10dd-1M-32p-32768M-10M:10-X
                  193.71       -41.5%       113.35  NFS-thresh=10M/nfs-1dd-1M-32p-32768M-10M:10-X
                  190.67       -34.4%       125.12  NFS-thresh=10M/nfs-2dd-1M-32p-32768M-10M:10-X
                 6071.22       -23.8%      4624.14  NFS-thresh=1G/nfs-10dd-1M-32p-32768M-1024M:10-X
                 8146.03       -21.2%      6415.71  NFS-thresh=1G/nfs-1dd-1M-32p-32768M-1024M:10-X
                 9227.72       -17.5%      7611.71  NFS-thresh=1G/nfs-2dd-1M-32p-32768M-1024M:10-X
                27307.42       -20.5%     21714.12  TOTAL nfs_commit_execute_time


[-- Attachment #2: compare.rb --]
[-- Type: application/x-ruby, Size: 6250 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][PATCH 1/2] nfs: writeback pages wait queue
  2011-10-10 13:10     ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
  2011-10-10 13:11       ` [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold Wu Fengguang
@ 2011-10-18  8:51       ` Wu Fengguang
  2011-10-20  3:59         ` Wu Fengguang
  1 sibling, 1 reply; 10+ messages in thread
From: Wu Fengguang @ 2011-10-18  8:51 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

On Mon, Oct 10, 2011 at 09:10:51PM +0800, Wu Fengguang wrote:
> [known bug: this patch will block sync(1) in schecule() if dirty
> threshold is set to as low as 1MB.]

The root cause of the deadlock is found to be, the flusher
generated enough PG_writeback pages, and got blocked just before it's
able to assemble one complete NFS WRITE RPC. So the PG_writeback pages
never manage to reach the NFS server!

Feng kindly offers a fix that converts the per-page throttling to the
more coarse grained per-write_pages throttling, which is found to
further increase the performance as well as commit size. Bingo!

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  354.65       +45.4%       515.48  TOTAL write_bw                                                                                                      
                10498.00       +91.7%     20120.00  TOTAL nfs_nr_commits                                                                                                
               233013.00       +99.9%    465751.00  TOTAL nfs_nr_writes                                                                                                 
                  895.47        +3.1%       923.62  TOTAL nfs_commit_size                                                                                               
                    5.71       -14.5%         4.88  TOTAL nfs_write_size                                                                                                
               108269.33       -84.3%     17003.69  TOTAL nfs_write_queue_time                                                                                          
                 1836.03       -34.4%      1204.27  TOTAL nfs_write_rtt_time                                                                                            
               110144.96       -83.5%     18220.96  TOTAL nfs_write_execute_time                                                                                        
                 2902.62       -88.6%       332.20  TOTAL nfs_commit_queue_time                                                                                         
                16282.75       -23.3%     12490.87  TOTAL nfs_commit_rtt_time                                                                                           
                19234.16       -33.3%     12833.00  TOTAL nfs_commit_execute_time                                                                                       

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                   21.85       +97.9%        43.23  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   51.38       +42.6%        73.26  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   28.81      +145.3%        70.68  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   13.74       +57.1%        21.59  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   29.11        -0.3%        29.02  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                   16.68       +90.5%        31.78  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   48.88       +41.2%        69.01  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   57.85       +32.7%        76.74  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   47.13       +63.1%        76.87  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    9.82       -33.0%         6.58  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   13.72       -18.1%        11.24  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   15.68       -65.0%         5.48  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  354.65       +45.4%       515.48  TOTAL write_bw

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  834.00      +224.2%      2704.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  311.00      +144.1%       759.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  282.00      +253.5%       997.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1387.00      +334.2%      6023.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                 1081.00      +280.3%      4111.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  930.00      +368.0%      4352.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  254.00      +108.7%       530.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   38.00       +55.3%        59.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   54.00       +96.3%       106.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                 1321.00       -74.9%       332.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                 1932.00       -99.1%        17.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                 2074.00       -93.7%       130.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                10498.00       +91.7%     20120.00  TOTAL nfs_nr_commits

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                28359.00       -39.2%     17230.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                22241.00      +550.6%    144695.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                24969.00       +27.8%     31900.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                21722.00       +38.2%     30030.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                11015.00       +28.2%     14117.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                17012.00      +217.7%     54039.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                25616.00        +3.1%     26403.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                24761.00      +177.5%     68702.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                29235.00       +37.1%     40089.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                12929.00       +21.6%     15720.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                 7683.00       +24.2%      9542.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                 7471.00       +77.8%     13284.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               233013.00       +99.9%    465751.00  TOTAL nfs_nr_writes

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                    7.84       -38.6%         4.81  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   49.58       -41.6%        28.94  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   30.58       -30.5%        21.27  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    2.99       -63.9%         1.08  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    8.06       -73.8%         2.12  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    5.33       -58.9%         2.19  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   57.68       -32.1%        39.15  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                  465.15       -16.5%       388.43  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  261.60       -16.4%       218.80  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    2.25      +163.5%         5.93  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    2.13     +9221.2%       198.29  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    2.27      +455.3%        12.61  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  895.47        +3.1%       923.62  TOTAL nfs_commit_size

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                    0.23      +227.7%         0.76  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    0.69       -78.1%         0.15  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    0.35       +92.4%         0.66  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    0.19       +13.4%         0.22  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.79       -22.2%         0.62  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    0.29       -39.5%         0.18  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                    0.57       +37.4%         0.79  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                    0.71       -53.3%         0.33  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                    0.48       +19.7%         0.58  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    0.23       -45.5%         0.13  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.53       -34.0%         0.35  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.63       -80.4%         0.12  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                    5.71       -14.5%         4.88  TOTAL nfs_write_size

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                 6544.25       -95.1%       321.04  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 1064.82       +11.2%      1184.16  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                22801.48       -86.3%      3113.39  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1083.47       -99.8%         2.56  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    3.82       -55.8%         1.69  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                 2840.08       -99.3%        20.09  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                20227.73       -96.6%       683.65  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2346.04      +274.0%      8774.87  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                50812.68       -94.3%      2901.88  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  417.03       -99.9%         0.25  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    1.70       -97.9%         0.04  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  126.23       -99.9%         0.08  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               108269.33       -84.3%     17003.69  TOTAL nfs_write_queue_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  276.99       -41.1%       163.20  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  106.71       -67.0%        35.21  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   76.32       +13.4%        86.53  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  335.96       -41.8%       195.49  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   33.67       +70.7%        57.48  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  159.03       -46.0%        85.80  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  340.25       -67.6%       110.23  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   47.88       +12.7%        53.96  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  118.13       -53.8%        54.62  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  223.24       -53.0%       104.83  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   58.89       +12.8%        66.43  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   58.97      +223.0%       190.49  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                 1836.03       -34.4%      1204.27  TOTAL nfs_write_rtt_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                 6821.43       -92.9%       484.70  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 1173.98        +4.0%      1220.80  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                22878.44       -86.0%      3201.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1419.50       -86.0%       198.20  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   37.72       +57.1%        59.27  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                 2999.22       -96.5%       106.41  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                20570.86       -96.1%       795.46  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2416.09      +265.6%      8832.81  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                50941.27       -94.2%      2960.10  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  640.32       -83.6%       105.13  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.78        +9.4%        66.49  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  185.35        +2.8%       190.59  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               110144.96       -83.5%     18220.96  TOTAL nfs_write_execute_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                   54.75       -89.4%         5.82  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   88.26       -98.7%         1.12  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   38.41       -92.1%         3.05  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    7.59       -91.0%         0.68  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.42       -93.3%         0.03  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    2.57       -75.1%         0.64  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  784.08       -93.8%        48.69  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 1338.39       -81.4%       248.51  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  586.69       -96.0%        23.32  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    1.27       -84.3%         0.20  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.02      +147.1%         0.06  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.16       -41.3%         0.09  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                 2902.62       -88.6%       332.20  TOTAL nfs_commit_queue_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  702.80        +8.2%       760.66  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  538.99       -35.8%       346.08  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  704.42       -37.1%       443.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  228.96       -18.4%       186.78  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  155.88       -54.6%        70.75  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  169.51       -28.9%       120.53  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 3791.44       -11.4%      3361.05  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 4229.79       -17.8%      3476.80  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 5534.04       -35.4%      3574.73  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   96.34       -31.4%        66.11  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.95       -35.5%        39.29  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   69.64       -35.3%        45.08  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                16282.75       -23.3%     12490.87  TOTAL nfs_commit_rtt_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  757.92        +1.2%       766.73  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  627.36       -44.6%       347.25  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  743.59       -40.0%       446.39  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  236.73       -20.8%       187.57  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  156.31       -54.7%        70.79  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  172.16       -29.6%       121.26  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 4579.56       -25.5%      3411.34  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 5568.53       -33.1%      3725.49  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 6163.54       -41.5%      3605.27  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   97.67       -32.1%        66.35  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.99       -35.5%        39.35  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   69.82       -35.3%        45.20  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                19234.16       -33.3%     12833.00  TOTAL nfs_commit_execute_time

---
Subject: nfs: fix a deadlock in nfs writeback path
Date: Tue Oct 18 16:49:19 CST 2011

From: "Tang, Feng" <feng.tang@intel.com>

In a corner case where nfs_congestion_kb is set very small, there
will be a deadlock happens in nfs_writepages():

	err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
	/* this func may be congested when calling nfs_writepages_callback, before
	 * the real pageio req is really issued, thus get blocked for ever */
	nfs_pageio_complete(&pgio);

So move the nfs_wait_congested() after nfs_pageio_complet(&pgio) will fix
the issue, which also is more efficient in calling nfs_wait_congested()
per inode instead of per dirty page of that inode.

Suggested-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 fs/nfs/write.c |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

--- linux-next.orig/fs/nfs/write.c	2011-10-17 16:07:24.000000000 +0800
+++ linux-next/fs/nfs/write.c	2011-10-18 16:49:17.000000000 +0800
@@ -391,23 +391,18 @@ int nfs_writepage(struct page *page, str
 static int nfs_writepages_callback(struct page *page,
 				   struct writeback_control *wbc, void *data)
 {
-	struct inode *inode = page->mapping->host;
-	struct nfs_server *nfss = NFS_SERVER(inode);
 	int ret;
 
 	ret = nfs_do_writepage(page, wbc, data);
 	unlock_page(page);
 
-	nfs_wait_congested(wbc->sync_mode == WB_SYNC_ALL,
-			   &nfss->backing_dev_info,
-			   nfss->writeback_wait);
-
 	return ret;
 }
 
 int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
 {
 	struct inode *inode = mapping->host;
+	struct nfs_server *nfss = NFS_SERVER(inode);
 	unsigned long *bitlock = &NFS_I(inode)->flags;
 	struct nfs_pageio_descriptor pgio;
 	int err;
@@ -424,6 +419,10 @@ int nfs_writepages(struct address_space 
 	err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
 	nfs_pageio_complete(&pgio);
 
+	nfs_wait_congested(wbc->sync_mode == WB_SYNC_ALL,
+			   &nfss->backing_dev_info,
+			   nfss->writeback_wait);
+
 	clear_bit_unlock(NFS_INO_FLUSHING, bitlock);
 	smp_mb__after_clear_bit();
 	wake_up_bit(bitlock, NFS_INO_FLUSHING);

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold
  2011-10-10 13:11       ` [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold Wu Fengguang
@ 2011-10-18  8:53         ` Wu Fengguang
  2011-10-18  8:59           ` Wu Fengguang
  0 siblings, 1 reply; 10+ messages in thread
From: Wu Fengguang @ 2011-10-18  8:53 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

An update from Feng:

Subject: nfs: fix a bug about adjusting nfs_congestion_kb
Date: Tue Oct 18 12:47:58 CST 2011

From: "Tang, Feng" <feng.tang@intel.com>

The VM dirty_thresh may be set to very small(even 0) by wired user, in
such case, nfs_congestion_kb may be adjusted to 0, will cause the normal
NFS write function get congested and deaklocked. So let's set the bottom
line of nfs_congestion_kb to 128kb.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
 fs/nfs/write.c |    1 +
 1 file changed, 1 insertion(+)

--- linux-next.orig/fs/nfs/write.c	2011-10-17 16:07:40.000000000 +0800
+++ linux-next/fs/nfs/write.c	2011-10-18 12:47:46.000000000 +0800
@@ -1814,6 +1814,7 @@ void nfs_update_congestion_thresh(void)
 	 */
 	global_dirty_limits(&background_thresh, &dirty_thresh);
 	dirty_thresh <<= PAGE_SHIFT - 10;
+	dirty_thresh += 1024;
 
 	if (nfs_congestion_kb > dirty_thresh / 8)
 		nfs_congestion_kb = dirty_thresh / 8;

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold
  2011-10-18  8:53         ` Wu Fengguang
@ 2011-10-18  8:59           ` Wu Fengguang
  2011-10-20  2:49             ` Wu Fengguang
  0 siblings, 1 reply; 10+ messages in thread
From: Wu Fengguang @ 2011-10-18  8:59 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML, Tang Feng

> @@ -1814,6 +1814,7 @@ void nfs_update_congestion_thresh(void)
>  	 */
>  	global_dirty_limits(&background_thresh, &dirty_thresh);
>  	dirty_thresh <<= PAGE_SHIFT - 10;
> +	dirty_thresh += 1024;
>  
>  	if (nfs_congestion_kb > dirty_thresh / 8)
>  		nfs_congestion_kb = dirty_thresh / 8;

Here are the new results with ioless + this fix + fix to patch 1.

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  354.65       +45.4%       515.48  TOTAL write_bw                                                                                                      
                10498.00       +91.7%     20120.00  TOTAL nfs_nr_commits                                                                                                
               233013.00       +99.9%    465751.00  TOTAL nfs_nr_writes                                                                                                 
                  895.47        +3.1%       923.62  TOTAL nfs_commit_size                                                                                               
                    5.71       -14.5%         4.88  TOTAL nfs_write_size                                                                                                
               108269.33       -84.3%     17003.69  TOTAL nfs_write_queue_time                                                                                          
                 1836.03       -34.4%      1204.27  TOTAL nfs_write_rtt_time                                                                                            
               110144.96       -83.5%     18220.96  TOTAL nfs_write_execute_time                                                                                        
                 2902.62       -88.6%       332.20  TOTAL nfs_commit_queue_time                                                                                         
                16282.75       -23.3%     12490.87  TOTAL nfs_commit_rtt_time                                                                                           
                19234.16       -33.3%     12833.00  TOTAL nfs_commit_execute_time                                                                                       

before/after this single fix:
(performance is mostly unchanged except for the thresh=1M cases)

      3.1.0-rc8-nfs-wq3+        3.1.0-rc8-nfs-wq4+  
------------------------  ------------------------  
                   41.67        +3.8%        43.23  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   77.49        -5.5%        73.26  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   69.31        +2.0%        70.68  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   21.99        -1.8%        21.59  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   29.03        -0.0%        29.02  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                   32.51        -2.2%        31.78  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   69.78        -1.1%        69.01  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   73.39        +4.6%        76.74  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   80.84        -4.9%        76.87  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    5.78       +13.7%         6.58  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   11.10        +1.3%        11.24  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    7.60       -27.9%         5.48  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  520.49        -1.0%       515.48  TOTAL write_bw

More detailed comparison to vanilla kernel:

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                   21.85       +97.9%        43.23  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   51.38       +42.6%        73.26  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   28.81      +145.3%        70.68  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   13.74       +57.1%        21.59  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   29.11        -0.3%        29.02  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                   16.68       +90.5%        31.78  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   48.88       +41.2%        69.01  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   57.85       +32.7%        76.74  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   47.13       +63.1%        76.87  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    9.82       -33.0%         6.58  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   13.72       -18.1%        11.24  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   15.68       -65.0%         5.48  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  354.65       +45.4%       515.48  TOTAL write_bw

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  834.00      +224.2%      2704.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  311.00      +144.1%       759.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  282.00      +253.5%       997.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1387.00      +334.2%      6023.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                 1081.00      +280.3%      4111.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  930.00      +368.0%      4352.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  254.00      +108.7%       530.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   38.00       +55.3%        59.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   54.00       +96.3%       106.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                 1321.00       -74.9%       332.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                 1932.00       -99.1%        17.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                 2074.00       -93.7%       130.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                10498.00       +91.7%     20120.00  TOTAL nfs_nr_commits

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                28359.00       -39.2%     17230.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                22241.00      +550.6%    144695.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                24969.00       +27.8%     31900.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                21722.00       +38.2%     30030.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                11015.00       +28.2%     14117.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                17012.00      +217.7%     54039.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                25616.00        +3.1%     26403.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                24761.00      +177.5%     68702.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                29235.00       +37.1%     40089.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                12929.00       +21.6%     15720.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                 7683.00       +24.2%      9542.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                 7471.00       +77.8%     13284.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               233013.00       +99.9%    465751.00  TOTAL nfs_nr_writes

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                    7.84       -38.6%         4.81  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   49.58       -41.6%        28.94  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   30.58       -30.5%        21.27  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    2.99       -63.9%         1.08  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    8.06       -73.8%         2.12  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    5.33       -58.9%         2.19  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   57.68       -32.1%        39.15  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                  465.15       -16.5%       388.43  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  261.60       -16.4%       218.80  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    2.25      +163.5%         5.93  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    2.13     +9221.2%       198.29  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    2.27      +455.3%        12.61  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  895.47        +3.1%       923.62  TOTAL nfs_commit_size

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                    0.23      +227.7%         0.76  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    0.69       -78.1%         0.15  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    0.35       +92.4%         0.66  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    0.19       +13.4%         0.22  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.79       -22.2%         0.62  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    0.29       -39.5%         0.18  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                    0.57       +37.4%         0.79  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                    0.71       -53.3%         0.33  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                    0.48       +19.7%         0.58  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    0.23       -45.5%         0.13  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.53       -34.0%         0.35  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.63       -80.4%         0.12  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                    5.71       -14.5%         4.88  TOTAL nfs_write_size

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                 6544.25       -95.1%       321.04  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 1064.82       +11.2%      1184.16  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                22801.48       -86.3%      3113.39  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1083.47       -99.8%         2.56  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    3.82       -55.8%         1.69  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                 2840.08       -99.3%        20.09  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                20227.73       -96.6%       683.65  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2346.04      +274.0%      8774.87  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                50812.68       -94.3%      2901.88  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  417.03       -99.9%         0.25  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    1.70       -97.9%         0.04  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  126.23       -99.9%         0.08  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               108269.33       -84.3%     17003.69  TOTAL nfs_write_queue_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  276.99       -41.1%       163.20  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  106.71       -67.0%        35.21  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   76.32       +13.4%        86.53  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  335.96       -41.8%       195.49  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   33.67       +70.7%        57.48  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  159.03       -46.0%        85.80  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  340.25       -67.6%       110.23  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   47.88       +12.7%        53.96  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  118.13       -53.8%        54.62  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  223.24       -53.0%       104.83  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   58.89       +12.8%        66.43  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   58.97      +223.0%       190.49  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                 1836.03       -34.4%      1204.27  TOTAL nfs_write_rtt_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                 6821.43       -92.9%       484.70  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 1173.98        +4.0%      1220.80  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                22878.44       -86.0%      3201.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 1419.50       -86.0%       198.20  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   37.72       +57.1%        59.27  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                 2999.22       -96.5%       106.41  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                20570.86       -96.1%       795.46  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2416.09      +265.6%      8832.81  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                50941.27       -94.2%      2960.10  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  640.32       -83.6%       105.13  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.78        +9.4%        66.49  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  185.35        +2.8%       190.59  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               110144.96       -83.5%     18220.96  TOTAL nfs_write_execute_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                   54.75       -89.4%         5.82  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   88.26       -98.7%         1.12  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   38.41       -92.1%         3.05  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    7.59       -91.0%         0.68  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.42       -93.3%         0.03  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    2.57       -75.1%         0.64  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  784.08       -93.8%        48.69  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 1338.39       -81.4%       248.51  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  586.69       -96.0%        23.32  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    1.27       -84.3%         0.20  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.02      +147.1%         0.06  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.16       -41.3%         0.09  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                 2902.62       -88.6%       332.20  TOTAL nfs_commit_queue_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  702.80        +8.2%       760.66  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  538.99       -35.8%       346.08  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  704.42       -37.1%       443.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  228.96       -18.4%       186.78  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  155.88       -54.6%        70.75  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  169.51       -28.9%       120.53  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 3791.44       -11.4%      3361.05  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 4229.79       -17.8%      3476.80  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 5534.04       -35.4%      3574.73  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   96.34       -31.4%        66.11  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.95       -35.5%        39.29  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   69.64       -35.3%        45.08  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                16282.75       -23.3%     12490.87  TOTAL nfs_commit_rtt_time

      3.1.0-rc8-vanilla+        3.1.0-rc8-nfs-wq4+
------------------------  ------------------------
                  757.92        +1.2%       766.73  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  627.36       -44.6%       347.25  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  743.59       -40.0%       446.39  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  236.73       -20.8%       187.57  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  156.31       -54.7%        70.79  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  172.16       -29.6%       121.26  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 4579.56       -25.5%      3411.34  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 5568.53       -33.1%      3725.49  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 6163.54       -41.5%      3605.27  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   97.67       -32.1%        66.35  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   60.99       -35.5%        39.35  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   69.82       -35.3%        45.20  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                19234.16       -33.3%     12833.00  TOTAL nfs_commit_execute_time


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold
  2011-10-18  8:59           ` Wu Fengguang
@ 2011-10-20  2:49             ` Wu Fengguang
  0 siblings, 0 replies; 10+ messages in thread
From: Wu Fengguang @ 2011-10-20  2:49 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML, Tang Feng

> >  	if (nfs_congestion_kb > dirty_thresh / 8)
> >  		nfs_congestion_kb = dirty_thresh / 8;

To confirm whether that's a good threshold,  I tried double it by
using "/ 4".  It results in -8.4% overall throughput regression. So
I'll stick with the current "/ 8".

Thanks,
Fengguang
---

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  472.17        -8.4%       432.32  TOTAL write_bw
                15776.00       -27.3%     11466.00  TOTAL nfs_nr_commits
               401731.00       +75.5%    705206.00  TOTAL nfs_nr_writes
                  918.32       +22.4%      1124.07  TOTAL nfs_commit_size
                    4.97       -25.3%         3.71  TOTAL nfs_write_size
                14098.08       -30.6%      9788.99  TOTAL nfs_write_queue_time
                 1314.33       +55.3%      2041.51  TOTAL nfs_write_rtt_time
                15438.68       -23.2%     11851.79  TOTAL nfs_write_execute_time
                  177.75       +73.1%       307.68  TOTAL nfs_commit_queue_time
                15026.97        -3.6%     14491.26  TOTAL nfs_commit_rtt_time
                15227.06        -2.7%     14809.49  TOTAL nfs_commit_execute_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                   44.49        -7.7%        41.08  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   62.35        -1.7%        61.28  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   67.51       -10.0%        60.76  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   22.90       -30.0%        16.03  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   29.91       -16.9%        24.87  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                   26.51       -20.0%        21.20  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   68.96        -1.2%        68.13  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   60.08       -17.9%        49.30  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   70.55        +4.1%        73.44  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    5.63       -16.9%         4.68  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    7.91        -2.4%         7.71  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    5.38       -28.7%         3.84  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  472.17        -8.4%       432.32  TOTAL write_bw

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                 2565.00       -11.6%      2267.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  384.00        +1.8%       391.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  866.00        -9.9%       780.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 5801.00       -41.0%      3423.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                 2092.00       -27.6%      1515.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                 3231.00       -24.2%      2450.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  408.00        -2.9%       396.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   46.00        -4.3%        44.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   86.00        +9.3%        94.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  138.00       -51.4%        67.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                  119.00       -91.6%        10.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   40.00       -27.5%        29.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                15776.00       -27.3%     11466.00  TOTAL nfs_nr_commits

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                17896.00       +30.5%     23348.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                62623.00      +371.7%    295418.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                37830.00       +37.4%     51991.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                27685.00       +13.1%     31312.00  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                51531.00        +7.4%     55330.00  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                84310.00       +14.8%     96814.00  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                21208.00        +0.8%     21375.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                26724.00        +5.1%     28092.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                31308.00       +67.6%     52461.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                12866.00       +13.9%     14649.00  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                12907.00        +9.2%     14088.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                14843.00       +37.0%     20328.00  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
               401731.00       +75.5%    705206.00  TOTAL nfs_nr_writes

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                    5.21        +5.2%         5.48  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   48.66        -3.4%        47.01  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   23.39        -0.1%        23.36  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    1.19       +18.7%         1.41  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    4.28       +15.1%         4.92  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    2.46        +5.5%         2.60  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   50.71        +1.7%        51.57  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                  464.69        -0.5%       462.22  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  245.31        -4.8%       233.60  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   12.22       +71.4%        20.94  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   19.89     +1063.9%       231.46  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   40.33        -2.0%        39.52  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  918.32       +22.4%      1124.07  TOTAL nfs_commit_size

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                    0.75       -28.7%         0.53  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    0.30       -79.1%         0.06  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    0.54       -34.6%         0.35  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    0.25       -38.1%         0.15  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.17       -22.4%         0.13  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    0.09       -30.3%         0.07  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                    0.98        -2.1%         0.96  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                    0.80        -9.5%         0.72  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                    0.67       -37.9%         0.42  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    0.13       -26.9%         0.10  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.18       -10.4%         0.16  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.11       -48.1%         0.06  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                    4.97       -25.3%         3.71  TOTAL nfs_write_size

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  383.37       -32.7%       258.17  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 5483.72       -67.9%      1759.47  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                 3757.03       -36.1%      2399.96  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    2.61     +9692.1%       255.20  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  145.09      +277.8%       548.13  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                   57.93      +584.8%       396.71  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  498.56        -1.1%       492.84  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2475.43       +15.0%      2847.51  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 1293.33       -35.9%       829.56  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    0.20      +188.5%         0.59  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.56       -11.5%         0.49  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.25       +39.0%         0.35  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                14098.08       -30.6%      9788.99  TOTAL nfs_write_queue_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  156.19      +153.8%       396.37  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   47.14       -60.0%        18.86  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   74.76       +59.7%       119.40  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  176.05       +77.5%       312.45  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                   88.28       +32.3%       116.82  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  107.48       +12.3%       120.71  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  129.32       -14.8%       110.23  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   85.62       +36.9%       117.24  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   58.52       -20.8%        46.34  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  118.53      +115.7%       255.64  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                  112.27       +40.8%       158.12  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  160.16       +68.2%       269.33  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                 1314.33       +55.3%      2041.51  TOTAL nfs_write_rtt_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  540.09       +21.2%       654.86  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                 5533.64       -67.8%      1779.65  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                 3833.18       -34.2%      2521.16  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  178.79      +217.6%       567.74  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  233.78      +184.6%       665.23  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  165.69      +212.4%       517.63  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                  630.13        -4.0%       605.10  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 2574.27       +15.6%      2976.37  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 1357.04       -35.2%       879.46  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  118.76      +115.8%       256.26  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                  112.86       +40.6%       158.64  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                  160.43       +68.1%       269.70  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                15438.68       -23.2%     11851.79  TOTAL nfs_write_execute_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                    4.15       -29.5%         2.92  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    5.79      +550.6%        37.64  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    5.30      +161.4%        13.86  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    0.63       +23.4%         0.78  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                    0.77       +52.3%         1.17  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                    0.54      +100.0%         1.08  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                   66.40       +44.8%        96.17  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   25.80       +41.4%        36.48  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   67.99       +72.2%       117.05  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    0.19       +66.4%         0.31  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                    0.10                      0.00  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                    0.10      +106.9%         0.21  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                  177.75       +73.1%       307.68  TOTAL nfs_commit_queue_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  786.25        -7.3%       729.04  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  523.35        +4.8%       548.62  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  487.58        +4.9%       511.71  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  181.60       +22.2%       221.92  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  110.03       +13.2%       124.60  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  128.24       +11.0%       142.35  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 4352.76        -5.2%      4126.10  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 4022.83        -2.6%      3917.34  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 4282.52        -6.6%      3999.64  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   62.09       +56.1%        96.94  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   39.20       -22.5%        30.40  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   50.52       -15.7%        42.59  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                15026.97        -3.6%     14491.26  TOTAL nfs_commit_rtt_time

3.1.0-rc9-ioless-full-next-20111014+  3.1.0-rc9-ioless-full-nfs-thresh-4-next-20111014+
------------------------  ------------------------
                  790.68        -7.4%       732.23  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  529.17       +10.8%       586.28  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  493.32        +6.6%       525.82  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  182.35       +22.2%       222.82  NFS-thresh=10M/nfs-10dd-4k-32p-32768M-10M:10-X
                  110.82       +13.5%       125.80  NFS-thresh=10M/nfs-1dd-4k-32p-32768M-10M:10-X
                  128.80       +11.4%       143.46  NFS-thresh=10M/nfs-2dd-4k-32p-32768M-10M:10-X
                 4420.89        -4.4%      4224.24  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 4048.67        -2.3%      3953.91  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 4370.05        -5.6%      4124.34  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                   62.33       +56.1%        97.28  NFS-thresh=1M/nfs-10dd-4k-32p-32768M-1M:10-X
                   39.33       -22.4%        30.50  NFS-thresh=1M/nfs-1dd-4k-32p-32768M-1M:10-X
                   50.65       -15.5%        42.79  NFS-thresh=1M/nfs-2dd-4k-32p-32768M-1M:10-X
                15227.06        -2.7%     14809.49  TOTAL nfs_commit_execute_time

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC][PATCH 1/2] nfs: writeback pages wait queue
  2011-10-18  8:51       ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
@ 2011-10-20  3:59         ` Wu Fengguang
  0 siblings, 0 replies; 10+ messages in thread
From: Wu Fengguang @ 2011-10-20  3:59 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: Peter Zijlstra, linux-fsdevel@vger.kernel.org, Andrew Morton,
	Jan Kara, Christoph Hellwig, Dave Chinner, Greg Thelen,
	Minchan Kim, Vivek Goyal, Andrea Righi, linux-mm, LKML

> @@ -424,6 +419,10 @@ int nfs_writepages(struct address_space 
>  	err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
>  	nfs_pageio_complete(&pgio);
>  
> +	nfs_wait_congested(wbc->sync_mode == WB_SYNC_ALL,
> +			   &nfss->backing_dev_info,
> +			   nfss->writeback_wait);
> +
>  	clear_bit_unlock(NFS_INO_FLUSHING, bitlock);
>  	smp_mb__after_clear_bit();
>  	wake_up_bit(bitlock, NFS_INO_FLUSHING);

The "wakeup NFS_INO_FLUSHING after congestion wait" logic looks
strange, so I tried moving the nfs_wait_congested() _after_
wake_up_bit()...and got write_bw regressions.

OK, not knowing what's going on underneath, I'll just stick to the current form.

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+  
------------------------  ------------------------  
                  417.26        -5.5%       394.24  TOTAL write_bw
                 5179.00       -12.6%      4529.00  TOTAL nfs_nr_commits
               340466.00       -37.2%    213939.00  TOTAL nfs_nr_writes
                  722.54       +17.6%       849.42  TOTAL nfs_commit_size
                    3.75        +6.3%         3.99  TOTAL nfs_write_size
                15477.38       -14.5%     13235.34  TOTAL nfs_write_queue_time
                  517.54       +13.0%       585.00  TOTAL nfs_write_rtt_time
                16011.09       -13.5%     13848.09  TOTAL nfs_write_execute_time
                  714.65       -43.4%       404.65  TOTAL nfs_commit_queue_time
                12787.93        +9.2%     13960.35  TOTAL nfs_commit_rtt_time
                13519.94        +6.4%     14387.44  TOTAL nfs_commit_execute_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                   44.42        -0.8%        44.05  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   78.49        -8.0%        72.22  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   69.96        -2.4%        68.30  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   70.59        -3.8%        67.88  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   76.76        -8.7%        70.09  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   77.04        -6.9%        71.70  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  417.26        -5.5%       394.24  TOTAL write_bw

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                 2683.00        -1.8%      2634.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  811.00       -43.8%       456.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                 1049.00       -16.7%       874.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  474.00        -8.4%       434.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   56.00       -23.2%        43.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  106.00       -17.0%        88.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                 5179.00       -12.6%      4529.00  TOTAL nfs_nr_commits

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                17641.00        -2.2%     17257.00  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
               177296.00       -54.1%     81335.00  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                26346.00       +41.6%     37309.00  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                22279.00       +12.7%     25107.00  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                67612.00       -59.7%     27271.00  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                29292.00       -12.4%     25660.00  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
               340466.00       -37.2%    213939.00  TOTAL nfs_nr_writes

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                    4.97        +1.1%         5.03  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   29.00       +63.5%        47.43  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   19.99       +17.0%        23.40  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   44.66        +5.3%        47.03  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                  408.94       +18.6%       485.03  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                  214.96       +12.3%       241.50  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  722.54       +17.6%       849.42  TOTAL nfs_commit_size

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                    0.76        +1.5%         0.77  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    0.13      +100.4%         0.27  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    0.80       -31.1%         0.55  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                    0.95       -14.4%         0.81  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                    0.34      +125.8%         0.76  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                    0.78        +6.5%         0.83  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                    3.75        +6.3%         3.99  TOTAL nfs_write_size

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                  460.14       -29.9%       322.63  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  718.69       +68.2%      1208.67  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                 5203.60       -26.1%      3843.39  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  427.40       +93.4%       826.64  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 7369.68       -18.0%      6041.98  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 1297.87       -23.6%       992.02  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                15477.38       -14.5%     13235.34  TOTAL nfs_write_queue_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                  134.58        -8.9%       122.60  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                   33.24       +48.8%        49.46  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                   89.69       -19.4%        72.31  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  129.86       -35.3%        84.03  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                   48.33      +239.4%       164.05  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   81.84       +13.1%        92.55  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  517.54       +13.0%       585.00  TOTAL nfs_write_rtt_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                  595.23       -25.1%       445.75  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  753.68       +67.4%      1261.46  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                 5294.55       -26.0%      3917.11  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                  559.44       +63.1%       912.46  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 7424.41       -16.2%      6221.64  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 1383.78       -21.3%      1089.67  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                16011.09       -13.5%     13848.09  TOTAL nfs_write_execute_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                    2.34        +2.5%         2.40  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                    1.59      +488.4%         9.37  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                    2.63       +47.0%         3.86  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                   68.22        -6.5%        63.78  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                  618.34       -52.9%       291.44  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                   21.54       +56.9%        33.80  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                  714.65       -43.4%       404.65  TOTAL nfs_commit_queue_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                  766.76        +1.7%       779.63  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  344.34       +49.3%       514.10  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  431.90       +15.0%       496.81  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 3743.78        +5.6%      3954.60  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 3699.59       +14.0%      4216.05  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 3801.55        +5.2%      3999.17  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                12787.93        +9.2%     13960.35  TOTAL nfs_commit_rtt_time

3.1.0-rc9-ioless-full-nfs-ino-flushing-next-20111014+  3.1.0-rc9-ioless-full-nfs-wakeup-wait-next-20111014+
------------------------  ------------------------
                  769.38        +1.7%       782.27  NFS-thresh=100M/nfs-10dd-4k-32p-32768M-100M:10-X
                  346.06       +51.3%       523.52  NFS-thresh=100M/nfs-1dd-4k-32p-32768M-100M:10-X
                  434.96       +15.2%       501.07  NFS-thresh=100M/nfs-2dd-4k-32p-32768M-100M:10-X
                 3813.17        +5.4%      4020.45  NFS-thresh=1G/nfs-10dd-4k-32p-32768M-1024M:10-X
                 4318.75        +4.4%      4507.51  NFS-thresh=1G/nfs-1dd-4k-32p-32768M-1024M:10-X
                 3837.62        +5.6%      4052.61  NFS-thresh=1G/nfs-2dd-4k-32p-32768M-1024M:10-X
                13519.94        +6.4%     14387.44  TOTAL nfs_commit_execute_time

Thanks,
Fengguang

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-10-20  3:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20111003134228.090592370@intel.com>
     [not found] ` <1318248846.14400.21.camel@laptop>
2011-10-10 13:07   ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
2011-10-10 13:10     ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
2011-10-10 13:11       ` [RFC][PATCH 2/2] nfs: scale writeback threshold proportional to dirty threshold Wu Fengguang
2011-10-18  8:53         ` Wu Fengguang
2011-10-18  8:59           ` Wu Fengguang
2011-10-20  2:49             ` Wu Fengguang
2011-10-18  8:51       ` [RFC][PATCH 1/2] nfs: writeback pages wait queue Wu Fengguang
2011-10-20  3:59         ` Wu Fengguang
2011-10-10 14:28     ` [PATCH 00/11] IO-less dirty throttling v12 Wu Fengguang
2011-10-17  3:03       ` Wu Fengguang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).