public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH/RFC 0/4] cfq: implement merging and breaking up of cfq_queues
@ 2009-10-23 21:14 Jeff Moyer
  2009-10-23 21:14 ` [PATCH 1/4] cfq: calculate the seek_mean per cfq_queue not per cfq_io_context Jeff Moyer
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Jeff Moyer @ 2009-10-23 21:14 UTC (permalink / raw)
  To: jens.axboe; +Cc: czoccolo, linux-kernel

Hi,

This is a follow-up patch to the original close cooperator support for
CFQ.  The problem is that some programs (NFSd, dump(8), iscsi target
mode driver, qemu) interleave sequential I/Os between multiple threads
or processes.  The result is that there are large delays due to CFQ's
idling logic that leads to very low throughput.  The original patch
partially addresses these problems by detecting close cooperators and
allowing them to jump ahead in the scheduling order.  This doesn't work
100% of the time, unfortunately, and you can have some processes in the
group getting way ahead (LBA-wise) of the others, leading to a lot of seeks.

This patch series addresses the problems in the current implementation by
merging cfq_queue's of close cooperators.  The results are encouraging:

read-test2 emulates the I/O patterns of dump(8).  The following results
are taken from 50 runs of patched, 16 runs of unpatched (I got impatient):

               Average   Std. Dev.
----------------------------------
Patched CFQ:   88.81773  0.9485
Vanilla CFQ:   12.62678  0.24535

Single streaming reader over NFS, results in MB/s are the average of 2
runs.

              |patched|
nfsd's|  cfq  |  cfq  | deadline
------+-------+-------+---------
  1   |  45   |  45   | 36
  2   |  57   |  60   | 60
  4   |  38   |  49   | 50
  8   |  34   |  40   | 49
  16  |  34   |  43   | 53

I've tested that sequential access patterns do trigger the merging of queues,
and that when the I/O becomes random, the cfq_queues are split apart.  Comments,
as always, are greatly appreciated.

Cheers,
Jeff

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

end of thread, other threads:[~2009-10-26 15:01 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-23 21:14 [PATCH/RFC 0/4] cfq: implement merging and breaking up of cfq_queues Jeff Moyer
2009-10-23 21:14 ` [PATCH 1/4] cfq: calculate the seek_mean per cfq_queue not per cfq_io_context Jeff Moyer
2009-10-23 21:14 ` [PATCH 2/4] cfq: merge cooperating cfq_queues Jeff Moyer
2009-10-23 21:14 ` [PATCH 3/4] cfq: change the meaning of the cfqq_coop flag Jeff Moyer
2009-10-23 21:14 ` [PATCH 4/4] cfq: break apart merged cfqqs if they stop cooperating Jeff Moyer
2009-10-24 20:08 ` [PATCH/RFC 0/4] cfq: implement merging and breaking up of cfq_queues Corrado Zoccolo
2009-10-26 11:40   ` Jens Axboe
2009-10-26 13:20     ` Corrado Zoccolo
2009-10-26 13:28       ` Jens Axboe
2009-10-26 13:31   ` Jeff Moyer
2009-10-26 13:34     ` Jens Axboe
2009-10-26 15:01       ` Jeff Moyer

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