public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch v4 0/3] aio: implement request batching
@ 2009-10-02 22:54 Jeff Moyer
  2009-10-02 22:56 ` [patch v4 1/2] block: get rid of the WRITE_ODIRECT flag Jeff Moyer
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Jeff Moyer @ 2009-10-02 22:54 UTC (permalink / raw)
  To: zach.brown; +Cc: linux-aio, Linux Kernel Mailing, Andrew Morton

Hi,

In this, the 4th iteration of the patch set, I've addressed the concerns
of Jens and Zach as follows:

- In the O_DIRECT write path, we get rid of WRITE_ODIRECT in favor of
  WRITE_SYNC_PLUG
- request batching is only done for AIO operations that could
  potentially benefit from it
- Initialization of the hash table is done using the gcc array
  initialization syntax

Further, I got rid of a compiler warning that I had introduced in the
last patch set.  I'll continue to test this under a variety of loads,
but would certainly appreciate it if others could give it a spin.

Patch overview / reason for existence:

Some workloads issue batches of small I/Os, and the performance is poor
due to the call to blk_run_address_space for every single iocb.  Nathan
Roberts pointed this out, and suggested that by deferring this call
until all I/Os in the iocb array are submitted to the block layer, we
can realize some impressive performance gains.

For example, running against a simple SATA disk driving a queue depth of
128, we can improve the performance of O_DIRECT writes twofold for 4k
I/Os, and similarly impressive numbers for other I/O sizes:
  http://people.redhat.com/jmoyer/dbras/vanilla-vs-v4/metallica-single-sata/noop/io-depth-128-write-bw.png

For read workloads on somewhat faster storage, we see similar benefits
for batches of smaller I/Os as well:
  http://people.redhat.com/jmoyer/dbras/vanilla-vs-v4/thor-4-disk-lvm-stripe/noop/io-depth-16-read-bw.png
That's 230+MB/s for vanilla 4k reads, batches of 16 vs. 410MB/s for
patched.  When there are multiple threads competing for the disk, I
haven't witnessed such crazy numbers, however.

Cheers,
Jeff

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

* [patch v4 1/2] block: get rid of the WRITE_ODIRECT flag
  2009-10-02 22:54 [patch v4 0/3] aio: implement request batching Jeff Moyer
@ 2009-10-02 22:56 ` Jeff Moyer
  2009-10-02 22:57 ` [patch v4 2/2] aio: implement request batching Jeff Moyer
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Jeff Moyer @ 2009-10-02 22:56 UTC (permalink / raw)
  To: zach.brown; +Cc: linux-aio, Linux Kernel Mailing, Andrew Morton, Jens Axboe

Hi,

The WRITE_ODIRECT flag is only used in one place, and that code path
happens to also call blk_run_address_space.  The introduction of this
flag, then, could result in the device being unplugged twice for every
I/O.

Further, with the batching changes in the next patch, we don't want an
O_DIRECT write to imply a queue unplug.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>

diff --git a/fs/direct-io.c b/fs/direct-io.c
index 8b10b87..c86d35f 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -1124,7 +1124,7 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
 	int acquire_i_mutex = 0;
 
 	if (rw & WRITE)
-		rw = WRITE_ODIRECT;
+		rw = WRITE_SYNC_PLUG;
 
 	if (bdev)
 		bdev_blkbits = blksize_bits(bdev_logical_block_size(bdev));
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 2adaa25..2aac751 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -129,7 +129,6 @@ struct inodes_stat_t {
  * WRITE_SYNC		Like WRITE_SYNC_PLUG, but also unplugs the device
  *			immediately after submission. The write equivalent
  *			of READ_SYNC.
- * WRITE_ODIRECT	Special case write for O_DIRECT only.
  * SWRITE_SYNC
  * SWRITE_SYNC_PLUG	Like WRITE_SYNC/WRITE_SYNC_PLUG, but locks the buffer.
  *			See SWRITE.
@@ -151,7 +150,6 @@ struct inodes_stat_t {
 #define READ_META	(READ | (1 << BIO_RW_META))
 #define WRITE_SYNC_PLUG	(WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE))
 #define WRITE_SYNC	(WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG))
-#define WRITE_ODIRECT	(WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 #define SWRITE_SYNC_PLUG	\
 			(SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE))
 #define SWRITE_SYNC	(SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG))

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

* [patch v4 2/2] aio: implement request batching
  2009-10-02 22:54 [patch v4 0/3] aio: implement request batching Jeff Moyer
  2009-10-02 22:56 ` [patch v4 1/2] block: get rid of the WRITE_ODIRECT flag Jeff Moyer
@ 2009-10-02 22:57 ` Jeff Moyer
  2009-10-02 22:58 ` [patch v4 0/3] " Jeff Moyer
  2009-10-06 17:45 ` [patch v4 0/3] aio: implement request batching [more performance numbers] Jeff Moyer
  3 siblings, 0 replies; 11+ messages in thread
From: Jeff Moyer @ 2009-10-02 22:57 UTC (permalink / raw)
  To: zach.brown; +Cc: linux-aio, Linux Kernel Mailing, Andrew Morton

Hi,

Some workloads issue batches of small I/O, and the performance is poor
due to the call to blk_run_address_space for every single iocb.  Nathan
Roberts pointed this out, and suggested that by deferring this call
until all I/Os in the iocb array are submitted to the block layer, we
can realize some impressive performance gains (up to 30% for sequential
4k reads in batches of 16).

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>

diff --git a/fs/aio.c b/fs/aio.c
index 02a2c93..cf0bef4 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -32,6 +32,9 @@
 #include <linux/workqueue.h>
 #include <linux/security.h>
 #include <linux/eventfd.h>
+#include <linux/blkdev.h>
+#include <linux/mempool.h>
+#include <linux/hash.h>
 
 #include <asm/kmap_types.h>
 #include <asm/uaccess.h>
@@ -60,6 +63,14 @@ static DECLARE_WORK(fput_work, aio_fput_routine);
 static DEFINE_SPINLOCK(fput_lock);
 static LIST_HEAD(fput_head);
 
+#define AIO_BATCH_HASH_BITS	3 /* allocated on-stack, so don't go crazy */
+#define AIO_BATCH_HASH_SIZE	(1 << AIO_BATCH_HASH_BITS)
+struct aio_batch_entry {
+	struct hlist_node list;
+	struct address_space *mapping;
+};
+mempool_t *abe_pool;
+
 static void aio_kick_handler(struct work_struct *);
 static void aio_queue_work(struct kioctx *);
 
@@ -73,6 +84,8 @@ static int __init aio_setup(void)
 	kioctx_cachep = KMEM_CACHE(kioctx,SLAB_HWCACHE_ALIGN|SLAB_PANIC);
 
 	aio_wq = create_workqueue("aio");
+	abe_pool = mempool_create_kmalloc_pool(1, sizeof(struct aio_batch_entry));
+	BUG_ON(!abe_pool);
 
 	pr_debug("aio_setup: sizeof(struct page) = %d\n", (int)sizeof(struct page));
 
@@ -1531,8 +1544,44 @@ static int aio_wake_function(wait_queue_t *wait, unsigned mode,
 	return 1;
 }
 
+static void aio_batch_add(struct address_space *mapping,
+			  struct hlist_head *batch_hash)
+{
+	struct aio_batch_entry *abe;
+	struct hlist_node *pos;
+	unsigned bucket;
+
+	bucket = hash_ptr(mapping, AIO_BATCH_HASH_BITS);
+	hlist_for_each_entry(abe, pos, &batch_hash[bucket], list) {
+		if (abe->mapping == mapping)
+			return;
+	}
+
+	abe = mempool_alloc(abe_pool, GFP_KERNEL);
+	BUG_ON(!igrab(mapping->host));
+	abe->mapping = mapping;
+	hlist_add_head(&abe->list, &batch_hash[bucket]);
+	return;
+}
+
+static void aio_batch_free(struct hlist_head *batch_hash)
+{
+	struct aio_batch_entry *abe;
+	struct hlist_node *pos, *n;
+	int i;
+
+	for (i = 0; i < AIO_BATCH_HASH_SIZE; i++) {
+		hlist_for_each_entry_safe(abe, pos, n, &batch_hash[i], list) {
+			blk_run_address_space(abe->mapping);
+			iput(abe->mapping->host);
+			hlist_del(&abe->list);
+			mempool_free(abe, abe_pool);
+		}
+	}
+}
+
 static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
-			 struct iocb *iocb)
+			 struct iocb *iocb, struct hlist_head *batch_hash)
 {
 	struct kiocb *req;
 	struct file *file;
@@ -1608,6 +1657,12 @@ static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
 			;
 	}
 	spin_unlock_irq(&ctx->ctx_lock);
+	if (req->ki_opcode == IOCB_CMD_PREAD ||
+	    req->ki_opcode == IOCB_CMD_PREADV ||
+	    req->ki_opcode == IOCB_CMD_PWRITE ||
+	    req->ki_opcode == IOCB_CMD_PWRITEV)
+		aio_batch_add(file->f_mapping, batch_hash);
+
 	aio_put_req(req);	/* drop extra ref to req */
 	return 0;
 
@@ -1635,6 +1690,7 @@ SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
 	struct kioctx *ctx;
 	long ret = 0;
 	int i;
+	struct hlist_head batch_hash[AIO_BATCH_HASH_SIZE] = { { 0, }, };
 
 	if (unlikely(nr < 0))
 		return -EINVAL;
@@ -1666,10 +1722,11 @@ SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
 			break;
 		}
 
-		ret = io_submit_one(ctx, user_iocb, &tmp);
+		ret = io_submit_one(ctx, user_iocb, &tmp, batch_hash);
 		if (ret)
 			break;
 	}
+	aio_batch_free(batch_hash);
 
 	put_ioctx(ctx);
 	return i ? i : ret;
diff --git a/fs/direct-io.c b/fs/direct-io.c
index c86d35f..3af761c 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -1028,9 +1028,6 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
 	if (dio->bio)
 		dio_bio_submit(dio);
 
-	/* All IO is now issued, send it on its way */
-	blk_run_address_space(inode->i_mapping);
-
 	/*
 	 * It is possible that, we return short IO due to end of file.
 	 * In that case, we need to release all the pages we got hold on.
@@ -1057,8 +1054,11 @@ direct_io_worker(int rw, struct kiocb *iocb, struct inode *inode,
 	    ((rw & READ) || (dio->result == dio->size)))
 		ret = -EIOCBQUEUED;
 
-	if (ret != -EIOCBQUEUED)
+	if (ret != -EIOCBQUEUED) {
+		/* All IO is now issued, send it on its way */
+		blk_run_address_space(inode->i_mapping);
 		dio_await_completion(dio);
+	}
 
 	/*
 	 * Sync will always be dropping the final ref and completing the

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

* Re: [patch v4 0/3] aio: implement request batching
  2009-10-02 22:54 [patch v4 0/3] aio: implement request batching Jeff Moyer
  2009-10-02 22:56 ` [patch v4 1/2] block: get rid of the WRITE_ODIRECT flag Jeff Moyer
  2009-10-02 22:57 ` [patch v4 2/2] aio: implement request batching Jeff Moyer
@ 2009-10-02 22:58 ` Jeff Moyer
  2009-10-06 17:45 ` [patch v4 0/3] aio: implement request batching [more performance numbers] Jeff Moyer
  3 siblings, 0 replies; 11+ messages in thread
From: Jeff Moyer @ 2009-10-02 22:58 UTC (permalink / raw)
  To: zach.brown; +Cc: linux-aio, Linux Kernel Mailing, Andrew Morton

Yeah, there are only 2 patches.  Sorry about that broken subject.  I had
a crossed wire somewhere.  ;-)

-Jeff

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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-02 22:54 [patch v4 0/3] aio: implement request batching Jeff Moyer
                   ` (2 preceding siblings ...)
  2009-10-02 22:58 ` [patch v4 0/3] " Jeff Moyer
@ 2009-10-06 17:45 ` Jeff Moyer
  2009-10-06 18:06   ` Jens Axboe
  3 siblings, 1 reply; 11+ messages in thread
From: Jeff Moyer @ 2009-10-06 17:45 UTC (permalink / raw)
  To: zach.brown; +Cc: linux-aio, Linux Kernel Mailing, Andrew Morton

Here's a mail I got from Nathan Roberts.

Cheers,
Jeff

---

Similar test as before. I had to re-upload the files so comparing
against last time isn't really apples-apples.

Disk is a cciss logical drive consisting of 12 SATA drives in a RAID6
configuration with 128K stripes.

Test case 1 is to read 1 million random 40K files (no file is read
more than once), 16 4K iocbs at a time, 100 threads.

Test case 2 is the same except 100,000 128K files are read.

Unit of measure is "files read per second".


40K
-------------------------------------------------
Kernel                              NOOP
------                              ----
2.6.30.5                            682
2.6.30.5 (w/o drop_caches)          718
2.6.30.5+patch_v4                   900
2.6.30.5+patch_v4 (w/o drop caches) 965


128K
-------------------------------------------------
Kernel                              NOOP
------                              ----
2.6.30.5                            242
2.6.30.5 (w/o drop_caches)          350
2.6.30.5+patch_v4                   292
2.6.30.5+patch_v4 (w/o drop caches) 420


Hope it helps.
Nathan


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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-06 17:45 ` [patch v4 0/3] aio: implement request batching [more performance numbers] Jeff Moyer
@ 2009-10-06 18:06   ` Jens Axboe
  2009-10-06 18:18     ` Jeff Moyer
  0 siblings, 1 reply; 11+ messages in thread
From: Jens Axboe @ 2009-10-06 18:06 UTC (permalink / raw)
  To: Jeff Moyer; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

On Tue, Oct 06 2009, Jeff Moyer wrote:
> Here's a mail I got from Nathan Roberts.
> 
> Cheers,
> Jeff
> 
> ---
> 
> Similar test as before. I had to re-upload the files so comparing
> against last time isn't really apples-apples.
> 
> Disk is a cciss logical drive consisting of 12 SATA drives in a RAID6
> configuration with 128K stripes.
> 
> Test case 1 is to read 1 million random 40K files (no file is read
> more than once), 16 4K iocbs at a time, 100 threads.
> 
> Test case 2 is the same except 100,000 128K files are read.
> 
> Unit of measure is "files read per second".
> 
> 
> 40K
> -------------------------------------------------
> Kernel                              NOOP
> ------                              ----
> 2.6.30.5                            682
> 2.6.30.5 (w/o drop_caches)          718
> 2.6.30.5+patch_v4                   900
> 2.6.30.5+patch_v4 (w/o drop caches) 965
> 
> 
> 128K
> -------------------------------------------------
> Kernel                              NOOP
> ------                              ----
> 2.6.30.5                            242
> 2.6.30.5 (w/o drop_caches)          350
> 2.6.30.5+patch_v4                   292
> 2.6.30.5+patch_v4 (w/o drop caches) 420

