public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <jens.axboe@oracle.com>
To: Ric Wheeler <ric@emc.com>
Cc: Arjan van de Ven <arjan@infradead.org>,
	"Phetteplace, Thad (GE Healthcare,
	consultant)"  <Thad.Phetteplace@ge.com>,
	linux-kernel@vger.kernel.org
Subject: Re: Bandwidth Allocations under CFQ I/O Scheduler
Date: Tue, 17 Oct 2006 16:47:10 +0200	[thread overview]
Message-ID: <20061017144709.GF7854@kernel.dk> (raw)
In-Reply-To: <4534EA92.3090609@emc.com>

On Tue, Oct 17 2006, Ric Wheeler wrote:
> Jens Axboe wrote:
> >On Tue, Oct 17 2006, Arjan van de Ven wrote:
> >
> >>On Mon, 2006-10-16 at 16:46 -0400, Phetteplace, Thad (GE Healthcare,
> >>consultant) wrote:
> >>
> >>>The I/O priority levels available under the CFQ scheduler are
> >>>nice (no pun in intended), but I remember some talk back when
> >>>they first went in that future versions might include bandwidth
> >>>allocations in addition to the 'niceness' style.  Is anyone out
> >>>there working on that?  If not, I'm willing to hack up a proof
> >>>of concept... I just wan't to make sure I'm not reinventing
> >>>the wheel.
> >>
> >>
> >>Hi,
> >>
> >>it's a nice idea in theory. However... since IO bandwidth for seeks is
> >>about 1% to 3% of that of sequential IO (on disks at least), which
> >>bandwidth do you want to allocate? "worst case" you need to use the
> >>all-seeks bandwidth, but that's so far away from "best case" that it may
> >>well not be relevant in practice. Yet there are real world cases where
> >>for a period of time you approach worst case behavior ;(
> >
> >
> >Bandwidth reservation would have to be confined to special cases, you
> >obviously cannot do it "in general" for the reasons Arjan lists above.
> >So you absolutely have to limit any meta data io that would cause seeks,
> >and the file in question would have to be laid out in a closely
> >sequential fashion. As long as the access pattern generated by the app
> >asking for reservation is largely sequential, the kernel can do whatever
> >it needs to help you maintain the required bandwidth.
> >
> >On a per-file basis the bandwidth reservation should be doable, to the
> >extent that generic hardware allows.
> 
> I agree - bandwidth allocation is really tricky to do in a useful way.
> 
> On one hand, you could "time slice" the disk with some large quanta as 
> we would do with a CPU to get some reasonably useful allocation for 
> competing, streaming workloads.
> 
> On the other hand, this kind of thing would kill latency if/when you hit 
> any synchronous writes (or cold reads).

That's pretty close to the way that CFQ already operates. You need time
slices long enough to make the initial seek neglible, but short enough
to make the latencies nice. A tradeoff, of course.

> One other possible use for allocation is throttling a background 
> workload (say, an interative checker for a file system or some such 
> thing) where the workload can run effectively forever, but should be 
> contained to not interfere with foreground workloads. A similar time 
> slice might be used to throttle this load done unless there is no 
> competing work to be done.

That'd be the idle io class.

-- 
Jens Axboe


  reply	other threads:[~2006-10-17 14:46 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-16 20:46 Bandwidth Allocations under CFQ I/O Scheduler Phetteplace, Thad (GE Healthcare, consultant)
2006-10-17  1:24 ` Arjan van de Ven
2006-10-17 13:23   ` Jens Axboe
2006-10-17 14:37     ` Ric Wheeler
2006-10-17 14:47       ` Jens Axboe [this message]
2006-10-17 14:46     ` Phetteplace, Thad (GE Healthcare, consultant)
2006-10-18  8:00     ` Jakob Oestergaard
2006-10-18  9:40       ` Arjan van de Ven
2006-10-18 11:30         ` Jakob Oestergaard
2006-10-18 11:49           ` Jens Axboe
2006-10-18 12:23             ` Jakob Oestergaard
2006-10-18 12:42               ` Alan Cox
2006-10-18 12:44                 ` Jens Axboe
2006-10-18 12:55                   ` Nick Piggin
2006-10-18 13:04                     ` Jens Axboe
2006-10-18 13:39                       ` Jakob Oestergaard
2006-10-18 13:51                       ` Paulo Marques
2006-10-19 12:22                         ` Jens Axboe
2006-10-18 13:37                     ` Jakob Oestergaard
2006-10-18 12:44                 ` Jakob Oestergaard
2006-10-18 12:42               ` Jens Axboe
2006-10-18 13:35                 ` Jakob Oestergaard
2006-10-18  9:51       ` Jens Axboe
2006-10-18 11:00         ` Helge Hafting
2006-10-18 11:14           ` Jens Axboe
2006-10-18 11:23           ` Ric Wheeler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061017144709.GF7854@kernel.dk \
    --to=jens.axboe@oracle.com \
    --cc=Thad.Phetteplace@ge.com \
    --cc=arjan@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ric@emc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox