Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2246743iof; Wed, 8 Jun 2022 00:23:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydRDDQcjcbct/K9f+/TN6WaWRs40WHqvypIrUSa3ZlLkabPmFbO6lvAW60oXrZTjAgX500 X-Received: by 2002:a63:5304:0:b0:3fb:92eb:8e90 with SMTP id h4-20020a635304000000b003fb92eb8e90mr28678742pgb.36.1654673006065; Wed, 08 Jun 2022 00:23:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654673006; cv=none; d=google.com; s=arc-20160816; b=FhWG/xj8O+9cKiaKQ5eddmX1F9d9oEh7ZLle6Lv5Ze/lJRm01moS44a/8gfWd48xEU eTxwfvgoIBJ8qeDWKCiMZdPfdA+94NTswKRyMHie1wVOa6gjorSSJLWKmb5uyqUC8Hp0 s5QEgouplMsInF0/y/jEecGZqI64KgJtxKHbAjKQEhJK2+50DTrTZSkW8jXpvOaKd+GC M0jQl3kI5FdRO/rT+D7JtZBsEOI5Yb9cWKmlbfuNoiCh5FKyTbxHp8HbqR1TLazgPzi4 /qbNZKrEh3Pkb8mY1Ts3x2WKLoko0YMXeZ+sKrkuDB2AKaSefhqy9L6hTB77m645Imbd xQiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nLXd7lhw572X7Kv++f6CzJbDajKxsDtaDuSo4PmPeIw=; b=OmVcw0vDsflPGW8lRvIVyE8WxLQxP2Z2a/FRzm7BPSmNuwtIRh7ub0BaEE+Rmt1/nc kSlbZycmQG9hmMY16Ofk4MEDHJSUARwC6WZm9zIrmIqk4pWK04ARaUuDXdIb37UIeB5R rpH3GvifRdXFrjEoqyhYbePuYA2j/S2p/410z1HWgY/I8lWMTkobJ3Tpuu886e6W1u1D SvgzW5hnqhpmoIGGo4qa6fhZ2DLDvRyiIqAXyiFRt0tffVem5jTWKin/gfTbCEx2Ua9h Opny5CpQ1g66hreTyklkDx+Gs762mMVlLAaSbec/zWIIvAJwe8WWYamuv/XrdL8ap5Sa /F2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=F4nB+Lk0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s17-20020a63ff51000000b003fadb07ee46si27927500pgk.442.2022.06.08.00.23.06; Wed, 08 Jun 2022 00:23:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=F4nB+Lk0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356098AbiFGT0d (ORCPT + 99 others); Tue, 7 Jun 2022 15:26:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352019AbiFGSdJ (ORCPT ); Tue, 7 Jun 2022 14:33:09 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71F622DF3; Tue, 7 Jun 2022 10:57:13 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0C591617A8; Tue, 7 Jun 2022 17:57:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D29DC385A5; Tue, 7 Jun 2022 17:57:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654624632; bh=bV924xHDvYXj0TBQhpB/6GrV/r97XENKruel7CiVDTk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F4nB+Lk02Rg2uFQ105fEPKZTwtCnyuO12XnUm8us2sgTQiNyECfLMBdXkIqEQO7yc D0nJFPgXiKYEwDSVVKNJ/eybB5WEZcsq9AQTORVwz22nb/tXk7w9SmslSUB6nTvLVw 4KcdunZUDkIomqmz/JMgix5x7hlpmfqc1Qd0iyFE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jan Kara , Jens Axboe , Sasha Levin Subject: [PATCH 5.15 357/667] bfq: Relax waker detection for shared queues Date: Tue, 7 Jun 2022 19:00:22 +0200 Message-Id: <20220607164945.462356134@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607164934.766888869@linuxfoundation.org> References: <20220607164934.766888869@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jan Kara [ Upstream commit f950667356ce90a41b446b726d4595a10cb65415 ] Currently we look for waker only if current queue has no requests. This makes sense for bfq queues with a single process however for shared queues when there is a larger number of processes the condition that queue has no requests is difficult to meet because often at least one process has some request in flight although all the others are waiting for the waker to do the work and this harms throughput. Relax the "no queued request for bfq queue" condition to "the current task has no queued requests yet". For this, we also need to start tracking number of requests in flight for each task. This patch (together with the following one) restores the performance for dbench with 128 clients that regressed with commit c65e6fd460b4 ("bfq: Do not let waker requests skip proper accounting") because this commit makes requests of wakers properly enter BFQ queues and thus these queues become ineligible for the old waker detection logic. Dbench results: Vanilla 5.18-rc3 5.18-rc3 + revert 5.18-rc3 patched Mean 1237.36 ( 0.00%) 950.16 * 23.21%* 988.35 * 20.12%* Numbers are time to complete workload so lower is better. Fixes: c65e6fd460b4 ("bfq: Do not let waker requests skip proper accounting") Signed-off-by: Jan Kara Link: https://lore.kernel.org/r/20220519105235.31397-1-jack@suse.cz Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- block/bfq-iosched.c | 5 +++-- block/bfq-iosched.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index 63d2d66dece5..a2aefb4a1e2e 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -2022,7 +2022,6 @@ static void bfq_check_waker(struct bfq_data *bfqd, struct bfq_queue *bfqq, if (!bfqd->last_completed_rq_bfqq || bfqd->last_completed_rq_bfqq == bfqq || bfq_bfqq_has_short_ttime(bfqq) || - bfqq->dispatched > 0 || now_ns - bfqd->last_completion >= 4 * NSEC_PER_MSEC || bfqd->last_completed_rq_bfqq == bfqq->waker_bfqq) return; @@ -2084,7 +2083,7 @@ static void bfq_add_request(struct request *rq) bfqq->queued[rq_is_sync(rq)]++; bfqd->queued++; - if (RB_EMPTY_ROOT(&bfqq->sort_list) && bfq_bfqq_sync(bfqq)) { + if (bfq_bfqq_sync(bfqq) && RQ_BIC(rq)->requests <= 1) { bfq_check_waker(bfqd, bfqq, now_ns); /* @@ -6422,6 +6421,7 @@ static void bfq_finish_requeue_request(struct request *rq) bfq_completed_request(bfqq, bfqd); } bfq_finish_requeue_request_body(bfqq); + RQ_BIC(rq)->requests--; spin_unlock_irqrestore(&bfqd->lock, flags); /* @@ -6643,6 +6643,7 @@ static struct bfq_queue *bfq_init_rq(struct request *rq) bfqq->allocated++; bfqq->ref++; + bic->requests++; bfq_log_bfqq(bfqd, bfqq, "get_request %p: bfqq %p, %d", rq, bfqq, bfqq->ref); diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h index a73488eec8a4..9dc87d3c40c3 100644 --- a/block/bfq-iosched.h +++ b/block/bfq-iosched.h @@ -466,6 +466,7 @@ struct bfq_io_cq { struct bfq_queue *stable_merge_bfqq; bool stably_merged; /* non splittable if true */ + unsigned int requests; /* Number of requests this process has in flight */ }; /** -- 2.35.1