Nice numbers! The patch looks good to me from a quick look, if you want
I can throw it into the testing mix tomorrow and see what kind of
improvements I see here. With performance increase of that magnitude, we
should get it in sooner rather than later.

-- 
Jens Axboe


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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-06 18:06   ` Jens Axboe
@ 2009-10-06 18:18     ` Jeff Moyer
  2009-10-07 10:52       ` Jens Axboe
  0 siblings, 1 reply; 11+ messages in thread
From: Jeff Moyer @ 2009-10-06 18:18 UTC (permalink / raw)
  To: Jens Axboe; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

Jens Axboe <jens.axboe@oracle.com> writes:

> On Tue, Oct 06 2009, Jeff Moyer wrote:
>> Here's a mail I got from Nathan Roberts.
>> 
>> Cheers,
>> Jeff
>> 
>> ---
>> 
>> Similar test as before. I had to re-upload the files so comparing
>> against last time isn't really apples-apples.
>> 
>> Disk is a cciss logical drive consisting of 12 SATA drives in a RAID6
>> configuration with 128K stripes.
>> 
>> Test case 1 is to read 1 million random 40K files (no file is read
>> more than once), 16 4K iocbs at a time, 100 threads.
>> 
>> Test case 2 is the same except 100,000 128K files are read.
>> 
>> Unit of measure is "files read per second".
>> 
>> 
>> 40K
>> -------------------------------------------------
>> Kernel                              NOOP
>> ------                              ----
>> 2.6.30.5                            682
>> 2.6.30.5 (w/o drop_caches)          718
>> 2.6.30.5+patch_v4                   900
>> 2.6.30.5+patch_v4 (w/o drop caches) 965
>> 
>> 
>> 128K
>> -------------------------------------------------
>> Kernel                              NOOP
>> ------                              ----
>> 2.6.30.5                            242
>> 2.6.30.5 (w/o drop_caches)          350
>> 2.6.30.5+patch_v4                   292
>> 2.6.30.5+patch_v4 (w/o drop caches) 420
>
> Nice numbers! The patch looks good to me from a quick look, if you want
> I can throw it into the testing mix tomorrow and see what kind of
> improvements I see here. With performance increase of that magnitude, we
> should get it in sooner rather than later.

I'd love it if you could run some benchmarks, thank you!

Cheers,
Jeff

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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-06 18:18     ` Jeff Moyer
@ 2009-10-07 10:52       ` Jens Axboe
  2009-10-07 12:09         ` Jeff Moyer
  2009-10-27 16:16         ` Jeff Moyer
  0 siblings, 2 replies; 11+ messages in thread
From: Jens Axboe @ 2009-10-07 10:52 UTC (permalink / raw)
  To: Jeff Moyer; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

On Tue, Oct 06 2009, Jeff Moyer wrote:
> >> 40K
> >> -------------------------------------------------
> >> Kernel                              NOOP
> >> ------                              ----
> >> 2.6.30.5                            682
> >> 2.6.30.5 (w/o drop_caches)          718
> >> 2.6.30.5+patch_v4                   900
> >> 2.6.30.5+patch_v4 (w/o drop caches) 965
> >> 
> >> 
> >> 128K
> >> -------------------------------------------------
> >> Kernel                              NOOP
> >> ------                              ----
> >> 2.6.30.5                            242
> >> 2.6.30.5 (w/o drop_caches)          350
> >> 2.6.30.5+patch_v4                   292
> >> 2.6.30.5+patch_v4 (w/o drop caches) 420
> >
> > Nice numbers! The patch looks good to me from a quick look, if you want
> > I can throw it into the testing mix tomorrow and see what kind of
> > improvements I see here. With performance increase of that magnitude, we
> > should get it in sooner rather than later.
> 
> I'd love it if you could run some benchmarks, thank you!

So here's a pretty basic test. It does random reads from a bunch of
devices, I tested both 4kb and 64kb block sizes. Queue depth used is 32
for both cases, but note that this test uses a thread per device (so the
queue depth is 32 per device). Results are averaged over 3 runs.
slat/clat are the submission and completion latencies, they are in
microseconds here.

4kb random reads

kernel               sys     IOPS       slat    clat
----------------------------------------------------
2.6.32-rc3+patch    25.8%   192500      7.9     2606
2.6.32-rc3          27.4%   191300      8.4     2612



64kb random reads

kernel               sys     IOPS       slat    clat
----------------------------------------------------
2.6.32-rc3+patch     2.5%    24590      9.7     9681
2.6.32-rc3           2.5%    24580      9.4     9691

So pretty close, nothing earth shattering here. What the results above
do not show is that the 4kb test runs very stable with your patch.
Mainline fluctuates somewhat in the bandwidth, most likely due to the
varying depth.

-- 
Jens Axboe


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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-07 10:52       ` Jens Axboe
@ 2009-10-07 12:09         ` Jeff Moyer
  2009-10-27 16:16         ` Jeff Moyer
  1 sibling, 0 replies; 11+ messages in thread
From: Jeff Moyer @ 2009-10-07 12:09 UTC (permalink / raw)
  To: Jens Axboe; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

Jens Axboe <jens.axboe@oracle.com> writes:

> So here's a pretty basic test. It does random reads from a bunch of
> devices, I tested both 4kb and 64kb block sizes. Queue depth used is 32
> for both cases, but note that this test uses a thread per device (so the
> queue depth is 32 per device). Results are averaged over 3 runs.
> slat/clat are the submission and completion latencies, they are in
> microseconds here.
>
> 4kb random reads
>
> kernel               sys     IOPS       slat    clat
> ----------------------------------------------------
> 2.6.32-rc3+patch    25.8%   192500      7.9     2606
> 2.6.32-rc3          27.4%   191300      8.4     2612
>
>
>
> 64kb random reads
>
> kernel               sys     IOPS       slat    clat
> ----------------------------------------------------
> 2.6.32-rc3+patch     2.5%    24590      9.7     9681
> 2.6.32-rc3           2.5%    24580      9.4     9691
>
> So pretty close, nothing earth shattering here. What the results above
> do not show is that the 4kb test runs very stable with your patch.
> Mainline fluctuates somewhat in the bandwidth, most likely due to the
> varying depth.

OK, good news.  Thanks for testing!

