From: Corrado Zoccolo <czoccolo@gmail.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: linux-kernel@vger.kernel.org, jens.axboe@oracle.com,
nauman@google.com, dpshah@google.com, lizf@cn.fujitsu.com,
ryov@valinux.co.jp, fernando@oss.ntt.co.jp,
s-uchida@ap.jp.nec.com, taka@valinux.co.jp,
guijianfeng@cn.fujitsu.com, jmoyer@redhat.com,
balbir@linux.vnet.ibm.com, righi.andrea@gmail.com,
m-ikeda@ds.jp.nec.com, akpm@linux-foundation.org,
riel@redhat.com, kamezawa.hiroyu@jp.fujitsu.com
Subject: Re: [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps
Date: Thu, 5 Nov 2009 09:27:34 +0100 [thread overview]
Message-ID: <4e5e476b0911050027w97cb8b4xd1d148d80de39e3@mail.gmail.com> (raw)
In-Reply-To: <20091104232216.GP2870@redhat.com>
Hi Vivek,
let me answer all your questions in a single mail.
On Thu, Nov 5, 2009 at 12:22 AM, Vivek Goyal <vgoyal@redhat.com> wrote:
> Hi Corrado,
>
> Had one more question. Now with dynamic slice length (reduce slice length
> to meet target latency), don't wee see reduced throughput on rotational
> media with sequential workload?
>
Yes. This is the main reason for disabling dynamic slice length when
low_latency is not set. In this way, on servers where low latency is
not a must (but still desirable), this feature can be disabled, while
the others, that have positive impact on throughput, will not be
disabled.
> I saw some you posted numbers for SSD. Do you have some numbers for
> rotational media also?
Yes. I posted it in the first RFC for this patch, outside the series:
http://lkml.org/lkml/2009/9/3/87
The other patches in the series do not affect sequential bandwidth,
but can improve random read BW in case of NCQ hardware, regardless of
it being rotational, SSD, or SAN.
> I am looking at your patchset and trying to understand how have you
> ensured fairness for different priority level queues.
>
> Following seems to be the key piece of code which determines the slice
> length of the queue dynamically.
>
>
> static inline void
> cfq_set_prio_slice(struct cfq_data *cfqd, struct cfq_queue *cfqq)
> { [snipped code] }
>
> A question.
>
> - expect_latency seems to be being calculated based on based slice lenth
> for sync queues (100ms). This will give right number only if all the
> queues in the system were of prio 4. What if there are 3 prio 0 queues.
> They will/should get 180ms slice each resulting in max latency of 540 ms
> but we will be calculating expect_latency to = 100 * 3 =300 ms which is
> less than cfq_target_latency and we will not adjust slice length?
>
Yes. Those are soft latencies, so we don't *guarantee* 300ms. On an
average system, where the average slice length is 100ms, we will go
pretty close (but since CFQ doesn't count the first seek in the time
slice, we can still be some tenths of ms off), but if you have a
different distribution of priorities, then this will not be
guaranteed.
> - With "no-idle" group, who benefits? As I said, all these optimizations
> seems to be for low latency. In that case user will set "low_latency"
> tunable in CFQ. If that's the case, then we will anyway enable idling
> random seeky processes having think time less than 8ms. So they get
> their fair share.
My patch changes the meaning for low_latency. As we discussed some
months ago, I always thought that the solution of idling for seeky
processes was sub-optimal. With the new code, regardless of
low_latency settings, we won't idle between 'no-idle' queues. We will
idle only at the end of the no-idle tree, if we still have not reached
workload_expires. This provides fairness between 'no-idle' and normal
sync queues.
>
> I guess this will provide benefit if user has not set "low_latency" and
> in that case we will not enable idle on random seeky readers and we will
> gain in terms of throughput on NCQ hardware because we dispatch from
> other no-idle queues and then idle on the no-idle group.
It will improve both latency and bandwidth, and as I said, it is now
not limited to just low_latency not set. After my patch series,
low_latency will control just 2 things:
* the dynamic timeslice adaption
* the dynamic threshold for number of writes dispatched
Thanks
Corrado
next prev parent reply other threads:[~2009-11-05 8:27 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-03 23:43 [RFC] Block IO Controller V1 Vivek Goyal
2009-11-03 23:43 ` [PATCH 01/20] blkio: Documentation Vivek Goyal
2009-11-04 13:37 ` Jeff Moyer
2009-11-04 17:21 ` Balbir Singh
2009-11-04 17:52 ` Vivek Goyal
2009-11-04 23:36 ` Balbir Singh
2009-11-03 23:43 ` [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps Vivek Goyal
2009-11-04 14:30 ` Jeff Moyer
2009-11-04 16:37 ` Vivek Goyal
2009-11-04 17:59 ` Corrado Zoccolo
2009-11-04 18:54 ` Vivek Goyal
2009-11-05 2:44 ` Divyesh Shah
2009-11-05 14:39 ` Vivek Goyal
2009-11-04 21:18 ` Corrado Zoccolo
2009-11-04 22:25 ` Vivek Goyal
2009-11-05 8:36 ` Corrado Zoccolo
2009-11-04 23:22 ` Vivek Goyal
2009-11-05 8:27 ` Corrado Zoccolo [this message]
2009-11-05 0:05 ` Vivek Goyal
2009-11-06 22:22 ` [RFC] Workload type Vs Groups (Was: Re: [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps) Vivek Goyal
2009-11-09 17:33 ` Nauman Rafique
2009-11-09 21:47 ` Corrado Zoccolo
2009-11-09 23:12 ` Vivek Goyal
2009-11-10 11:29 ` Corrado Zoccolo
2009-11-10 13:31 ` Vivek Goyal
2009-11-10 14:12 ` Vivek Goyal
2009-11-10 18:05 ` Corrado Zoccolo
2009-11-10 19:15 ` Vivek Goyal
2009-11-12 8:53 ` Corrado Zoccolo
2009-11-11 0:48 ` [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps Gui Jianfeng
2009-11-12 23:07 ` Vivek Goyal
2009-11-13 0:59 ` Gui Jianfeng
2009-11-13 1:24 ` Vivek Goyal
2009-11-13 2:05 ` Gui Jianfeng
2009-11-03 23:43 ` [PATCH 03/20] blkio: Introduce the notion of weights Vivek Goyal
2009-11-04 15:06 ` Jeff Moyer
2009-11-04 15:41 ` Vivek Goyal
2009-11-04 17:07 ` Divyesh Shah
2009-11-04 19:00 ` Vivek Goyal
2009-11-04 19:15 ` Jeff Moyer
2009-11-03 23:43 ` [PATCH 04/20] blkio: Introduce the notion of cfq entity Vivek Goyal
2009-11-03 23:43 ` [PATCH 05/20] blkio: Introduce the notion of cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 06/20] blkio: Introduce cgroup interface Vivek Goyal
2009-11-04 15:23 ` Jeff Moyer
2009-11-04 16:47 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 07/20] blkio: Provide capablity to enqueue/dequeue group entities Vivek Goyal
2009-11-04 15:34 ` Jeff Moyer
2009-11-04 16:54 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 08/20] blkio: Add support for dynamic creation of cfq_groups Vivek Goyal
2009-11-04 16:01 ` Jeff Moyer
2009-11-03 23:43 ` [PATCH 09/20] blkio: Porpogate blkio cgroup weight or ioprio class updation to cfq groups Vivek Goyal
2009-11-05 5:35 ` Gui Jianfeng
2009-11-05 14:42 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 10/20] blkio: Implement cfq group deletion and reference counting support Vivek Goyal
2009-11-04 18:44 ` Jeff Moyer
2009-11-04 19:00 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 11/20] blkio: Some CFQ debugging Aid Vivek Goyal
2009-11-04 18:52 ` Jeff Moyer
2009-11-04 19:12 ` Vivek Goyal
2009-11-04 19:25 ` Jeff Moyer
2009-11-05 3:10 ` Divyesh Shah
2009-11-05 14:42 ` Vivek Goyal
2009-11-06 0:56 ` Divyesh Shah
2009-11-03 23:43 ` [PATCH 12/20] blkio: Export disk time and sectors dispatched from cgroup interface Vivek Goyal
2009-11-03 23:43 ` [PATCH 13/20] blkio: Add a group dequeue interface in cgroup for debugging Vivek Goyal
2009-11-03 23:43 ` [PATCH 14/20] blkio: Do not allow request merging across cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 15/20] blkio: Take care of preemptions across groups Vivek Goyal
2009-11-04 19:00 ` Jeff Moyer
2009-11-04 19:27 ` Vivek Goyal
2009-11-04 19:30 ` Jeff Moyer
2009-11-06 7:55 ` Gui Jianfeng
2009-11-06 22:10 ` Vivek Goyal
2009-11-09 7:41 ` Gui Jianfeng
2009-11-03 23:43 ` [PATCH 16/20] blkio: do not select co-operating queues from different cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 17/20] blkio: Wait for queue to get backlogged before it expires Vivek Goyal
2009-11-03 23:43 ` [PATCH 18/20] blkio: arm idle timer even if think time is great then time slice left Vivek Goyal
2009-11-04 19:04 ` Jeff Moyer
2009-11-04 19:17 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 19/20] blkio: Arm slice timer even if there are requests in driver Vivek Goyal
2009-11-03 23:43 ` [PATCH 20/20] blkio: Drop the reference to queue once the task changes cgroup Vivek Goyal
2009-11-04 19:09 ` Jeff Moyer
2009-11-04 19:18 ` Vivek Goyal
2009-11-04 7:43 ` [RFC] Block IO Controller V1 Jens Axboe
2009-11-04 13:39 ` Vivek Goyal
2009-11-04 19:12 ` Jeff Moyer
2009-11-04 19:19 ` Vivek Goyal
2009-11-04 19:27 ` Jeff Moyer
2009-11-04 19:38 ` Vivek Goyal
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=4e5e476b0911050027w97cb8b4xd1d148d80de39e3@mail.gmail.com \
--to=czoccolo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=dpshah@google.com \
--cc=fernando@oss.ntt.co.jp \
--cc=guijianfeng@cn.fujitsu.com \
--cc=jens.axboe@oracle.com \
--cc=jmoyer@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=m-ikeda@ds.jp.nec.com \
--cc=nauman@google.com \
--cc=riel@redhat.com \
--cc=righi.andrea@gmail.com \
--cc=ryov@valinux.co.jp \
--cc=s-uchida@ap.jp.nec.com \
--cc=taka@valinux.co.jp \
--cc=vgoyal@redhat.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
all inboxes | Powered by JetHome®