[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 19 Nov 2008 12:52:42 +1100
From: Aaron Carroll <aaronc@...ato.unsw.edu.au>
To: Fabio Checconi <fchecconi@...il.com>
CC: Jens Axboe <jens.axboe@...cle.com>,
Vivek Goyal <vgoyal@...hat.com>,
Nauman Rafique <nauman@...gle.com>,
Li Zefan <lizf@...fujitsu.com>,
Divyesh Shah <dpshah@...gle.com>,
Ryo Tsuruta <ryov@...inux.co.jp>, linux-kernel@...r.kernel.org,
containers@...ts.linux-foundation.org,
virtualization@...ts.linux-foundation.org, taka@...inux.co.jp,
righi.andrea@...il.com, s-uchida@...jp.nec.com,
fernando@....ntt.co.jp, balbir@...ux.vnet.ibm.com,
akpm@...ux-foundation.org, menage@...gle.com, ngupta@...gle.com,
riel@...hat.com, jmoyer@...hat.com, peterz@...radead.org,
paolo.valente@...more.it
Subject: Re: [patch 0/4] [RFC] Another proportional weight IO controller
Fabio Checconi wrote:
> - To detect hw tagging in BFQ we consider a sample valid iff the
> number of requests that the scheduler could have dispatched (given
> by cfqd->rb_queued + cfqd->rq_in_driver, i.e., the ones still into
> the scheduler plus the ones into the driver) is higher than the
> CFQ_HW_QUEUE_MIN threshold. This obviously caused no problems
> during testing, but the way CFQ uses now seems a little bit
> strange.
BFQ's tag detection logic is broken in the same way that CFQ's used to
be. Explanation is in this patch:
============================x8============================
commit 45333d5a31296d0af886d94f1d08f128231cab8e
Author: Aaron Carroll <aaronc@...ato.unsw.edu.au>
Date: Tue Aug 26 15:52:36 2008 +0200
cfq-iosched: fix queue depth detection
CFQ's detection of queueing devices assumes a non-queuing device and detects
if the queue depth reaches a certain threshold. Under some workloads (e.g.
synchronous reads), CFQ effectively forces a unit queue depth, thus defeating
the detection logic. This leads to poor performance on queuing hardware,
since the idle window remains enabled.
This patch inverts the sense of the logic: assume a queuing-capable device,
and detect if the depth does not exceed the threshold.
============================x8=============================
BFQ seems better than CFQ at avoiding this problem though. Using the following fio
job, I can routinely trigger it for 10s or so before BFQ detects queuing.
============================x8=============================
[global]
direct=1
ioengine=sync
norandommap
randrepeat=0
filename=/dev/sdb
bs=16k
runtime=200
time_based
[reader]
rw=randread
numjobs=128
============================x8=============================
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists