Messages in this thread | | | Date | Fri, 10 Jun 2011 11:31:46 +0200 | From | Jens Axboe <> | Subject | Re: CFQ: async queue blocks the whole system |
| |
On 2011-06-10 11:29, Vivek Goyal wrote: > On Fri, Jun 10, 2011 at 11:20:43AM +0200, Jens Axboe wrote: >> On 2011-06-10 11:17, Vivek Goyal wrote: >>> On Fri, Jun 10, 2011 at 09:19:12AM +0800, Shaohua Li wrote: >>> >>> [..] >>>>> If there is no major advantage of draining sync requests before async >>>>> is dispatched, I think this should be an easy fix. >>>> I thought this is to avoid sync latency if we switch from an async >>>> queue to sync queue later. >>> >>> Is it about the sync request latency which has already been dispatched? I >>> really wish that driver and disk should do some prioritazation for reads >>> here and CFQ does not have to jump through hoops like drain sync requests >>> before async requests are dispatched. >> >> That would never work. Are you suggesting putting that logic in all >> drivers? Or relying on hardware to get the fairness right? Not going to >> happen. > > I was hoping that hardware does some prioritization. Well, in this case > even if hardware maintains FIFO behavior it should be good enough. > > But I would not claim anything in this regard as I have never experimented > with it and have no idea that how sync latencies are impacted if we don't > drain the queue before dispathing WRITEs. > > I was just wondering that with current generation hardware is it bad > enough that we need to keep this logic around?
The logic for draining around sync/async switch isn't that old, in fact it dates only back to the last round of interactiveness fury. So yes, it's definitely needed. It made a big difference on hardware that was just out-of-the-store back then. I think you are putting way too much faith into the sanity and goals of companies making this hardware.
-- Jens Axboe
| |