From patchwork Wed Mar 20 11:02:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597196 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 82FEDCD11DC for ; Wed, 20 Mar 2024 02:06:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F34DC6B0082; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E8C726B0093; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B7D496B007B; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 81C386B0089 for ; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 618A6A06EC for ; Wed, 20 Mar 2024 02:06:13 +0000 (UTC) X-FDA: 81915777426.29.93CC281 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf23.hostedemail.com (Postfix) with ESMTP id 66F9E14000E for ; Wed, 20 Mar 2024 02:06:09 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf23.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=l5Gv4yIIM3kRfPPaJIf8qJ9fP1ECAnOqi4b5YLNJtu8=; b=5e9BSEQplln/SwTjEylQN6Bm/B5woikgPqX7gfLbEZCaixQGmaGVkhbt/XUsRWQPCXs9XX hvQ3jjJPsXrABqmu2g8kvt10lXtOvkEOBRJuF9wnt6aTvwgLTjCs8QiXjRCXHLWNbfClmE xKiu47IUF1/HnbtsFJJP8hj58/S7ZXI= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf23.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900371; a=rsa-sha256; cv=none; b=FRqX2LZbmk4QJzDi6mBoXnlOKqlVAoP7er4w2dqZD9x+jXW/qB2XqnOkGUSYigxWwszx0q 5HIM6NC09i7iPacE8nnMqMnkFicXd04epEFk1wbcyq6KpRiVM03iXF6ugq5s0JnqO0jFtP V/SmrffKpWB+Jj2fu3snO4vsGmHHKFY= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TzsPx1Kj4z4f3n5p for ; Wed, 20 Mar 2024 10:05:57 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 1D1A11A08BD for ; Wed, 20 Mar 2024 10:06:05 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S3; Wed, 20 Mar 2024 10:06:04 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 1/6] writeback: collect stats of all wb of bdi in bdi_debug_stats_show Date: Wed, 20 Mar 2024 19:02:17 +0800 Message-Id: <20240320110222.6564-2-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S3 X-Coremail-Antispam: 1UD129KBjvJXoWxJw4kWFWfXw4kXF15ZrykGrg_yoW7JF48pF 43G3WfJrWxZFy3WasxZFWDXr45tw4vq342qF92k3y5G3WDAFya9FyxCa40yr18GrZ7JF15 Jan5ArykC3yUKr7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPab4IE77IF4wAFF20E14v26ryj6rWUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUGwA2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7CjxV A2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAq x4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r 43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF 7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxV WUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU 3Xo2DUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Queue-Id: 66F9E14000E X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: bcppx966bewpwhfft6w3z3tgw6c6aqms X-HE-Tag: 1710900369-317163 X-HE-Meta: U2FsdGVkX1/G4h9S3yZF9WXLF1J8lJG19t1Ayt6r2O7qOtAslQfqtDi1upomlhOjDfH3N00jHqTgEPBPHs8COvVLDoyyOiw002KGdLsLdk9t7j6a7+nLilE2MNLnn6Amdx1ROpjcf1vM5qsu79kGbz1KxUW7Bi6yxZafjXwjB3WydSfq/ryihrmPyz/FXtEifm4RSoE5D2LWVXrGLibOJHC7Xo9WcC47a506PXcn9kM2i5vWq6kZJVS4OkvPM7QDMW/c+FYDmrCfwQqrDFVoYEz6gX8XhbcTYgRHKIoDh0vqNW4q+Aw+SkXJDOl9Wla05D6LnmurxrsHCaxqlkOGIdnSjk99XVdAa8ZSTA+8lz2gbi1JSdrPk3HbJdL8FYKhd7Fc4R7cskjP8r7yYK+5CkFLviWSICD9JmSX3mIzjZSuDiSB6+YR42NGwi11B+h3GsNk/JYzACs/TOrEFVmPbK9Z1zGR+gb95OQKsF1uFhtfqCJGbufVH+QL8MiXum7TvYMlgxoM6HdrUuCgkYqSVpVBLaRuwx5rPoutwjO4tk7TUUG1keay7oVvzQ74czLou2oxiM9U7whGmzRJgZsJ2ZNmI68PZnsf2Ce8HtKv/wePnRT/pJdLjGGMKG7Io0YSqcMH2wqxwCKHzP70v3Lvl1Z6gOJpiWyXv+2mOvf+fO/+GvtvaG25Vo3l1zvfXiqHYeAyxgmd2Pio8gC32uIlLuyXtc6Ar5JpxPxyevUlqfMywG671E1X/o0+ch13NqQEnGQiS23valScKjkposjvqzNjCNfKe9xjPHnWzTvWkRw7TQ+GRz8zF+5wRhrFbznCZ7FNSrS0alA24imlK07eC9zr0Cqqr7hBR/liR4Gxj1m5PMZQ+qsDMmajl4AL+1me+9xC64p9nYIfx0/TkDZJ09onc6NoXpu1Icf/yhwrjRGHK1o2WhGCgC2+s7s5hyHfo3dYGhpp3lmmS2v+d3q mW5vsla3 OkjKsMA+XViBnAEm1831JsSkK98rFHfB/4olROQ0kVIvRcDs0pe/uUtHl80BG3oO16deh0RYUt7b/VxblwkPZhWL6pX4AQtKl5GjZHMObrvwICAIgr4JkFIHWb59j6vJVBC37rXH+rp6kZjRIxMJ/Plw4ronGYidhV1NgWotiO40KQaLfvwOVVzyRHuklyopiVv9YXtOveVinrpehWCanLCd0k7f/R4JXeKJuHuJD6oErTZtLiYpykkvahQQ/ur3qpN37aD0nNGXrdav7uyYLxAVDpm8smsSd/MsfrHFx7hWzX8I= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: /sys/kernel/debug/bdi/xxx/stats is supposed to show writeback information of whole bdi, but only writeback information of bdi in root cgroup is collected. So writeback information in non-root cgroup are missing now. To be more specific, considering following case: /* create writeback cgroup */ cd /sys/fs/cgroup echo "+memory +io" > cgroup.subtree_control mkdir group1 cd group1 echo $$ > cgroup.procs /* do writeback in cgroup */ fio -name test -filename=/dev/vdb ... /* get writeback info of bdi */ cat /sys/kernel/debug/bdi/xxx/stats The cat result unexpectedly implies that there is no writeback on target bdi. Fix this by collecting stats of all wb in bdi instead of only wb in root cgroup. Signed-off-by: Kemeng Shi --- mm/backing-dev.c | 93 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 5f2be8c8df11..788702b6c5dd 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -39,6 +39,19 @@ struct workqueue_struct *bdi_wq; #include #include +struct wb_stats { + unsigned long nr_dirty; + unsigned long nr_io; + unsigned long nr_more_io; + unsigned long nr_dirty_time; + unsigned long nr_writeback; + unsigned long nr_reclaimable; + unsigned long nr_dirtied; + unsigned long nr_written; + unsigned long dirty_thresh; + unsigned long wb_thresh; +}; + static struct dentry *bdi_debug_root; static void bdi_debug_init(void) @@ -46,31 +59,65 @@ static void bdi_debug_init(void) bdi_debug_root = debugfs_create_dir("bdi", NULL); } -static int bdi_debug_stats_show(struct seq_file *m, void *v) +static void collect_wb_stats(struct wb_stats *stats, + struct bdi_writeback *wb) { - struct backing_dev_info *bdi = m->private; - struct bdi_writeback *wb = &bdi->wb; - unsigned long background_thresh; - unsigned long dirty_thresh; - unsigned long wb_thresh; - unsigned long nr_dirty, nr_io, nr_more_io, nr_dirty_time; struct inode *inode; - nr_dirty = nr_io = nr_more_io = nr_dirty_time = 0; spin_lock(&wb->list_lock); list_for_each_entry(inode, &wb->b_dirty, i_io_list) - nr_dirty++; + stats->nr_dirty++; list_for_each_entry(inode, &wb->b_io, i_io_list) - nr_io++; + stats->nr_io++; list_for_each_entry(inode, &wb->b_more_io, i_io_list) - nr_more_io++; + stats->nr_more_io++; list_for_each_entry(inode, &wb->b_dirty_time, i_io_list) if (inode->i_state & I_DIRTY_TIME) - nr_dirty_time++; + stats->nr_dirty_time++; spin_unlock(&wb->list_lock); + stats->nr_writeback += wb_stat(wb, WB_WRITEBACK); + stats->nr_reclaimable += wb_stat(wb, WB_RECLAIMABLE); + stats->nr_dirtied += wb_stat(wb, WB_DIRTIED); + stats->nr_written += wb_stat(wb, WB_WRITTEN); + stats->wb_thresh += wb_calc_thresh(wb, stats->dirty_thresh); +} + +#ifdef CONFIG_CGROUP_WRITEBACK +static void bdi_collect_stats(struct backing_dev_info *bdi, + struct wb_stats *stats) +{ + struct bdi_writeback *wb; + + /* protect wb from release */ + mutex_lock(&bdi->cgwb_release_mutex); + list_for_each_entry(wb, &bdi->wb_list, bdi_node) + collect_wb_stats(stats, wb); + mutex_unlock(&bdi->cgwb_release_mutex); +} +#else +static void bdi_collect_stats(struct backing_dev_info *bdi, + struct wb_stats *stats) +{ + collect_wb_stats(stats, &bdi->wb); +} +#endif + +static int bdi_debug_stats_show(struct seq_file *m, void *v) +{ + struct backing_dev_info *bdi = m->private; + unsigned long background_thresh; + unsigned long dirty_thresh; + struct wb_stats stats; + unsigned long tot_bw; + global_dirty_limits(&background_thresh, &dirty_thresh); - wb_thresh = wb_calc_thresh(wb, dirty_thresh); + + memset(&stats, 0, sizeof(stats)); + stats.dirty_thresh = dirty_thresh; + bdi_collect_stats(bdi, &stats); + + tot_bw = atomic_long_read(&bdi->tot_write_bandwidth); seq_printf(m, "BdiWriteback: %10lu kB\n" @@ -87,18 +134,18 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v) "b_dirty_time: %10lu\n" "bdi_list: %10u\n" "state: %10lx\n", - (unsigned long) K(wb_stat(wb, WB_WRITEBACK)), - (unsigned long) K(wb_stat(wb, WB_RECLAIMABLE)), - K(wb_thresh), + K(stats.nr_writeback), + K(stats.nr_reclaimable), + K(stats.wb_thresh), K(dirty_thresh), K(background_thresh), - (unsigned long) K(wb_stat(wb, WB_DIRTIED)), - (unsigned long) K(wb_stat(wb, WB_WRITTEN)), - (unsigned long) K(wb->write_bandwidth), - nr_dirty, - nr_io, - nr_more_io, - nr_dirty_time, + K(stats.nr_dirtied), + K(stats.nr_written), + K(tot_bw), + stats.nr_dirty, + stats.nr_io, + stats.nr_more_io, + stats.nr_dirty_time, !list_empty(&bdi->bdi_list), bdi->wb.state); return 0; From patchwork Wed Mar 20 11:02:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597197 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 906D7C54E71 for ; Wed, 20 Mar 2024 02:06:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 347956B007B; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2CBD16B008A; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F26966B007B; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 690B66B0085 for ; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 187351A0B25 for ; Wed, 20 Mar 2024 02:06:13 +0000 (UTC) X-FDA: 81915777426.29.FE2B390 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf15.hostedemail.com (Postfix) with ESMTP id 6A646A0008 for ; Wed, 20 Mar 2024 02:06:09 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf15.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mmFS04ZJdeH/lK7kKWd3FZA/Psfh9tii6fCdDgfIrgA=; b=16Cs0jEo+7LPBpUDppWfgQqEm5KoUqsO+2c2vkUdQyUqnhb07GRKsBiNl7ygzGKkGxgY5c aifaJQCt8lU/z9pQ0anP6zNHvoIubPENW+hQrOYIpzitQAEj4oN4WikKP+g5QxnnmZDLB5 S2odz3XOfyIDtjesW3+ljl9tx5IcBYM= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf15.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900371; a=rsa-sha256; cv=none; b=NuWGIUDgzomVp4IJRi+0ofawtGOTZTHNL+56yEFG+2VNOAP76eQfq7AfmAm7Zv09oa3qZZ 9PE0Ch6cf7W30t5V3oxYOevb/HLi4/Ox4DtRssmJFx7x5vTK04JCOFGVDhyvHb3xCS9l7t FKsUM1Tnsl33w5SHhmh8WEV6RkOgJOU= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TzsQ15B9rz4f3kKb for ; Wed, 20 Mar 2024 10:06:01 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 958D51A0199 for ; Wed, 20 Mar 2024 10:06:05 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S4; Wed, 20 Mar 2024 10:06:05 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 2/6] writeback: support retrieving per group debug writeback stats of bdi Date: Wed, 20 Mar 2024 19:02:18 +0800 Message-Id: <20240320110222.6564-3-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S4 X-Coremail-Antispam: 1UD129KBjvJXoWxur1rCr4xKFWUtFWrAFWfGrg_yoWruw4kpF sxGw1rJrWUZr17WFZxAFZrXry3Jw4FqrW2qF97ZayrKFnrKF1aqFyxury0yr1UJrWfAFya vws0kry8urW8KrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPab4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUXwA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7CjxV A2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAq x4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r 43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF 7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxV WUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU ImhFDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 6A646A0008 X-Stat-Signature: 3n75jwnwjozbwzjna8buhn5udxp578xn X-HE-Tag: 1710900369-222782 X-HE-Meta: U2FsdGVkX1+NOqwi1gqoDUQVvs0NeVMb0qMVkNaq+mjKek6VlUR4gRggwG0fltc18dwNG8A2NeMuznwY1Hak7zv5GWUGjfZP0dzHoXT6cNSgc1/V8DHvTqIAmuFY9H/JxfP0+0ebjevG6rp9R7CDFxQ7daA+ncTd8WXpr4PlF2FCTl1XSDr0kA9jDkt9ZANr1/tCxVkiBCyOw4i6MRjAtVSI5Wt++HGSoeLS19+U39ts2WgUU4gaPEFiBVwR3PF45Ck3u0jM48kWPa/QUzp2mmCKVZNJ5fcsXYlnsVtYrMS+uxWsMN+XkoVYhYLtrmq/jc2CeN2WjhlwBYDAX9+rYc6bJzO7clsSyCplJEQqvQ0W/zPxSusDPI247y+OoWAh/hjoOF948Lui/f5PbM8W7DqoOZQHYGDemv6sHyUL8qOkvytohSlb80irPkGbcYIppSz2pCKaxdMQgWyBRRLWbh+LlAOCDs6foQ+tWX2AiYKjdsDXF/JezbJV+DPU7xib76ce2Z2CRbESqdayV02jlB0nzD0HoAf8uTd09HLtQNnIjo0DNuZ08Cx7lZH+wLtUIFTlF8CDldg458k2wVFwdX4ZBFcEn8yXqvFErlVgkMyXGw7pPk0j/fs+yL9qZ63KUBg3/oANoMAtvmJXC/LBHQaiCQSWEkHqLSopmVPpoeCOCZEqWm3mYGsQrO9W4fkPfsjZDH5rqdu7AMPq4vNi2VB6bqt0bBmEb2AD3GnvaAwQ4VPfyiixHT21WD9/KBOkzaY1C6oPPlowf105mUeTS1cWR77IWgV1Zki4qXFHATLxOxWgwYmAE+7MqNK+6dLr2tfgRTPW09r+PtVDpp63e0AARzXGnfwGVy9InJhqLv/uTjuTjtFNoHuLV+fCZ9dJWtDnyHOnOKe4swvs0QgAYhfppnTPSM5NrjuF+HqUdJs7Kx3l2MUOKrYqQ2EP9SXN X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add /sys/kernel/debug/bdi/xxx/wb_stats to show per group writeback stats of bdi. Signed-off-by: Kemeng Shi --- include/linux/writeback.h | 1 + mm/backing-dev.c | 66 +++++++++++++++++++++++++++++++++++++++ mm/page-writeback.c | 19 +++++++++++ 3 files changed, 86 insertions(+) diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 9845cb62e40b..bb1ce1123b52 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -355,6 +355,7 @@ int dirtytime_interval_handler(struct ctl_table *table, int write, void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty); unsigned long wb_calc_thresh(struct bdi_writeback *wb, unsigned long thresh); +unsigned long wb_calc_cg_thresh(struct bdi_writeback *wb); void wb_update_bandwidth(struct bdi_writeback *wb); diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 788702b6c5dd..bfc4079dc7fe 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -95,12 +95,77 @@ static void bdi_collect_stats(struct backing_dev_info *bdi, collect_wb_stats(stats, wb); mutex_unlock(&bdi->cgwb_release_mutex); } +static void wb_stats_show(struct seq_file *m, struct bdi_writeback *wb, + struct wb_stats *stats) +{ + + seq_printf(m, + "WbCgIno: %10lu\n" + "WbWriteback: %10lu kB\n" + "WbReclaimable: %10lu kB\n" + "WbDirtyThresh: %10lu kB\n" + "WbDirtied: %10lu kB\n" + "WbWritten: %10lu kB\n" + "WbWriteBandwidth: %10lu kBps\n" + "b_dirty: %10lu\n" + "b_io: %10lu\n" + "b_more_io: %10lu\n" + "b_dirty_time: %10lu\n" + "state: %10lx\n", + cgroup_ino(wb->memcg_css->cgroup), + K(stats->nr_writeback), + K(stats->nr_reclaimable), + K(stats->wb_thresh), + K(stats->nr_dirtied), + K(stats->nr_written), + K(wb->avg_write_bandwidth), + stats->nr_dirty, + stats->nr_io, + stats->nr_more_io, + stats->nr_dirty_time, + wb->state); +} + +static int cgwb_debug_stats_show(struct seq_file *m, void *v) +{ + struct backing_dev_info *bdi = m->private; + unsigned long background_thresh; + unsigned long dirty_thresh; + struct bdi_writeback *wb; + struct wb_stats stats; + + global_dirty_limits(&background_thresh, &dirty_thresh); + + mutex_lock(&bdi->cgwb_release_mutex); + list_for_each_entry(wb, &bdi->wb_list, bdi_node) { + memset(&stats, 0, sizeof(stats)); + stats.dirty_thresh = dirty_thresh; + collect_wb_stats(&stats, wb); + + if (mem_cgroup_wb_domain(wb) != NULL) + stats.wb_thresh = min(stats.wb_thresh, wb_calc_cg_thresh(wb)); + + wb_stats_show(m, wb, &stats); + } + mutex_unlock(&bdi->cgwb_release_mutex); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(cgwb_debug_stats); + +static void cgwb_debug_register(struct backing_dev_info *bdi) +{ + debugfs_create_file("wb_stats", 0444, bdi->debug_dir, bdi, + &cgwb_debug_stats_fops); +} #else static void bdi_collect_stats(struct backing_dev_info *bdi, struct wb_stats *stats) { collect_wb_stats(stats, &bdi->wb); } + +static inline void cgwb_debug_register(struct backing_dev_info *bdi) { } #endif static int bdi_debug_stats_show(struct seq_file *m, void *v) @@ -158,6 +223,7 @@ static void bdi_debug_register(struct backing_dev_info *bdi, const char *name) debugfs_create_file("stats", 0444, bdi->debug_dir, bdi, &bdi_debug_stats_fops); + cgwb_debug_register(bdi); } static void bdi_debug_unregister(struct backing_dev_info *bdi) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0e20467367fe..ba1b6b5ae5d6 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -893,6 +893,25 @@ unsigned long wb_calc_thresh(struct bdi_writeback *wb, unsigned long thresh) return __wb_calc_thresh(&gdtc, thresh); } +unsigned long wb_calc_cg_thresh(struct bdi_writeback *wb) +{ + struct dirty_throttle_control gdtc = { GDTC_INIT_NO_WB }; + struct dirty_throttle_control mdtc = { MDTC_INIT(wb, &gdtc) }; + unsigned long filepages, headroom, writeback; + + gdtc.avail = global_dirtyable_memory(); + gdtc.dirty = global_node_page_state(NR_FILE_DIRTY) + + global_node_page_state(NR_WRITEBACK); + + mem_cgroup_wb_stats(wb, &filepages, &headroom, + &mdtc.dirty, &writeback); + mdtc.dirty += writeback; + mdtc_calc_avail(&mdtc, filepages, headroom); + domain_dirty_limits(&mdtc); + + return __wb_calc_thresh(&mdtc, mdtc.thresh); +} + /* * setpoint - dirty 3 * f(dirty) := 1.0 + (----------------) From patchwork Wed Mar 20 11:02:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597198 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A43AAC54E68 for ; Wed, 20 Mar 2024 02:06:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5C02F6B0089; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 280526B0085; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB5166B0088; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 894C36B008A for ; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 481BA1A0BCA for ; Wed, 20 Mar 2024 02:06:13 +0000 (UTC) X-FDA: 81915777426.30.BEEF4E7 Received: from dggsgout12.his.huawei.com (unknown [45.249.212.56]) by imf08.hostedemail.com (Postfix) with ESMTP id EC958160013 for ; Wed, 20 Mar 2024 02:06:09 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf08.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=da/n/nOyweklDqbgVvFuNTp9AgXe/uzRw6J4puEoPec=; b=NNf+qtpfrQpV58EtGU6Af3/OfjGiI3m9/Ek1s8uOsySD2hyP0XK3sooBt4rZ2kVa4ClR8F V2hLrI/GzcfS2cAkxSaoIEBTQ/r+Ile2K5pf4ZYKVOUoXk5jKGLK59Cvfp5HpZrpNFDIsJ aQqm0phgFk/f4pPGQ2M+geiKbZlVNu4= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf08.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900371; a=rsa-sha256; cv=none; b=3HOPqpSU9MHuQGB9drQIuuseEmPJUGWPc3zhuyEZnnY3istAdmEedakfB0KDHWdgozY6+C NUQ7+fLNOb3meFOl6a2YR300hlQoPT6urhXqncb5HhN3qwJMwq/lgYflxDbdBlBOO8HLxs Do/tbhi5VCUgKDM+8zjVcbQx3WAYZwI= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4TzsQ011Zlz4f3kF5 for ; Wed, 20 Mar 2024 10:06:00 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 21C8C1A0199 for ; Wed, 20 Mar 2024 10:06:06 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S5; Wed, 20 Mar 2024 10:06:05 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 3/6] workqueue: remove unnecessary import and function in wq_monitor.py Date: Wed, 20 Mar 2024 19:02:19 +0800 Message-Id: <20240320110222.6564-4-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S5 X-Coremail-Antispam: 1UD129KBjvJXoWrtr1Dtw1xCF15Xr4rXw47Jwb_yoW8Jr15pF sakF47G3yfXryUX3Z5W343AFyfWrWDAF1qgayrXr1avrs8Xr9Ig34xK398Jr95Xa4DXFW0 9a9rWrZ0qr4DZF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPab4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUWwA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7CjxV A2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAq x4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r 43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF 7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxV WUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU Iq2MUUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: EC958160013 X-Stat-Signature: 4skafymhgnwzybc687w54skqppqfjutp X-Rspam-User: X-HE-Tag: 1710900369-711789 X-HE-Meta: U2FsdGVkX18yieCJv2vr8dJYeQ5M7x2Fz3Rak4FKfUZxTAUe0PLN0tg1dv5Vndvu/lYbTjSHDTRukv2vpT1NsxUpUZBfFjheBjnpLs7hbFH/okGeRiBxHqkG8/R51c2/iLrngsaNXdhQjp7v/L2/Xg8q6qJOd+/gLHm9PF+FqNuLbvWIefqhcJcar5Gq1V6f7M88q0QjhPdXe3XjcxQ/HgYhqPHJj8eeLBu3LNtTtn4bSyHVrfLYgKLO4ZncGiu4jpG/0AapKpK7rC+KQGRzPsBR1I+ih6UgaKnp3p0X5Y0pH08lER5N4XovvXtTvd7XNJj//8kQYbbKTY1wuAYffjO3/cvSscxb+VG8h/trZoh4gucClyxwhpDssNEnJFIJ7bikIdAcghw7WAILCUeFeGbIbUd10qclpUBxSemJjvJ4mkBetSxN/IiZ68FTJAcM9ag/6NzgfUn/kjmpiJv9b+tYTmIwWcBmat7dPBasjA1kF3L5cqlHAW3nSwXJ3un6caaB7iom9iLlVg8K5nDpv099MiHwo44OLqmaxY2+OVR0MT3SMfaKIK2v+ws+tTqBiLnYsp3cTVbww81YVzmzoDs2xJ6pFHb3CMIbmP3wfDv4sPrTrMjb8oPP5w6TMLYdottYjdF9vtqapQACzxYAASckq50wTeQe/nMimvLScMLlW2ta9/5s6F/2krAjvpvECCQMEJKJmEjoRsKxq8cRGCSYw73wBwRyzeyB8EJJSWJTsAiB+3ew9YukoU3y3f8siCbU6USwHzGwyytUgnmGgpfFttDCzY1M1KlRcLH32wKZrlsItMo0TCdAOlAdv7AXWK8b6At1lYtX8PIb3da7PRUnR7qxyuTRUs+ie8mECV7vh0AIGAWcFKkBnwbXVN1dF8PlLN5h1isFEu9WfuZnS7cZM0DcPpgTtZDODQ0YTBWdXrkjW231F0I4rO+Z+l5hYiQCXgPiBT2EPo5WKrg hUy+6YaG r09gXrH92jbef/HGG1PLrYfd91lPFSDrpJ/5DLuLs0M7zEDgU1ajLHxgw67wFRQebgWHDJ9+GPuFX09LK2BwAbchlTeKlBIPPtC8u4DADm6j1XstN4vdrCEgPjJo6vyu1+nccMBXb3v6pZzA5fQ1YQ2FyedQpEGV2Oz9wur+Oqb5QTZn932XxVRhwJzVY5ytoomBbjp0PvwgNw45bb2ioFfdIHChVj0zJ3LIN0Se6TvKVnYY+LJj5Z2K/07FRadZaoL6T9Femmvf+EjtgGuuza/SqCSjDSQEQZReV42DavZKlGc1YAW8eJZ4R0jBbpVOqR+6NfNIKRQa8aBs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.001921, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Remove unnecessary import and function in wq_monitor.py Signed-off-by: Kemeng Shi --- tools/workqueue/wq_monitor.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/tools/workqueue/wq_monitor.py b/tools/workqueue/wq_monitor.py index a8856a9c45dc..9e964c5be40c 100644 --- a/tools/workqueue/wq_monitor.py +++ b/tools/workqueue/wq_monitor.py @@ -32,16 +32,13 @@ https://github.com/osandov/drgn. rescued The number of work items executed by the rescuer. """ -import sys import signal -import os import re import time import json import drgn -from drgn.helpers.linux.list import list_for_each_entry,list_empty -from drgn.helpers.linux.cpumask import for_each_possible_cpu +from drgn.helpers.linux.list import list_for_each_entry import argparse parser = argparse.ArgumentParser(description=desc, @@ -54,10 +51,6 @@ parser.add_argument('-j', '--json', action='store_true', help='Output in json') args = parser.parse_args() -def err(s): - print(s, file=sys.stderr, flush=True) - sys.exit(1) - workqueues = prog['workqueues'] WQ_UNBOUND = prog['WQ_UNBOUND'] From patchwork Wed Mar 20 11:02:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597200 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D6DB4C54E68 for ; Wed, 20 Mar 2024 02:06:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA5D76B0088; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B2F506B008A; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7FAAB6B0092; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3D5BB6B0088 for ; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 06F2112097B for ; Wed, 20 Mar 2024 02:06:14 +0000 (UTC) X-FDA: 81915777468.24.93BC3E0 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf17.hostedemail.com (Postfix) with ESMTP id 8AAB940007 for ; Wed, 20 Mar 2024 02:06:10 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf17.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J//5oQcdJdjE2/exBGNYAoE0Ovp87brJiCTIX9PY4wc=; b=Cd+6la/i6ah5GjUmFz/wOXuZSLJ1uCQn1EdbLhIuijUBCIIp/1aiDO5BMPySkRorRohZs2 JZ50+7I5GI5IS9rGpoquQyGLY3nA0WIvgwa8deMUwX2iVVaxmA3kYhndGiP+zqooJh6+4T m1c4BVcb0VUPI80vyUGnZGnTTetxJVg= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf17.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900371; a=rsa-sha256; cv=none; b=joNbC+bCbWTyptdJjr8O+6VkyyXXhy3fHK1fKlrIeQGckf6YX0nNsequem0SbSHtIO4/w3 6B+kCDqnlQvXXNZBsY241lhRq4oO3MRNlGBLS6g70sF8Q4gcjaPf2T6jHt45uK4ZVKUUUN L+YYeuylxgmiMHW017XPDbEoVumW1nk= Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TzsPy4yvzz4f3n5l for ; Wed, 20 Mar 2024 10:05:58 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 988A61A016E for ; Wed, 20 Mar 2024 10:06:06 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S6; Wed, 20 Mar 2024 10:06:06 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 4/6] writeback: add wb_monitor.py script to monitor writeback info on bdi Date: Wed, 20 Mar 2024 19:02:20 +0800 Message-Id: <20240320110222.6564-5-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S6 X-Coremail-Antispam: 1UD129KBjvJXoW3Gw4Dur4rGF1fZFWxZw1rtFb_yoW7AFyDpF sYywnxAr1xZa4xJrn5ua40yryrCFs5Cr17XrZrArWaka15Wa4SyryrCFyUAry3GryDA39x XrWj93y0gayjgFJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPmb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3w A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7 CjxVA2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2Iq xVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r 1q6r43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY 6xkF7I0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aV AFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZE Xa7IU0TqcUUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Queue-Id: 8AAB940007 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: pr6e6yb5fbrreixd4ewuw9cwxza3mnox X-HE-Tag: 1710900370-143888 X-HE-Meta: U2FsdGVkX18Mt/A8OsFBIBeH6QrktfaL0MSTMXmpX2VjcmiGN68nFb3mq6dWbdFtTCjuiRZlpjbkhDJ75C78SkTxkdUn5Fm3vawkJMiP+K9K1enRg5CRudmF/2a8kXzVqwY6PJFJxIJ/UzW4jEXALyyDwxfwhzZZVQEiAoF3HPYlBFce9l9cTVmbKnbkTKjje9P0Q/kiF+YAq4caq/IfA6J+Zwq3E0XmGVFvKQmnzLZNuMau/7GeCvCpCte5eZ34mBvqkVXAI52XVoBvONox0rYxXWTYpI/w6IROxaNYY5dibyn227R6tuyOsEJa4IzytLZzmHFAuHjAyjsKpMApuEc/CSKsS1Gk3olItoSydHEKTS3HYFWvzOD6wvajxk2IriHDZVYiBeMUnOimCfzN0xA52TWjS7hxQs3NuGfzs2/SAT5gzjFJKh9EFpeX4T8IumHOdmOKzi/2/doSIJQ4fr3xSkCf0M86SRiiRZkDHeG+XFGTXFWAiqdh8ATQBwvCB16Wr2PBk3qPxX9uvZS5xJkxdpIJ6MxnvaLTwAoeeM2eqyQ1oDc8BpBRMBNUXu24Knn0JFdMxOQKpQ8OUXD7+ue1QU7me10rZKMlUYK7AjMBPWhhbSKgCe+1WC4XS9vsZcaXTPgXLoGVvFtNbMU4TNgv+kkQ/iM4r9SDRkBQWJjbeBT5Mpp5zi8DkkHW8cHwbnndJj8IbRcPimRPtuw1FiDJPZOV7PWtSbzGK2KzIVqEiliTSlGIe95NSI/ogGo15JDOrmyfc6jAaUM2wi6C/JMeToao6B954VdB0Fa6m1TR444YDzhu3e2wBpcrmSQk4URKemQfhjIbjh1STK+xYkryk6FrRsaYgmTPcQwqXdxSW4bemhW36EWEp8IozG99Y+VEc28zoybmiM7P2VCaAe3S1pHZAIwbTVBOZioJbDi12gjJ8BjOlXX+PN8CSZ9AeaNyJFSniC1MW31+0fv dKSTaQpT fYnb3sg8bctuEUzkbcVVBmHWfION8RG0vkCCtHLhZAiAk/e7KoqXbLuonIQKxptx5OGj4PGV1VNOlQNLT5GmfeE1jB4XC+ntn0/kYd/u4EdTxbt6IEwxa9Gr2BUe/6XI4eQ1lGjHtmQVLwJVDJwUvLsHhROMHpoeAmFst8ckn/jbKfWzRyKNQY9erLKleu1moxrAYNvvFklHr3VPoCrhdtjK1C6NgrqkZ5tey7RGMLJAYVMB3mxqTSwRjh2vlSXIyVhvehq9iRZ//VMGEZb3NDVC8I2wvcGfW+Ymf3nNebib72ZiO+v9ZWAtVSjoQBjaruWrVrtQlMsyu4O/SwTnVnjXKJ7gs3unkI+NW2fbq9aJfzkkqlvNpf/9qAZm2Gg3Lipfh X-Bogosity: Ham, tests=bogofilter, spamicity=0.000320, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add wb_monitor.py script to monitor writeback information on backing dev which makes it easier and more convenient to observe writeback behaviors of running system. This script is based on copy of wq_monitor.py. Signed-off-by: Kemeng Shi Suggested-by: Tejun Heo --- tools/writeback/wb_monitor.py | 172 ++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 tools/writeback/wb_monitor.py diff --git a/tools/writeback/wb_monitor.py b/tools/writeback/wb_monitor.py new file mode 100644 index 000000000000..5e3591f1f9a9 --- /dev/null +++ b/tools/writeback/wb_monitor.py @@ -0,0 +1,172 @@ +#!/usr/bin/env drgn +# +# Copyright (C) 2024 Kemeng Shi +# Copyright (C) 2024 Huawei Inc + +desc = """ +This is a drgn script based on wq_monitor.py to monitor writeback info on +backing dev. For more info on drgn, visit https://github.com/osandov/drgn. + + writeback(kB) Amount of dirty pages are currently being written back to + disk. + + reclaimable(kB) Amount of pages are currently reclaimable. + + dirtied(kB) Amount of pages have been dirtied. + + wrttien(kB) Amount of dirty pages have been written back to disk. + + avg_wb(kBps) Smoothly estimated write bandwidth of writing dirty pages + back to disk. +""" + +import signal +import re +import time +import json + +import drgn +from drgn.helpers.linux.list import list_for_each_entry + +import argparse +parser = argparse.ArgumentParser(description=desc, + formatter_class=argparse.RawTextHelpFormatter) +parser.add_argument('bdi', metavar='REGEX', nargs='*', + help='Target backing device name patterns (all if empty)') +parser.add_argument('-i', '--interval', metavar='SECS', type=float, default=1, + help='Monitoring interval (0 to print once and exit)') +parser.add_argument('-j', '--json', action='store_true', + help='Output in json') +parser.add_argument('-c', '--cgroup', action='store_true', + help='show writeback of bdi in cgroup') +args = parser.parse_args() + +bdi_list = prog['bdi_list'] + +WB_RECLAIMABLE = prog['WB_RECLAIMABLE'] +WB_WRITEBACK = prog['WB_WRITEBACK'] +WB_DIRTIED = prog['WB_DIRTIED'] +WB_WRITTEN = prog['WB_WRITTEN'] +NR_WB_STAT_ITEMS = prog['NR_WB_STAT_ITEMS'] + +PAGE_SHIFT = prog['PAGE_SHIFT'] + +def K(x): + return x << (PAGE_SHIFT - 10) + +class Stats: + def dict(self, now): + return { 'timestamp' : now, + 'name' : self.name, + 'writeback' : self.stats[WB_WRITEBACK], + 'reclaimable' : self.stats[WB_RECLAIMABLE], + 'dirtied' : self.stats[WB_DIRTIED], + 'written' : self.stats[WB_WRITTEN], + 'avg_wb' : self.avg_bw, } + + def table_header_str(): + return f'{"":>16} {"writeback":>10} {"reclaimable":>12} ' \ + f'{"dirtied":>9} {"written":>9} {"avg_bw":>9}' + + def table_row_str(self): + out = f'{self.name[-16:]:16} ' \ + f'{self.stats[WB_WRITEBACK]:10} ' \ + f'{self.stats[WB_RECLAIMABLE]:12} ' \ + f'{self.stats[WB_DIRTIED]:9} ' \ + f'{self.stats[WB_WRITTEN]:9} ' \ + f'{self.avg_bw:9} ' + return out + + def show_header(): + if Stats.table_fmt: + print() + print(Stats.table_header_str()) + + def show_stats(self): + if Stats.table_fmt: + print(self.table_row_str()) + else: + print(self.dict(Stats.now)) + +class WbStats(Stats): + def __init__(self, wb): + bdi_name = wb.bdi.dev_name.string_().decode() + # avoid to use bdi.wb.memcg_css which is only defined when + # CONFIG_CGROUP_WRITEBACK is enabled + if wb == wb.bdi.wb.address_of_(): + ino = "1" + else: + ino = str(wb.memcg_css.cgroup.kn.id.value_()) + self.name = bdi_name + '_' + ino + + self.stats = [0] * NR_WB_STAT_ITEMS + for i in range(NR_WB_STAT_ITEMS): + if wb.stat[i].count >= 0: + self.stats[i] = int(K(wb.stat[i].count)) + else: + self.stats[i] = 0 + + self.avg_bw = int(K(wb.avg_write_bandwidth)) + +class BdiStats(Stats): + def __init__(self, bdi): + self.name = bdi.dev_name.string_().decode() + self.stats = [0] * NR_WB_STAT_ITEMS + self.avg_bw = 0 + + def collectStats(self, wb_stats): + for i in range(NR_WB_STAT_ITEMS): + self.stats[i] += wb_stats.stats[i] + + self.avg_bw += wb_stats.avg_bw + +exit_req = False + +def sigint_handler(signr, frame): + global exit_req + exit_req = True + +def main(): + # handle args + Stats.table_fmt = not args.json + interval = args.interval + cgroup = args.cgroup + + re_str = None + if args.bdi: + for r in args.bdi: + if re_str is None: + re_str = r + else: + re_str += '|' + r + + filter_re = re.compile(re_str) if re_str else None + + # monitoring loop + signal.signal(signal.SIGINT, sigint_handler) + + while not exit_req: + Stats.now = time.time() + + Stats.show_header() + for bdi in list_for_each_entry('struct backing_dev_info', bdi_list.address_of_(), 'bdi_list'): + bdi_stats = BdiStats(bdi) + if filter_re and not filter_re.search(bdi_stats.name): + continue + + for wb in list_for_each_entry('struct bdi_writeback', bdi.wb_list.address_of_(), 'bdi_node'): + wb_stats = WbStats(wb) + bdi_stats.collectStats(wb_stats) + if cgroup: + wb_stats.show_stats() + + bdi_stats.show_stats() + if cgroup and Stats.table_fmt: + print() + + if interval == 0: + break + time.sleep(interval) + +if __name__ == "__main__": + main() From patchwork Wed Mar 20 11:02:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597195 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F3E1C54E71 for ; Wed, 20 Mar 2024 02:06:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B7F0C6B008C; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B28426B0082; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 897106B008C; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 674B86B007B for ; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 22F44A06CA for ; Wed, 20 Mar 2024 02:06:13 +0000 (UTC) X-FDA: 81915777426.30.48694A5 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf27.hostedemail.com (Postfix) with ESMTP id C8CDF40006 for ; Wed, 20 Mar 2024 02:06:10 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=none; spf=pass (imf27.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QQiu7fsWBAZuTo9rcm0fd1EYXKcxjmg3HJPxBPJoMIE=; b=BT276GfDME1r656Y6ycFNq2a5S6YnZPiYXn5T+r1elgJ+59dU7vlv8dExh5IHlRok6LMwx rE1BnsHT+ANj4y65QKox5MuMM0KP2AJQ0503xwpDJBA7OrBUcRZH6VM8/6JRlMgvwofQV2 8hCmRN3wm72Pdh/rvCj/9nskYaduuLQ= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; spf=pass (imf27.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900371; a=rsa-sha256; cv=none; b=ht+rp6vl5vYXmRToVlCRbF1zSmVoctPTUd0dD55AWl3ppseT17TmzhwT4SkS4BfeG4JIOj woeyK2BiJaX+HYOGOicETxnXvzZWM1lH7AlpBjwMsREDgOhG9Q/1LDqE7dkc1wIOl8jy9C lQwvakgwh/2ESR9fLC6FFum4k3CBcXg= Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TzsPz1JGGz4f3n6K for ; Wed, 20 Mar 2024 10:05:59 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 1C1071A0172 for ; Wed, 20 Mar 2024 10:06:07 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S7; Wed, 20 Mar 2024 10:06:06 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 5/6] writeback: rename nr_reclaimable to nr_dirty in balance_dirty_pages Date: Wed, 20 Mar 2024 19:02:21 +0800 Message-Id: <20240320110222.6564-6-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S7 X-Coremail-Antispam: 1UD129KBjvJXoW7WFyxZr1fGF17CrW8WFWkXrb_yoW8AFykpF Z7Kw4jkr4xtaySvrn3CFWq9rZxtws7tF43JryUCa1SvanrWF1UKFyI9ry0vF1xAa4xJFWa vws8trykJw4vkrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPmb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3w A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7 CjxVA2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2Iq xVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r 1q6r43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY 6xkF7I0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aV AFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZE Xa7IU0TqcUUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Queue-Id: C8CDF40006 X-Rspam-User: X-Stat-Signature: p3b5ptdc6odbizig1adidgxmmnyppb4w X-Rspamd-Server: rspam01 X-HE-Tag: 1710900370-557576 X-HE-Meta: U2FsdGVkX18tEead/H9PK9yjGlVrd4SgMSUw3XHLnjo1Iq3N1HDtsMH2y3Mc0BMwpiPnZpJ4vxvqG7fpnKY9ULbyRIBc0xHwGPdsrdEQJEB060bgdCriue6AMHLmHrulFVzMseQVjvEQ3F6cGxXAVtTpU5cVTMvxbgNMcE87GO7cbSC7AAG0kevGJSLRUY7BKSyIEJeKqijXt1N0qMRrMFyO8y/nqPqkZZZFuNhKbEK85BrMLzgAKydqGTXXqQ4/F4QCcpk7rrAYJb2n1alHa/CRcWZtaTTZtmAnQlfo4hL56ADhmKfot52VMD6DHNNKxbIpWzPmLl4ZVw05e0QNvE9MhIX3JGdev3s3j31mQlS4Ce5rQ4LH47GztbNMdKdUYZfFucqt+/iMyR5Y+LjknHxILmpdsyJDDqIA7kxBE9B3oOqxOasSxnxHs0sF3OqRpEbgPy5aE4L/++7LOqvSBV8n1AAJWWhcTn20pvbZAjWS5kAL+eeZi3EPwC7Sc2CBuEFIt2MelaQqdHlCpXcuX5WSyDOwARtzZaKkUM9PNsgss5UhZLkigTRNvRW5endgWfLe2Hdrv0zVHu42ilUMhSkOpSjecXetlE6sEODbE+I6zYiiCYYonmqPJ1rM1MbGPVaN7sY8fZ3phmzqrkWwr566sFPrzJQYHOLEB2CHqSB6ZqqgGX6WY6P1Eenxc8pIu7Oua5MhHfNcRMhT9vlLZVzTygKkSA1E3ZqAONX6/EaUMDhNtNoqV27F/lWsRGkZEzT57bnN/EFpWO9UvBN/fOILOAHuXhpoMcB/yNCMLdbGLxoorzNflpqHFVY8r7m5I0u5Yr7Ih+r9nHKckY6rKq564iz4sR+B38gu8um8uHem/lJzXa3bK1oLhKs0/dUeU0N4Szv7QpFwdDLMX617ZP2EAMWUesSh2aAfWYawp2VPb4mgQ5i7ZW8S3p6lv1o0rLq0MzgilJQMzabrOZz /lI+uW8W /Z8QtbizaSCVG5bVTu8sbolHirw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Commit 8d92890bd6b85 ("mm/writeback: discard NR_UNSTABLE_NFS, use NR_WRITEBACK instead") removed NR_UNSTABLE_NFS and nr_reclaimable only contains dirty page now. Rename nr_reclaimable to nr_dirty properly. Signed-off-by: Kemeng Shi Reviewed-by: Jan Kara --- mm/page-writeback.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index ba1b6b5ae5d6..481b6bf34c21 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1695,7 +1695,7 @@ static int balance_dirty_pages(struct bdi_writeback *wb, struct dirty_throttle_control * const mdtc = mdtc_valid(&mdtc_stor) ? &mdtc_stor : NULL; struct dirty_throttle_control *sdtc; - unsigned long nr_reclaimable; /* = file_dirty */ + unsigned long nr_dirty; long period; long pause; long max_pause; @@ -1716,9 +1716,9 @@ static int balance_dirty_pages(struct bdi_writeback *wb, unsigned long m_thresh = 0; unsigned long m_bg_thresh = 0; - nr_reclaimable = global_node_page_state(NR_FILE_DIRTY); + nr_dirty = global_node_page_state(NR_FILE_DIRTY); gdtc->avail = global_dirtyable_memory(); - gdtc->dirty = nr_reclaimable + global_node_page_state(NR_WRITEBACK); + gdtc->dirty = nr_dirty + global_node_page_state(NR_WRITEBACK); domain_dirty_limits(gdtc); @@ -1769,7 +1769,7 @@ static int balance_dirty_pages(struct bdi_writeback *wb, * In normal mode, we start background writeout at the lower * background_thresh, to keep the amount of dirty memory low. */ - if (!laptop_mode && nr_reclaimable > gdtc->bg_thresh && + if (!laptop_mode && nr_dirty > gdtc->bg_thresh && !writeback_in_progress(wb)) wb_start_background_writeback(wb); From patchwork Wed Mar 20 11:02:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 13597199 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD795CD11BF for ; Wed, 20 Mar 2024 02:06:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83B336B0085; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5337A6B0093; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0CF516B0089; Tue, 19 Mar 2024 22:06:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id DFC1E6B0092 for ; Tue, 19 Mar 2024 22:06:13 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B29FB40CA2 for ; Wed, 20 Mar 2024 02:06:13 +0000 (UTC) X-FDA: 81915777426.25.651B6C3 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf06.hostedemail.com (Postfix) with ESMTP id 3AEF6180007 for ; Wed, 20 Mar 2024 02:06:10 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710900372; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=L6F1kb9dEM3TGKXFoDgePIuxOyYzETiaBERGPX18KeM=; b=7sERTMrwOFLnVGEiVOCoLZSnUWkd2f0rqcY7SO1N1AssV7J94riz7uwiCDUCbrMY4kxyYr tvCRU3agZQzlH6KokZ3wnBuU5F5ja5yymJkHXaWKKSB0G0iWPTuF3C5JAJwxFqGZk1KSOs eA8Ane4wXV7ISw1c+HRCl1CSbd0CohA= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710900372; a=rsa-sha256; cv=none; b=dxtUbfKCFWHcxFFX4BGmn4cDenpGtlC2pg/9GSYOXncyXYQAQTQ7bgPHSFDgj81u0MXkYC zxa7PrnAvS7oYFcUM9KECzt+vaS2wmtyW5AQvsyZZ6JGsuoWU+E+TUorHYryc68q5nBduy naEzKWqPHTTWOMhziivq9IBziNIDMqc= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4TzsPz4lr5z4f3n6M for ; Wed, 20 Mar 2024 10:05:59 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.252]) by mail.maildlp.com (Postfix) with ESMTP id 9424E1A0E4C for ; Wed, 20 Mar 2024 10:06:07 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP3 (Coremail) with SMTP id _Ch0CgAHFZ2KRPplVj2CHQ--.18626S8; Wed, 20 Mar 2024 10:06:07 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, tj@kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, bfoster@redhat.com, jack@suse.cz, dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, peterz@infradead.org Subject: [PATCH 6/6] writeback: remove unneeded GDTC_INIT_NO_WB Date: Wed, 20 Mar 2024 19:02:22 +0800 Message-Id: <20240320110222.6564-7-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20240320110222.6564-1-shikemeng@huaweicloud.com> References: <20240320110222.6564-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: _Ch0CgAHFZ2KRPplVj2CHQ--.18626S8 X-Coremail-Antispam: 1UD129KBjvJXoW7WF1xJrWxtF1rZw4xXFWxCrg_yoW8Aw1UpF W3Cw1UKF4UArsFgFnxCasrXrnIqrZ7tFW7K3sxCw4ayF1xG3W8WFyjkw10yr4UAr93try7 ArWxtFyxZF40yrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPmb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3w A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFIxGxcIEc7 CjxVA2Y2ka0xkIwI1l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2Iq xVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r 1q6r43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY 6xkF7I0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aV AFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZE Xa7IU0TqcUUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Queue-Id: 3AEF6180007 X-Rspam-User: X-Stat-Signature: qznwxzwxngdgsy4trn13skjku3qzersi X-Rspamd-Server: rspam01 X-HE-Tag: 1710900370-229557 X-HE-Meta: U2FsdGVkX19niSrv4Wcluq+I/VZ8boKBIwJyCBylGjxIl1EVp/bKq8uoUBSOGHud6yG3HLOifZsRpZt/exPsVJObkvIa8oFOV9b67gbx1BeJZisoeVy4xBycfIro69cXvIEw/7gx41Hvae8q4grIKEOJrL3OHBvO9ROnD6m9N9R4heUUw6ZX3e7t0qLyJG7/VvQYJ4o76dybsvhlkHJB9RUX9vom12YyBGr29u4zSr1531MUt0iv5SXwTRh5E5UgCmw9W7DmGdz/sK5cC0YGYX/ag3pZCKQ4zdjDtA58McElbCgnbnnLOywQJRoQaHYFLFIialZ2oEYsPkXI0MLi51ZZppzLsWE/RECqdoj3r/1Cm27HW7uRZzgmpUlAw5t++9ozF+eDzq+RhUOKS5O0/eICCHrtmJQArQJNlDJtXGsYcRnESNv17Mt09qYFTFni9cJI63DkhTemxWYDeKNrj1G1n2F+j9Da7TgxcZ3+tebHgEOAbmHTZ8ADWTStMQxAl2u3G7FYHJ67cdY5iEIWRbsg5yRuM+5J7WDXvErw7pPv/aBQim2vucdKyqaJK54nAxq5ly3rWuBpWHvvFfjO1Bw67lXb/ww8re7Foh5/i1yMremqL5mfjwUN5VjKW+PG178zKQyYTqJx50Y7Nt5kuNAHbHh3GUaA3tepjXYoXy/xaBEbwpDVgkXf1Yg9BLYS1+8GlztIcZ0S7i9//5bWRWAT9o9yGY0b/cRWS/sDqzPoJZ/YeYFbjEpYxJt4VNuTFfbi5ebaV6PLYam41Bec/73cPTFaP1Cbwjg3vI1z2Ik0WSppyke2yrJzNJ9xoLT0dyOduufnYq6jze8J/2iK81gU5Jz22R40wmO7/Cn1zr5zPFCxib1VnqiMN2soOBN2Ke5Ep86esRTyCpK9UOcrKsoydqdLVXHfeBS4UKWFLleSx9D7ZYKkiaSI2w0VsiPdyiS6D8Zn2tm6xWyNfQi kB1BznL5 aWnWbVMhX6RtKXRJDg60w/PQCsy88o/MyeW+DOy+/B9VZnDwjnjVlpr/dRtwVuFjsoM6X1sY3z/5Q+zob3sIO0HJ+zHyeyjtnIdpywBkLcbDuMrXVCiDOGjKXbXwnqA8Db1ZhbJ3sM9+mSCnkQW0w0J9JnNw67wA73yUxsK/13SWCIshagqXCGCHCcDstAU5yHks3kBL3LbYP7fP+DD7P5lzQ9leRnHTQcBSSnNwsxGoPScxCeey6vFarPI7F2Zpold4+ARAvDUZRRgA15VH9FvwH5//vW2lp23Mp5DZu5rdSHmx6eeaLcXkggg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We never use gdtc->dom set with GDTC_INIT_NO_WB, just remove unneeded GDTC_INIT_NO_WB Signed-off-by: Kemeng Shi --- mm/page-writeback.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 481b6bf34c21..09b2b0754cc5 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -154,8 +154,6 @@ struct dirty_throttle_control { .dom = &global_wb_domain, \ .wb_completions = &(__wb)->completions -#define GDTC_INIT_NO_WB .dom = &global_wb_domain - #define MDTC_INIT(__wb, __gdtc) .wb = (__wb), \ .dom = mem_cgroup_wb_domain(__wb), \ .wb_completions = &(__wb)->memcg_completions, \ @@ -210,7 +208,6 @@ static void wb_min_max_ratio(struct bdi_writeback *wb, #define GDTC_INIT(__wb) .wb = (__wb), \ .wb_completions = &(__wb)->completions -#define GDTC_INIT_NO_WB #define MDTC_INIT(__wb, __gdtc) static bool mdtc_valid(struct dirty_throttle_control *dtc) @@ -438,7 +435,7 @@ static void domain_dirty_limits(struct dirty_throttle_control *dtc) */ void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty) { - struct dirty_throttle_control gdtc = { GDTC_INIT_NO_WB }; + struct dirty_throttle_control gdtc = { }; gdtc.avail = global_dirtyable_memory(); domain_dirty_limits(&gdtc); @@ -895,7 +892,7 @@ unsigned long wb_calc_thresh(struct bdi_writeback *wb, unsigned long thresh) unsigned long wb_calc_cg_thresh(struct bdi_writeback *wb) { - struct dirty_throttle_control gdtc = { GDTC_INIT_NO_WB }; + struct dirty_throttle_control gdtc = { }; struct dirty_throttle_control mdtc = { MDTC_INIT(wb, &gdtc) }; unsigned long filepages, headroom, writeback;