Cheers,
Jeff

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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-07 10:52       ` Jens Axboe
  2009-10-07 12:09         ` Jeff Moyer
@ 2009-10-27 16:16         ` Jeff Moyer
  2009-10-28  8:28           ` Jens Axboe
  1 sibling, 1 reply; 11+ messages in thread
From: Jeff Moyer @ 2009-10-27 16:16 UTC (permalink / raw)
  To: Jens Axboe; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

Jens Axboe <jens.axboe@oracle.com> writes:

>> > Nice numbers! The patch looks good to me from a quick look, if you want
>> > I can throw it into the testing mix tomorrow and see what kind of
>> > improvements I see here. With performance increase of that magnitude, we
>> > should get it in sooner rather than later.
>> 
> So here's a pretty basic test. It does random reads from a bunch of
> devices, I tested both 4kb and 64kb block sizes. Queue depth used is 32
> for both cases, but note that this test uses a thread per device (so the
> queue depth is 32 per device). Results are averaged over 3 runs.
> slat/clat are the submission and completion latencies, they are in
> microseconds here.
[...]
> So pretty close, nothing earth shattering here. What the results above
> do not show is that the 4kb test runs very stable with your patch.
> Mainline fluctuates somewhat in the bandwidth, most likely due to the
> varying depth.

OK, I don't think this patch set will see further testing without
pulling it into someone's tree.  Jens, would you mind putting this into
your for-2.6.33 queue?  Let me know if you need me to resend the
patches.

Cheers,
Jeff

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

* Re: [patch v4 0/3] aio: implement request batching [more performance numbers]
  2009-10-27 16:16         ` Jeff Moyer
@ 2009-10-28  8:28           ` Jens Axboe
  0 siblings, 0 replies; 11+ messages in thread
From: Jens Axboe @ 2009-10-28  8:28 UTC (permalink / raw)
  To: Jeff Moyer; +Cc: zach.brown, linux-aio, Linux Kernel Mailing, Andrew Morton

On Tue, Oct 27 2009, Jeff Moyer wrote:
> Jens Axboe <jens.axboe@oracle.com> writes:
> 
> >> > Nice numbers! The patch looks good to me from a quick look, if you want
> >> > I can throw it into the testing mix tomorrow and see what kind of
> >> > improvements I see here. With performance increase of that magnitude, we
> >> > should get it in sooner rather than later.
> >> 
> > So here's a pretty basic test. It does random reads from a bunch of
> > devices, I tested both 4kb and 64kb block sizes. Queue depth used is 32
> > for both cases, but note that this test uses a thread per device (so the
> > queue depth is 32 per device). Results are averaged over 3 runs.
> > slat/clat are the submission and completion latencies, they are in
> > microseconds here.
> [...]
> > So pretty close, nothing earth shattering here. What the results above
> > do not show is that the 4kb test runs very stable with your patch.
> > Mainline fluctuates somewhat in the bandwidth, most likely due to the
> > varying depth.
> 
> OK, I don't think this patch set will see further testing without
> pulling it into someone's tree.  Jens, would you mind putting this into
> your for-2.6.33 queue?  Let me know if you need me to resend the
> patches.

Sure, I'll pull it in. I still have the patches, will ping you if it
doesn't apply cleanly.

-- 
Jens Axboe


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

end of thread, other threads:[~2009-10-28  8:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-02 22:54 [patch v4 0/3] aio: implement request batching Jeff Moyer
2009-10-02 22:56 ` [patch v4 1/2] block: get rid of the WRITE_ODIRECT flag Jeff Moyer
2009-10-02 22:57 ` [patch v4 2/2] aio: implement request batching Jeff Moyer
2009-10-02 22:58 ` [patch v4 0/3] " Jeff Moyer
2009-10-06 17:45 ` [patch v4 0/3] aio: implement request batching [more performance numbers] Jeff Moyer
2009-10-06 18:06   ` Jens Axboe
2009-10-06 18:18     ` Jeff Moyer
2009-10-07 10:52       ` Jens Axboe
2009-10-07 12:09         ` Jeff Moyer
2009-10-27 16:16         ` Jeff Moyer
2009-10-28  8:28           ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox