From mboxrd@z Thu Jan 1 00:00:00 1970 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 77FD0C07E8F for ; Mon, 22 Apr 2024 07:52:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B2F5F6B009C; Mon, 22 Apr 2024 03:52:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AB8016B009D; Mon, 22 Apr 2024 03:52:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90F046B00A0; Mon, 22 Apr 2024 03:52:52 -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 5A02B6B009F for ; Mon, 22 Apr 2024 03:52:52 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7BC47160B33 for ; Mon, 22 Apr 2024 07:52:51 +0000 (UTC) X-FDA: 82036401342.04.C93512F Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf07.hostedemail.com (Postfix) with ESMTP id 0694A40003 for ; Mon, 22 Apr 2024 07:52:48 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; dmarc=none; spf=none (imf07.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713772369; 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:references; bh=8kTDoLB6GBPBY8kFLCHuv21xgJCR3pmCfxuflam4Olw=; b=f3CwBI8mijYybVEPtgF7bQM2iSgNjYCKaUmLLKuXF0H16n6soPyb9/CxP2jho2k9f1yqrS agB9LoP5zcG72v23LFKLUIS9DW69FuOb7/8tLjSuBa/EK4Cz19gvEUNKvMdYb+CDkGBnSr kuN/LQSMzJSVHHd2rrvacFfQ6ghsup8= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=none; spf=none (imf07.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713772369; a=rsa-sha256; cv=none; b=phUoUH04AZaFH42sFBxGvZAQ49QaFnj6mHTV7W8DNGpv0D+yFXKK31z2CHuA8/ZzFZw4gC XhtfQHYip7KrelpIaPZaM524DEscVs7JS+dZ24fBxToZyeP9KGrr+YreTF66KIxo5rNH2T +Hht8ckf79I5ZCR0/djk5cC2DO2bOmg= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4VNHXd6DmZz4f3m6Z for ; Mon, 22 Apr 2024 15:52:33 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 00F101A0568 for ; Mon, 22 Apr 2024 15:52:42 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCHqg1JFyZmCViLKw--.3978S2; Mon, 22 Apr 2024 15:52:42 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, willy@infradead.org, jack@suse.cz, bfoster@redhat.com, tj@kernel.org Cc: dsterba@suse.com, mjguzik@gmail.com, dhowells@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 0/4] Improve visibility of writeback Date: Tue, 23 Apr 2024 00:48:04 +0800 Message-Id: <20240422164808.13627-1-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:Syh0CgCHqg1JFyZmCViLKw--.3978S2 X-Coremail-Antispam: 1UD129KBjvJXoWxWFy5ur1UAF43ZrWUAw47urg_yoW5KryDpF Z5Jw15Kr1UZw1xCFn3Ca42gry5K3y8Ja47Xr9xZrW2qwn0qryDtr95Wa48Ary5C3s3AFy3 JFsxZry8Gr4v9aUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUU9Gb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Ar0_ tr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26r xl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv 0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z2 80aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4IIrI8v 6xkF7I0E8cxan2IY04v7MxkF7I0En4kS14v26r1q6r43MxAIw28IcxkI7VAKI48JMxC20s 026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_ JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14 v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwCI42IY6xAIw20EY4v20xva j40_Wr1j6rW3Jr1lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxV W8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU0VBT5UUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0694A40003 X-Rspam-User: X-Stat-Signature: 8rocnurqm7zrbu4qdu6adeif6h75bw5s X-HE-Tag: 1713772368-925242 X-HE-Meta: U2FsdGVkX1/ykyTvV7BgFrPfVdyPfuTI9/X/kFzqykRwoFc/cF/bmBB7ahV9vr8rd/45yHpl3fJwz14LP/N+FXXeGTqR+7ZsjcYOqqoVS3nVccWg2aES0NbTJfX5kS5g6jVtz6xh5AKjQFnkts2hme3xgBKzchwSBqktppgjX2o+tkFpt/I9i4Fb8qT2aOxIMhdSsikXX1RDLBYPnyMwzB/UzUDqlrkX/4JjHR8R2feBI6Qcd/gy6rtrZzIVjPCgXbL1RIGPHmZGomZk6rX86PuuQhBSPiil+uiNu/g89ZUZy6Kku6kBoS1o9C0zOjmxuGId7uIUKjN6gr/ERNZZar8sT8zcM6nt6feRZBYh+Gx8RjJEQCHjz7AtQ3z8ePnnPI1VRr1JG4KX0b1FmoCHeFMoPY6V+4TtZAf/GjoZRA86meBgY8nrkd8GOFbnFwqEdW3eEc84XNgaFDpZXdpW+GfGFXurrQEJMI2pgX+jLcgDoMOOLOzK2ficNjipXJ4uqByvtWRwxuPBjVLZ/J7edUtCzvD7WkoUZ4KbQkouEgnk8xu9kGq32ZAJ0veHqDfvnl+KLxYdVJIjS5uK5ewhn3/+JTwqnQzVZUIYmHG7MOLyxkEH/QG0BoK66maH17Rqs06/foPognxIKnNXq0YcT1T17U1lOYtVlJEvaUnIUlWFQH06DTv+p7AFwiA2+/NarzmVnZR2mgZHuLvr5CXEG3Pe9pUexEbHrtYK6v53owOLYBfVAy2c9TqD2JLbE+lKXIrhZx3k1MFXepicNTOTyntUOjUb0WnHS2UOXr505rH6UHYyBOeqD1vkzZCS2KERgvTRs7YRKbyVeMmekeGKbFlqmHabMHnb4FGld4J5Hd4/atGgapW9L7Wdva9HAgF6SWAnqeTllO2QgpghsXgDKY1j6HSfBDC5sbzGe90mplzWvqv8ymH8nln+BZSVnjOK61C2Pp/NaQE5ogf7H/0 hQtTmWG/ Jg4om8ERI5MDWLtxFtNnu/wNMiiM0t3fdK3KqAokebgwLvMX5Km32/K/0dQTl5iRjJJ1Xk0oRIAqI0n/XPg7JrQbYg3YQmr1LJviSoT5HK3JWTWuTK34K6vbFeGRHldr2jNT6DczbUtebQRU1TraVNYQlL4rjWSwI+XwnFZ3E7ydKrW/RhhroyWQowlU15anWa44hKVsN1b10cT3fs1AWF+IXyw== 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: v3->v4: -Fix build warning that filepages, headroom and writeback in cgwb_calc_thresh is used uninitialized when CONFIG_CGROUP_WRITEBACK is not enabled. v2->v3: -Drop patches to protect non-exist race and to define GDTC_INIT_NO_WB to null. -Add wb_tryget to wb from which we collect stats to bdi stats. -Create wb_stats when CONFIG_CGROUP_WRITEBACK is not enabled. -Add a blank line between two wb stats in wb_stats. v1->v2: -Send cleanup to wq_monitor.py separately. -Add patch to avoid use after free of bdi. -Rename wb_calc_cg_thresh to cgwb_calc_thresh as Tejun suggested. -Use rcu walk to avoid use after free. -Add debug output to each related patches. This series tries to improve visilibity of writeback. Patch 1 make /sys/kernel/debug/bdi/xxx/stats show writeback info of whole bdi instead of only writeback info in root cgroup. Patch 2 add a new debug file /sys/kernel/debug/bdi/xxx/wb_stats to show per wb writeback info. Patch 3 add wb_monitor.py to monitor basic writeback info of running system, more info could be added on demand. Patch 4 is a random cleanup. More details can be found in respective patches. Thanks! Following domain hierarchy is tested: global domain (320G) / \ cgroup domain1(10G) cgroup domain2(10G) | | bdi wb1 wb2 /* all writeback info of bdi is successfully collected */ cat stats BdiWriteback: 4704 kB BdiReclaimable: 1294496 kB BdiDirtyThresh: 204208088 kB DirtyThresh: 195259944 kB BackgroundThresh: 32503588 kB BdiDirtied: 48519296 kB BdiWritten: 47225696 kB BdiWriteBandwidth: 1173892 kBps b_dirty: 1 b_io: 0 b_more_io: 1 b_dirty_time: 0 bdi_list: 1 state: 1 /* per wb writeback info of bdi is collected */ cat /sys/kernel/debug/bdi/252:16/wb_stats WbCgIno: 1 WbWriteback: 0 kB WbReclaimable: 0 kB WbDirtyThresh: 0 kB WbDirtied: 0 kB WbWritten: 0 kB WbWriteBandwidth: 102400 kBps b_dirty: 0 b_io: 0 b_more_io: 0 b_dirty_time: 0 state: 1 WbCgIno: 4208 WbWriteback: 59808 kB WbReclaimable: 676480 kB WbDirtyThresh: 6004624 kB WbDirtied: 23348192 kB WbWritten: 22614592 kB WbWriteBandwidth: 593204 kBps b_dirty: 1 b_io: 1 b_more_io: 0 b_dirty_time: 0 state: 7 WbCgIno: 4249 WbWriteback: 144256 kB WbReclaimable: 432096 kB WbDirtyThresh: 6004344 kB WbDirtied: 25727744 kB WbWritten: 25154752 kB WbWriteBandwidth: 577904 kBps b_dirty: 0 b_io: 1 b_more_io: 0 b_dirty_time: 0 state: 7 The wb_monitor.py script output is as following: ./wb_monitor.py 252:16 -c writeback reclaimable dirtied written avg_bw 252:16_1 0 0 0 0 102400 252:16_4284 672 820064 9230368 8410304 685612 252:16_4325 896 819840 10491264 9671648 652348 252:16 1568 1639904 19721632 18081952 1440360 writeback reclaimable dirtied written avg_bw 252:16_1 0 0 0 0 102400 252:16_4284 672 820064 9230368 8410304 685612 252:16_4325 896 819840 10491264 9671648 652348 252:16 1568 1639904 19721632 18081952 1440360 ... Kemeng Shi (4): writeback: collect stats of all wb of bdi in bdi_debug_stats_show writeback: support retrieving per group debug writeback stats of bdi writeback: add wb_monitor.py script to monitor writeback info on bdi writeback: rename nr_reclaimable to nr_dirty in balance_dirty_pages include/linux/writeback.h | 1 + mm/backing-dev.c | 174 +++++++++++++++++++++++++++++----- mm/page-writeback.c | 27 +++++- tools/writeback/wb_monitor.py | 172 +++++++++++++++++++++++++++++++++ 4 files changed, 345 insertions(+), 29 deletions(-) create mode 100644 tools/writeback/wb_monitor.py -- 2.30.0