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@xxxxxxxxxxxxxxxxxx> 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============================= _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization