linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: IO scheduler based IO controller V10
@ 2009-10-02 10:55 Corrado Zoccolo
  2009-10-02 11:04 ` Jens Axboe
  2009-10-02 12:49 ` Vivek Goyal
  0 siblings, 2 replies; 25+ messages in thread
From: Corrado Zoccolo @ 2009-10-02 10:55 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Ingo Molnar, Mike Galbraith, Vivek Goyal, Ulrich Lukas,
	linux-kernel, containers, dm-devel, nauman, dpshah, lizf, mikew,
	fchecconi, paolo.valente, ryov, fernando, jmoyer, dhaval, balbir,
	righi.andrea, m-ikeda, agk, akpm, peterz, jmarchan, torvalds,
	riel

Hi Jens,
On Fri, Oct 2, 2009 at 11:28 AM, Jens Axboe <jens.axboe@oracle.com> wrote:
> On Fri, Oct 02 2009, Ingo Molnar wrote:
>>
>> * Jens Axboe <jens.axboe@oracle.com> wrote:
>>
>
> It's really not that simple, if we go and do easy latency bits, then
> throughput drops 30% or more. You can't say it's black and white latency
> vs throughput issue, that's just not how the real world works. The
> server folks would be most unpleased.
Could we be more selective when the latency optimization is introduced?

The code that is currently touched by Vivek's patch is:
        if (!atomic_read(&cic->ioc->nr_tasks) || !cfqd->cfq_slice_idle ||
            (cfqd->hw_tag && CIC_SEEKY(cic)))
                enable_idle = 0;
basically, when fairness=1, it becomes just:
        if (!atomic_read(&cic->ioc->nr_tasks) || !cfqd->cfq_slice_idle)
                enable_idle = 0;

Note that, even if we enable idling here, the cfq_arm_slice_timer will use
a different idle window for seeky (2ms) than for normal I/O.

I think that the 2ms idle window is good for a single rotational SATA disk scenario,
even if it supports NCQ. Realistic access times for those disks are still around 8ms
(but it is proportional to seek lenght), and waiting 2ms to see if we get a nearby
request may pay off, not only in latency and fairness, but also in throughput.

What we don't want to do is to enable idling for NCQ enabled SSDs
(and this is already taken care in cfq_arm_slice_timer) or for hardware RAIDs.
If we agree that hardware RAIDs should be marked as non-rotational, then that
code could become:

        if (!atomic_read(&cic->ioc->nr_tasks) || !cfqd->cfq_slice_idle ||
            (blk_queue_nonrot(cfqd->queue) && cfqd->hw_tag && CIC_SEEKY(cic)))
                enable_idle = 0;
        else if (sample_valid(cic->ttime_samples)) {
		unsigned idle_time = CIC_SEEKY(cic) ? CFQ_MIN_TT : cfqd->cfq_slice_idle;
		if (cic->ttime_mean > idle_time)
                        enable_idle = 0;
                else
                        enable_idle = 1;
        }

Thanks,
Corrado

>
> --
> Jens Axboe
>

-- 
__________________________________________________________________________

dott. Corrado Zoccolo                          mailto:czoccolo@gmail.com
PhD - Department of Computer Science - University of Pisa, Italy
--------------------------------------------------------------------------


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

end of thread, other threads:[~2009-10-06 21:39 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-02 10:55 IO scheduler based IO controller V10 Corrado Zoccolo
2009-10-02 11:04 ` Jens Axboe
2009-10-02 12:49 ` Vivek Goyal
2009-10-02 15:27   ` Corrado Zoccolo
2009-10-02 15:31     ` Vivek Goyal
2009-10-02 15:32     ` Mike Galbraith
2009-10-02 15:40       ` Vivek Goyal
2009-10-02 16:03         ` Mike Galbraith
2009-10-02 16:50         ` Valdis.Kletnieks
2009-10-02 19:58           ` Vivek Goyal
2009-10-02 22:14             ` Corrado Zoccolo
2009-10-02 22:27               ` Vivek Goyal
2009-10-03 12:43                 ` Corrado Zoccolo
2009-10-03 13:38                   ` Do we support ioprio on SSDs with NCQ (Was: Re: IO scheduler based IO controller V10) Vivek Goyal
2009-10-04  9:15                     ` Corrado Zoccolo
2009-10-04 12:11                       ` Vivek Goyal
2009-10-04 12:46                         ` Corrado Zoccolo
2009-10-04 16:20                           ` Fabio Checconi
2009-10-05 21:21                             ` Corrado Zoccolo
2009-10-05 15:06                           ` Jeff Moyer
2009-10-05 21:09                             ` Corrado Zoccolo
2009-10-06  8:41                               ` Jens Axboe
2009-10-06  9:00                                 ` Corrado Zoccolo
2009-10-06 18:53                                   ` Jens Axboe
2009-10-06 21:36                           ` Vivek Goyal

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