Messages in this thread | | | Subject | Re: [PATCH] blk-flush: Queue through IO scheduler when flush not required | From | Jens Axboe <> | Date | Mon, 16 Nov 2015 15:28:51 -0700 |
| |
On 11/12/2015 06:25 AM, Jan Kara wrote: > Currently blk_insert_flush() just adds flush request to q->queue_head > when flush is not required. That completely bypasses IO scheduler so > e.g. CFQ can be idling waiting for new request to arrive and will idle > through the whole window unnecessarily. Luckily this only happens in > rare cases as usually checks in generic_make_request_checks() clear > FLUSH and FUA flags early if they are not needed. > > When no flushing is actually required, we can easily fix the problem by > properly queueing the request through the IO scheduler. Ideally IO > scheduler should be also made aware of requests queued via > blk_flush_queue_rq(). However inserting flush request through IO > scheduler can have unwanted side-effects since due to flush batching > delaying the flush request in IO scheduler will delay all flush requests > possibly coming from other processes. So we keep adding the request > directly to q->queue_head.
Applied, thanks Jan.
-- Jens Axboe
| |