From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752605AbcHHLVU (ORCPT ); Mon, 8 Aug 2016 07:21:20 -0400 Received: from smtp26.sms.unimo.it ([155.185.44.26]:60017 "EHLO smtp26.sms.unimo.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752043AbcHHLPq (ORCPT ); Mon, 8 Aug 2016 07:15:46 -0400 From: Paolo Valente To: Jens Axboe , Tejun Heo Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, linus.walleij@linaro.org, broonie@kernel.org, Arianna Avanzini , Paolo Valente Subject: [PATCH V2 02/22] block, cfq: remove close-based preemption Date: Mon, 8 Aug 2016 13:14:57 +0200 Message-Id: <1470654917-4280-3-git-send-email-paolo.valente@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1470654917-4280-1-git-send-email-paolo.valente@linaro.org> References: <1470654917-4280-1-git-send-email-paolo.valente@linaro.org> UNIMORE-X-SA-Score: -2.9 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arianna Avanzini CFQ may preempt the queue currently in service if a new request, for a different queue, happens to be close to the last-dispatched request. This boosts the throughput with processes that issue close requests, but whose I/O patterns are not regularly interleaved enough to trigger the activation of the queue-merging heuristic removed in the previous commit. BFQ does not need to perform any such preemption, because the queue-merging mechanism of BFQ (EQM) is reactive enough to merge queues also in the presence of irregularly interleaved I/O. Signed-off-by: Arianna Avanzini Signed-off-by: Paolo Valente --- block/cfq-iosched.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 10761b5..1ab8898 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -2696,12 +2696,6 @@ static inline sector_t cfq_dist_from_last(struct cfq_data *cfqd, return cfqd->last_position - blk_rq_pos(rq); } -static inline int cfq_rq_close(struct cfq_data *cfqd, struct cfq_queue *cfqq, - struct request *rq) -{ - return cfq_dist_from_last(cfqd, rq) <= CFQQ_CLOSE_THR; -} - /* * Determine whether we should enforce idle window for this queue. */ @@ -3751,13 +3745,6 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq)) return false; - /* - * if this request is as-good as one we would expect from the - * current cfqq, let it preempt - */ - if (cfq_rq_close(cfqd, cfqq, rq)) - return true; - return false; } -- 1.9.1