Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp140620pxf; Thu, 25 Mar 2021 00:00:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyEuIiI8x42H7r79A94lemHqf3G5rQBfmU9cyFz0B0USxyKJO1JVVz30UMkzDZLApSaue+e X-Received: by 2002:a05:6402:382:: with SMTP id o2mr7606876edv.238.1616655609978; Thu, 25 Mar 2021 00:00:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616655609; cv=none; d=google.com; s=arc-20160816; b=YbUwgW9D94nlECb9vGFC3rSizbL8trxYeFjhmdLHxjXqRGjNi9s1LCJ1JQKGPgRuuU 3WS/SakGDSQADube7RpL+EDpe6J6OuOrjCRnyNc1PofxZOxhVCgI3r+G0DChVGDjvn9K oNMjuQ3GOMKqugHlYUFV97ZUtTYzV1IPOTMjt0mKeyHw4N4rZ+rbxVy8AyPgK16hQXT2 4Xkbd5OPSJ6+yiJ4/H5+imfIuwYiOcMAnmRG6A/+JKZ8FKbUWUAGSN/9uX3OVN5DHKlI g1yBLRNSqBSVCUlw1+QLjyOXpQ5iqBT7JJE9L6Qj1sBzyOriT8NA44KPPR1N+WZ/PRY1 5cRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=U2Ib5ddOEuKBopBvgjIJBWoMeTG4fDxN3eIx8DhyDG0=; b=S62KmwkPImpgRbBKD4XF0n5i5zmxCABa+5GCxDds+TGI1UZRET0XCntUO19o/SF6Wi TqndZ8l06I3GlSlNOiBX1kyNyAohzBhNt25MfTK+Tsf/MwpKwnk2evOdWuxmRL0J9TJW 07qEonkh9H0c7GKYWWTFwPJNm1xi1tTO6LLSyRjlo57fviPIlQTBO0zLSpBgnsG+jbfQ yRRBX7JcX/HNBso/15/d+h4808exoFczj4S44c4Ps1fOEyjIMHSlUwgHNxZVpnjitpzj ZEw6jdEqXRJHMiIIWlfNc61JroN7G493w1CVJ6Xjg2JPM+mIL8HzoEYjcHXLtLxfshGv joDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=te9NBf+e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r9si3578662edy.4.2021.03.24.23.59.47; Thu, 25 Mar 2021 00:00:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=te9NBf+e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230063AbhCYG6d (ORCPT + 99 others); Thu, 25 Mar 2021 02:58:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229693AbhCYG6N (ORCPT ); Thu, 25 Mar 2021 02:58:13 -0400 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC2FBC06174A; Wed, 24 Mar 2021 23:58:13 -0700 (PDT) Received: by mail-pj1-x102b.google.com with SMTP id q6-20020a17090a4306b02900c42a012202so515176pjg.5; Wed, 24 Mar 2021 23:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=U2Ib5ddOEuKBopBvgjIJBWoMeTG4fDxN3eIx8DhyDG0=; b=te9NBf+emxKWBuf7IJoeMpDO6KZYXEcL9VBzWGRMDUAbr/9GThJYF8oDn0LtaQjFlh X/4Hu5GtC2OgZVNMaOCOIIiRdILv+sAybk9aqi/C/cyU10oULWf4FBtNcla+hnbhDhAF DahdKd4VTsFjIoNo1TLAGFPsF493k6SseDengj3eeJam+Ibi6ZDht6aSmDkmcNoV8bvm 6zveANN7YmTEirYyRgSV4zKcOyo9yWwcXJbLuKKf3p2SUwV2Ja3wX7h0Uv8qGfZDbytB fZTbj4tBwhRrlG+WokxAEtMbLHjJLbbJA6k841sKw2TtNQ2l9357WOJkKx0VgmsN85rI mKVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=U2Ib5ddOEuKBopBvgjIJBWoMeTG4fDxN3eIx8DhyDG0=; b=ejEPpAOEdd29ql/bThKTbzPN9UtQ/WlTdV3f20v0hqbP+Cp5Hsk8dc5xCtYmSsl300 tgefZZHcEwMPKW0ePv0D4mdg99816gqa6jfuG1167Zsm/CV6fKWhQ0vpMfm6M2EN0D1W TuYJm6mvwhdyQ6d36JW2N1Nw073eJtxnrGcpqZitgYd+/m281tG14EratMGSnxauBRD8 PLDgtnNj+/ZfN/ZnDWToOqbOanwuxO3SK+ZF6bxyVMUG+P+76laSHO2AMGy2zO3vvdOD WdaWqXC40g70KLbBUGX20nybMcaAELOfORJrQbF5WeMt4HLaWoROBb9EQX6ddmeMlmO1 Y+6A== X-Gm-Message-State: AOAM533girqBFUm3FHmkRON1d7qZ7Ir7+jsdvHqS/dZyQDSDV5cjTqdP C+dRds9hxZvtIuXitLXAQBg= X-Received: by 2002:a17:90a:4a8f:: with SMTP id f15mr7585627pjh.19.1616655493466; Wed, 24 Mar 2021 23:58:13 -0700 (PDT) Received: from VM-0-3-centos.localdomain ([101.32.213.191]) by smtp.gmail.com with ESMTPSA id x19sm4470202pfc.152.2021.03.24.23.58.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 Mar 2021 23:58:13 -0700 (PDT) From: brookxu To: paolo.valente@linaro.org, axboe@kernel.dk, tj@kernel.org Cc: linux-block@vger.kernel.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 07/14] bfq: introduce better_fairness for container scene Date: Thu, 25 Mar 2021 14:57:51 +0800 Message-Id: <9d9566d30702268e1f270f0cf7e8b08444c127a6.1616649216.git.brookxu@tencent.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: In-Reply-To: References: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chunguang Xu In the container scenario, in addition to throughput, we also pay attention to Qos. In order to better support this scenario, we introduce the better_fairness mode here. In this mode, we expect to control the Qos of each group according to its priority better. Only add configuration interface here Signed-off-by: Chunguang Xu --- block/bfq-iosched.c | 22 ++++++++++++++++++++++ block/bfq-iosched.h | 10 ++++++++++ 2 files changed, 32 insertions(+) diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index ee8c457..e7bc5e2 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -6745,6 +6745,7 @@ static ssize_t __FUNC(struct elevator_queue *e, char *page) \ SHOW_FUNCTION(bfq_max_budget_show, bfqd->bfq_user_max_budget, 0); SHOW_FUNCTION(bfq_timeout_sync_show, bfqd->bfq_timeout, 1); SHOW_FUNCTION(bfq_strict_guarantees_show, bfqd->strict_guarantees, 0); +SHOW_FUNCTION(bfq_better_fairness_show, bfqd->better_fairness, 0); SHOW_FUNCTION(bfq_low_latency_show, bfqd->low_latency, 0); #undef SHOW_FUNCTION @@ -6886,6 +6887,26 @@ static ssize_t bfq_strict_guarantees_store(struct elevator_queue *e, return count; } +static ssize_t bfq_better_fairness_store(struct elevator_queue *e, + const char *page, size_t count) +{ + struct bfq_data *bfqd = e->elevator_data; + unsigned long __data; + int ret; + + ret = bfq_var_store(&__data, (page)); + if (ret) + return ret; + + if (__data > 1) + __data = 1; + if (__data == 0 && bfqd->better_fairness != 0) + bfq_end_wr(bfqd); + bfqd->better_fairness = __data; + + return count; +} + static ssize_t bfq_low_latency_store(struct elevator_queue *e, const char *page, size_t count) { @@ -6919,6 +6940,7 @@ static ssize_t bfq_low_latency_store(struct elevator_queue *e, BFQ_ATTR(max_budget), BFQ_ATTR(timeout_sync), BFQ_ATTR(strict_guarantees), + BFQ_ATTR(better_fairness), BFQ_ATTR(low_latency), __ATTR_NULL }; diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h index f9ed1da..674de8b 100644 --- a/block/bfq-iosched.h +++ b/block/bfq-iosched.h @@ -672,6 +672,16 @@ struct bfq_data { bool strict_guarantees; /* + * If there is no prio preemption, we force the device to + * idle to ensure Qos. IO inject also has some additional + * restrictions. The inject/merge queue should come from the + * same class in the same group. Doing so will reduce the + * throughput of the system, but it can better guarantee + * the Qos of each group and real-time tasks. + */ + bool better_fairness; + + /* * Last time at which a queue entered the current burst of * queues being activated shortly after each other; for more * details about this and the following parameters related to -- 1.8.3.1