Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp2161135rwl; Sat, 1 Apr 2023 02:58:47 -0700 (PDT) X-Google-Smtp-Source: AKy350b2ETIPHBtNRH8GvmK+eVyXAqKLUC8qVFMvQ7aNYLIxNo9tIULikRCCO9GifuMfYQfeWkuk X-Received: by 2002:a17:906:174b:b0:929:7d80:3a37 with SMTP id d11-20020a170906174b00b009297d803a37mr29088066eje.37.1680343127518; Sat, 01 Apr 2023 02:58:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680343127; cv=none; d=google.com; s=arc-20160816; b=pDRG6U2qOIzRJUe0GSBjhSgDzkY2q+sAnUJCP7CGyRsJZc7dgfqud8tTcHbHtvUK9m eEEzmNI7zxmNBW+VUrt2Zz9/w+JEEwwQDmjT7wMDSgetsc0J7WlPxvF/0xZM6EluUXB4 6fKY4E1ytDEMB9OZO6ijlsbYkt8+CWpE9tsU230N9k2/BVur3ndvpv8bDSkzusYGIAB/ PaFA8bGeHAYmvmuQX9j0afetfx6bD/uchyrG+9R6iFVM6tZelhXn5rogOb5nHwmNUOAA SMy4qOtUHyT9iIlAFAX+XvfWsUCc28LlNIaYg044qQ1iaEgttL7lENdhEzSm2SdFVaDn jjCA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=hiK4KO4kZbl8xYSoAWQs5Xyf4Snj7jNQFcEtAQejez8=; b=h77a1SzwIJJ/XShowvxir9hHJAZdro6VVFF6bOpdxeg2/llTSY3mXO8AtNIU57oFMA csBMVuo99n3oynIiNzW21gP+tl5FkgrJpF0w0cnutJf4j6HTwSGmxNzPnkWWcsjlJXpZ hbwU5xW05WoRw9OW2C9Yj5DSML/l/5IqDMzyhChMF6LaM0A2kiI8uOWldEamwb8Wvs+s UlfM8sU1/O3WoqVb4vxoSR4X4oSGJfzpQlX/Y6XD5kKCGoFxURj73l32AZ7RIui1F2th i5fXFykGWEceGndqBHk6XTD1dUqRG13NoKjfiYXdWO8M3+s6Thym6Pb9LHxPbeM91yr9 OCYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=V+zhxA47; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r16-20020a170906705000b0093defbd627csi881565ejj.1027.2023.04.01.02.58.23; Sat, 01 Apr 2023 02:58:47 -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=@bytedance.com header.s=google header.b=V+zhxA47; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229867AbjDAJrj (ORCPT + 99 others); Sat, 1 Apr 2023 05:47:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229549AbjDAJrg (ORCPT ); Sat, 1 Apr 2023 05:47:36 -0400 Received: from mail-pj1-x1036.google.com (mail-pj1-x1036.google.com [IPv6:2607:f8b0:4864:20::1036]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29CB81D2C6 for ; Sat, 1 Apr 2023 02:47:23 -0700 (PDT) Received: by mail-pj1-x1036.google.com with SMTP id f6-20020a17090ac28600b0023b9bf9eb63so26018092pjt.5 for ; Sat, 01 Apr 2023 02:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1680342442; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hiK4KO4kZbl8xYSoAWQs5Xyf4Snj7jNQFcEtAQejez8=; b=V+zhxA472E3zjzApz3J/B0H+TF2UZuO9A3fqlLhaAsX+s8ZPpc6Y5xCXMt+ODvpYia prVRA6DUvQ0U8QdnsdMSDgxnevfp/Htz8mOqyOLtb/ctA/aKl7nZX5U1yZOEb8m1jhIS h2XiY2mp3+D5wLLfJJ9IWb9ftDxnGzA9PjwjTDB58mMn4WjQlAP9ATXwjr0EZF6KVmMo CseN0wvqz9Cb3qySGD9rkACfMDQ7Lmknsc0B9/T5z24lpA8DEXa9OyJu1KaNRtkaErtR WU2DKk+Q55OX8+3ozYk2myGGhObt9Vsrf3CqSyvenh4P2tCxjdTR8vfI+su5veg4D4Ys 1rwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680342442; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hiK4KO4kZbl8xYSoAWQs5Xyf4Snj7jNQFcEtAQejez8=; b=FdwlpYf9a63Om3KYgWj6baMNlFSRvmGU6vGZFEiwsE+HFXstQtSDuhwBYQ4qROkPIv jZ9eLPNZtqwdBljX0hBs4DCuFaDT5ai04kSLlPs3FEKeFI0MrhWteLj4rno0sVIUuu// fZHAdELROriEXexYRWwBxy2w8hSiLnXoSBH8BTuflFaVhbeJW7kpujLIN9YWJ0rhZeEo F8ImL9dCt0yzv/S+f8mt31jwgoZsfcmEWmewYD0aMgnz93nFf6pQz+p0mMbYwzPpdm9Q v1IlTXzxv1cD4xy9WodZoGfgNC0gNYnmHf/wTcW7ZP4+HYA0hRUZ0ibkZfurHVEsMq8r 56IA== X-Gm-Message-State: AAQBX9esXN0oYoSB+pwQjlAl975bgqW9x2JoBf8/+lpO2r88FVI0pMbe rAmpfSpLhhq314U6mo01wLpBHI1Fn9EzU3fE6edGMA== X-Received: by 2002:a05:6a20:cd5a:b0:e4:d395:5ce6 with SMTP id hn26-20020a056a20cd5a00b000e4d3955ce6mr3118164pzb.25.1680342442606; Sat, 01 Apr 2023 02:47:22 -0700 (PDT) Received: from C02GD5ZHMD6R.bytedance.net ([139.177.225.240]) by smtp.gmail.com with ESMTPSA id w26-20020aa7859a000000b0062d90f36d16sm3233919pfn.88.2023.04.01.02.47.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Apr 2023 02:47:22 -0700 (PDT) From: Jinke Han X-Google-Original-From: Jinke Han To: tj@kernel.org, josef@toxicpanda.com, axboe@kernel.dk Cc: cgroups@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Jinke Han Subject: [PATCH v2] blk-throttle: Fix io statistics for cgroup v1 Date: Sat, 1 Apr 2023 17:47:08 +0800 Message-Id: <20230401094708.77631-1-hanjinke.666@bytedance.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=unavailable 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: Jinke Han After commit f382fb0bcef4 ("block: remove legacy IO schedulers"), blkio.throttle.io_serviced and blkio.throttle.io_service_bytes become the only stable io stats interface of cgroup v1, and these statistics are done in the blk-throttle code. But the current code only counts the bios that are actually throttled. When the user does not add the throttle limit, the io stats for cgroup v1 has nothing. I fix it according to the statistical method of v2, and made it count all ios accurately. Fixes: a7b36ee6ba29 ("block: move blk-throtl fast path inline") Signed-off-by: Jinke Han --- block/blk-cgroup.c | 6 ++++-- block/blk-throttle.c | 6 ------ block/blk-throttle.h | 9 +++++++++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index bd50b55bdb61..33263d0d0e0f 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -2033,6 +2033,9 @@ void blk_cgroup_bio_start(struct bio *bio) struct blkg_iostat_set *bis; unsigned long flags; + if (!cgroup_subsys_on_dfl(io_cgrp_subsys)) + return; + /* Root-level stats are sourced from system-wide IO stats */ if (!cgroup_parent(blkcg->css.cgroup)) return; @@ -2064,8 +2067,7 @@ void blk_cgroup_bio_start(struct bio *bio) } u64_stats_update_end_irqrestore(&bis->sync, flags); - if (cgroup_subsys_on_dfl(io_cgrp_subsys)) - cgroup_rstat_updated(blkcg->css.cgroup, cpu); + cgroup_rstat_updated(blkcg->css.cgroup, cpu); put_cpu(); } diff --git a/block/blk-throttle.c b/block/blk-throttle.c index 47e9d8be68f3..2be66e9430f7 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -2174,12 +2174,6 @@ bool __blk_throtl_bio(struct bio *bio) rcu_read_lock(); - if (!cgroup_subsys_on_dfl(io_cgrp_subsys)) { - blkg_rwstat_add(&tg->stat_bytes, bio->bi_opf, - bio->bi_iter.bi_size); - blkg_rwstat_add(&tg->stat_ios, bio->bi_opf, 1); - } - spin_lock_irq(&q->queue_lock); throtl_update_latency_buckets(td); diff --git a/block/blk-throttle.h b/block/blk-throttle.h index ef4b7a4de987..d1ccbfe9f797 100644 --- a/block/blk-throttle.h +++ b/block/blk-throttle.h @@ -185,6 +185,15 @@ static inline bool blk_should_throtl(struct bio *bio) struct throtl_grp *tg = blkg_to_tg(bio->bi_blkg); int rw = bio_data_dir(bio); + if (!cgroup_subsys_on_dfl(io_cgrp_subsys)) { + if (!bio_flagged(bio, BIO_CGROUP_ACCT)) { + bio_set_flag(bio, BIO_CGROUP_ACCT); + blkg_rwstat_add(&tg->stat_bytes, bio->bi_opf, + bio->bi_iter.bi_size); + } + blkg_rwstat_add(&tg->stat_ios, bio->bi_opf, 1); + } + /* iops limit is always counted */ if (tg->has_rules_iops[rw]) return true; -- 2.20.1