linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3]: blk-iopoll, a polled completion API for block devices
@ 2009-08-06 19:58 Jens Axboe
  2009-08-06 19:58 ` [PATCH 1/3] block: add blk-iopoll, a NAPI like approach " Jens Axboe
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Jens Axboe @ 2009-08-06 19:58 UTC (permalink / raw)
  To: linux-kernel, linux-scsi; +Cc: Eric.Moore, jeff

Hi,

This is something I've been playing around and I have hopes of merging
the core for 2.6.32, so I thought I'd send it out for some review and
inspection.

Basically this implements NAPI for block devices, and much of the core
is essentially lifted from there. Since NAPI is already generic, there's
a possibility for some code reuse too. It's pretty small though and
there are a few small differences, so I just left it as-is for this
posting.

I've gotten good results with this on SSD devices, reducing the
interrupt rate a lot. And that's just for single disks, if you had
a bunch of those hanging off several controllers, it would look more
interesting I'm sure.

Apart from the core, I did patches for ahci and mpt. The former mostly
as a proof of concept, it's been running my laptop and test box for
months. There may be a problem with the ack part, as per the comment at
the end of ahci_interrupt(). So far I haven't observed any bad behaviour.
mpt is more interesting, as it's more geared at the market where this
should make some impact. The mpt patch should also be fully stable,
I've tested it on several platforms and adapters.

As to results, they vary. On a faster box, I can reduce the interrupt
rate by ~28% at only 50k IOPS. On a slower box, at 30k IOPS it'll drop
by as much as 95%. Latencies numbers are as good (or better). On
the faster box, the mpt controller even had interrupt coalescing enabled
and it still made a big difference.

Anyway, YMMV, I would appreciate some test results (and as usual, that
even includes just saying that it boots and functions for you). If
people feel adventurous, patches for other controllers will be happily
queued up for testing. I may even be convinced to implement support
for your controller of choice, if you have some fast storage hooked up
and would like to experiment. Generally, adding support to a driver is
not very hard and the two conversions included were also meant to serve
as an inspiration.

Patches are against current -git. You can also pull them from

  git://git.kernel.dk/linux-2.6-block.git blk-iopoll


 block/Makefile                   |    2 
 block/blk-iopoll.c               |  227 +++++++++++++++++++++++++++++++
 drivers/ata/ahci.c               |   53 ++++++-
 drivers/message/fusion/mptbase.c |   99 +++++++++++--
 drivers/message/fusion/mptbase.h |    3 
 include/linux/blk-iopoll.h       |   41 +++++
 include/linux/interrupt.h        |    1 
 include/linux/libata.h           |    2 
 kernel/sysctl.c                  |   10 +
 9 files changed, 419 insertions(+), 19 deletions(-)

-- 
Jens Axboe

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

end of thread, other threads:[~2009-08-20 11:38 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-06 19:58 [PATCH 0/3]: blk-iopoll, a polled completion API for block devices Jens Axboe
2009-08-06 19:58 ` [PATCH 1/3] block: add blk-iopoll, a NAPI like approach " Jens Axboe
2009-08-06 21:32   ` Alan Cox
2009-08-07  6:37     ` Jens Axboe
2009-08-07  8:38       ` Jeff Garzik
2009-08-07  8:50         ` Jens Axboe
2009-08-07 11:05           ` Jens Axboe
2009-08-07 11:31             ` Jens Axboe
2009-08-19 19:08               ` Jens Axboe
2009-08-20 11:30                 ` [PATCH 1/3] block: add blk-iopoll, a NAPI like approach forblock devices jack wang
2009-08-20 11:38                   ` Jens Axboe
2009-08-06 19:58 ` [PATCH 2/3] libata: add support for blk-iopoll Jens Axboe
2009-08-10 17:15   ` Jonathan Corbet
2009-08-10 17:22     ` Jens Axboe
2009-08-06 19:58 ` [PATCH 3/3] mptfusion: " Jens Axboe
2009-08-11 10:35 ` [PATCH 0/3]: blk-iopoll, a polled completion API for block devices Bart Van Assche
2009-08-11 14:39   ` Jens Axboe
2009-08-11 14:59     ` Bart Van Assche
2009-08-11 17:14       ` Jens Axboe
2009-08-11 18:37         ` Bart Van Assche
2009-08-11 18:41           ` Jens Axboe
2009-08-11 18:49             ` Bart Van Assche

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).