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 1D4E0D1AD55 for ; Wed, 16 Oct 2024 13:23:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A8FB66B0083; Wed, 16 Oct 2024 09:22:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A17D86B0088; Wed, 16 Oct 2024 09:22:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 891C96B0089; Wed, 16 Oct 2024 09:22:59 -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 67AE76B0083 for ; Wed, 16 Oct 2024 09:22:59 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id F16361C3B23 for ; Wed, 16 Oct 2024 13:22:47 +0000 (UTC) X-FDA: 82679530626.24.F2BDBA8 Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by imf26.hostedemail.com (Postfix) with ESMTP id BEE51140008 for ; Wed, 16 Oct 2024 13:22:48 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=vcICzBHf; spf=pass (imf26.hostedemail.com: domain of jaewon31.kim@samsung.com designates 203.254.224.24 as permitted sender) smtp.mailfrom=jaewon31.kim@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729084832; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YkRD76Frs8fjb7Bbyl32+QR9LfB0H1oKkG3IIeFl1fs=; b=Kyocxod2h0R4Dc2Q6lxEkW0Btr50yd92gNFCUen4DN12VLMLNBwkIb9bQ7lA1LWEp9+m6o 7tyyKir55usf12CQ/g93FCNxffoS7xp5Kv8QMW8ne42K3Wit7Xv1iUKofPcNJvyz6Q2yfg Yjtua5Xz/JAJFKq0B4aTMW7jAMTgTzM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729084832; a=rsa-sha256; cv=none; b=bvN/5dfuppcSUcFrQmthfwPsl1G+mcvWECTl8IXPZChsuxGnJYfi42NknbMlAG23cr/2KN GtOSg4G570MfOo9ckzchgVsK8SlSf0UuBIgQRV2tALRJIsWYpeOOK7stFratOrgZ06Ugg8 hpbjO22CSBNUTc82+HhDKw5+C8WayYA= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=vcICzBHf; spf=pass (imf26.hostedemail.com: domain of jaewon31.kim@samsung.com designates 203.254.224.24 as permitted sender) smtp.mailfrom=jaewon31.kim@samsung.com; dmarc=pass (policy=none) header.from=samsung.com Received: from epcas1p2.samsung.com (unknown [182.195.41.46]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20241016132251epoutp01822efdc4bd01a04b32c2e7091113c2dc~_8Z7VO_BO2230622306epoutp01m for ; Wed, 16 Oct 2024 13:22:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20241016132251epoutp01822efdc4bd01a04b32c2e7091113c2dc~_8Z7VO_BO2230622306epoutp01m DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1729084971; bh=YkRD76Frs8fjb7Bbyl32+QR9LfB0H1oKkG3IIeFl1fs=; h=To:Subject:Reply-To:From:In-Reply-To:Date:References:From; b=vcICzBHfLiwAeermuIZqiMBA3EFMnBE88F+9S5nDtWykv2u+BLQrNeK5OX8GsfDY5 y9qWZRqTpyaFTPGqmeQOUKc+tc6wKcUIEOi5RBJDK3dRLHPeb32z9hmDM6feI2xVm+ /tOngiEIgoqxUHjEZstodY/B0u2HVEB2TL6gp3+A= Received: from epsnrtp2.localdomain (unknown [182.195.42.163]) by epcas1p4.samsung.com (KnoxPortal) with ESMTP id 20241016132250epcas1p4d9488cb5fd81e5270b509fbf35f5024e~_8Z6NeDIt2224622246epcas1p4E; Wed, 16 Oct 2024 13:22:50 +0000 (GMT) Received: from epsmges1p5.samsung.com (unknown [182.195.38.242]) by epsnrtp2.localdomain (Postfix) with ESMTP id 4XTBV168yVz4x9Pt; Wed, 16 Oct 2024 13:22:49 +0000 (GMT) X-AuditID: b6c32a39-39fff700000024b6-56-670fbe2906b8 Received: from epcas1p1.samsung.com ( [182.195.41.45]) by epsmges1p5.samsung.com (Symantec Messaging Gateway) with SMTP id 7C.F3.09398.92EBF076; Wed, 16 Oct 2024 22:22:49 +0900 (KST) To: undisclosed-recipients:; Mime-Version: 1.0 Subject: RE: [PATCH v2] vmscan: add a vmscan event for reclaim_pages Reply-To: jaewon31.kim@samsung.com From: Jaewon Kim X-Priority: 3 X-Content-Kind-Code: NORMAL In-Reply-To: <8d96e6ec-5299-4b56-9795-18d690b6e77e@suse.cz> X-Drm-Type: N,general X-Msg-Generator: Mail X-Msg-Type: PERSONAL X-Reply-Demand: N Message-ID: <20241016132248epcms1p30f047a4f50717f493f3a99e6d4313ff9@epcms1p3> Date: Wed, 16 Oct 2024 22:22:48 +0900 X-CMS-MailID: 20241016132248epcms1p30f047a4f50717f493f3a99e6d4313ff9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" CMS-TYPE: 101P X-CPGSPASS: Y X-CPGSPASS: Y X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIJsWRmVeSWpSXmKPExsWy7bCmrq7mPv50g8YzehZz1q9hs3h5SNOi e/NMRove96+YLJr2zWS3uLxrDpvFvTX/WS2WfX3PbnH46xsmi9mNfYwOXB47Z91l91iwqdRj 06pONo9Nnyaxe5yY8ZvFo2/LKkaPMwuOsHt83iQXwBGVbZORmpiSWqSQmpecn5KZl26r5B0c 7xxvamZgqGtoaWGupJCXmJtqq+TiE6DrlpkDdKKSQlliTilQKCCxuFhJ386mKL+0JFUhI7+4 xFYptSAlp8CsQK84Mbe4NC9dLy+1xMrQwMDIFKgwITtjxXe3gjb9iiMX9zM3ML5V62Lk5JAQ MJG4Me8raxcjF4eQwA5Gie+9+xlBEiICMhJzZz8GSnBw8AoISvzdIQwSFhZwkZhx4CYbiC0k oCRx9scVdoi4rkRT92oWEJtNQFvi/YJJrBDzeSVmtD9lgbClJbYv3wo2nlPAWmLb8T/MEHFR iZur37LD2O+PzWeEsEUkWu+dhaoRlHjwczcjzJw/x5+zQdjFEss6HzBB2DUSK86tgoqbSzS8 XQlm8wr4SnybfgTsBhYBVYnLB9rZQd6SAPrl5HZTkDCzgLzE9rdzmEHCzAKaEut36UOE+STe fe2B+6Rh4292bOwd855AXaAm0fLsK1S9jMTff8+gbA+Je2ens8BD+WhXP/sERoVZiMCdheSK WQhXLGBkXsUollpQnJueWmxYYAqP2uT83E2M4LSqZbmDcfrbD3qHGJk4GA8xSnAwK4nwTuri TRfiTUmsrEotyo8vKs1JLT7EaAr0/kRmKdHkfGBizyuJNzSxNDAxMzKxMLY0NlMS5z1zpSxV SCA9sSQ1OzW1ILUIpo+Jg1OqgYnb5bhuyzFvLosD0wtnZ51nmPCtM5kjrnTn6Zyj5rM9uSWq Z2fcTDWfU9AQVjX34Y118T3/g3ac1BMLizdU77sYECP2Jvr9ecmLGkunP+Z5kbdM3/lsrprG 3IdCCg92/izT3t1hf/P9vYAdCZbewXs+2JSUfem7dG1hmujjq/tPXz606qEse8XXxizDo7ky zNcfm5k6bXjKEn/Xavq8mtCiHMOop9tEj15y5V1m8tHYbtLptGRnT+ZKh7aKuKmxWqJ+D7Kv O1Ra52Q2iswTNNn+b1X2LcFzTjNrVT2/dYgbON3ymyjW6Hjo4N6SzLvGJksVJ0uFFz0qf1m4 +KSZqntBxdlb018d+WOxXGqbvRJLcUaioRZzUXEiAJPjngo0BAAA DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20241011124931epcas1p176b2ce6a566f7557468dff1e12677a11 References: <8d96e6ec-5299-4b56-9795-18d690b6e77e@suse.cz> <20241011124928.1224813-1-jaewon31.kim@samsung.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: BEE51140008 X-Stat-Signature: st4f3dmziqnw9gnnnukbsc6s7w9qa1go X-HE-Tag: 1729084968-820079 X-HE-Meta: U2FsdGVkX19oq36JSeNhYfs5bZ0eCzyBJ/uh58XbHz0WA+6+kJvtPvRvGd72eKivAVgMIaFEMsQkvlAlAN9CwSYBIKtzwHwHgYYsUc0s7gAFZdVpuokIbgRVd08KVWYPpKEB9Ti7fglairUA6IoUTC+dFZdkJEV2FEr1NPQ0tN67yzrHAscCl/JCYYyuobRSahu/m/5FloT5otmjbsiSlwtflku8hgHLNVrcAlBxNCtFvGGYtNMF50Fq4Yl7MJTEtFp0DsvkG+GybvXCiXSaiJi+PMHKGXwFeCS2y2DgJKnnDewbP0XzDbiARB6EzXOIj0vwCv9+/Ktq/KHQ4Ah0vWOyAGB6TuSGBvfD3/XfIdeAIMdYzM6O5E6JW4BIDJ6H+coKIBGTuSd7nDLzzKM4q4iD2TiD9+J+0xZJHnGOYFg7cWjwAW9oQUI1CoX1/ddnYYoUoJ4keRoKYPeyA053b/PoPbEtyfuYdyyI4W5wq4rtnYockNpylksO2vhgSsf9ROF+tUZ9HghAEHiF2Rr8eAXdX2HxL1fNPMfkxmvvN2Wy1MjyxrC8b8O8ndIQ/MOHokRFo0uPMf/JwIiJhIsWlAiEKYD/sEUUdLBJRegvwfpirfBP4rfDmkio/ouCoPY/ZMGur7wu14rNW9mB3b3aIVv+RFZ1/RYoflASzAjHrbWHBnjylZwvC/4ix58p/6RSV0NegKt9R0Cw4Mcx3KbHqXqhUkJKTsjvXytg3+3UiGAvwNzzQIOkrKbjVL+DFXMmhgNa8lFQuQdIfsHEIjfRY2DrAAh3/rImn/m7XYSBldhTFzSv9Qf1VYbIN9mDshxmmEYg6jBYqzTJbDmCQ+tAluOqmJcpzY2UJSBxNMevLvaN93s2eJzMd8xvk6mL5qA5YXWYaOVwHHHg00PL0RrF26C+Bpe5CQhfqyhGACQXgWfaDbg7QNpGkgjPb5xVKhrGVmdz3yTWd+sth0xzOyB 4PQvk3rE XRaRnaCLE1smpbaEEvyzPh5rGWsGDzeE/rSF0f4h00pns3BFNXatXSwxzQMTiaIXGvJ8TsYlg5KwlSB8lIEB8YniY7KdDPV0O7i3OuQq12iak+ugjsU8o8pl23ggPqfe4W+GbniwAgQ4aV9jCBRD8yYSsVfUFeKzk4OhgxHQv4izbwIbRflFb6jIHn89A2YKwznyMb68y08sZ0eQNdnMLxkjln4i0brqMlCANdFyPVRsw/1zBpsWYQTAChZPV3I+abTN9dD/8Hdel/JcNtBeVrepw5nXgIsNooLYV 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: >On 10/11/24 14:49, Jaewon Kim wrote: >> The reclaim_folio_list uses a dummy reclaim_stat and is not being >> used. To know the memory stat, add a new trace event. This is useful how >> how many pages are not reclaimed or why. >> >> This is an example. >> mm_vmscan_reclaim_pages: nid=0 nr_scanned=112 nr_reclaimed=112 nr_dirty=0 nr_writeback=0 nr_congested=0 nr_immediate=0 nr_activate_anon=0 nr_activate_file=0 nr_ref_keep=0 nr_unmap_fail=0 >> >> Currenlty reclaim_folio_list is only called by reclaim_pages, and >> reclaim_pages is used by damon and madvise. In the latest Android, >> reclaim_pages is also used by shmem to reclaim all pages in a >> address_space. >> >> Signed-off-by: Jaewon Kim >> --- >> v2: remove reclaim_stat_add function and call the trace on each node >> v1: introduce a new trace event >> --- >> include/trace/events/vmscan.h | 45 +++++++++++++++++++++++++++++++++++ >> mm/vmscan.c | 16 +++++++++---- >> 2 files changed, 56 insertions(+), 5 deletions(-) >> >> diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h >> index 1a488c30afa5..490958fa10de 100644 >> --- a/include/trace/events/vmscan.h >> +++ b/include/trace/events/vmscan.h >> @@ -346,6 +346,51 @@ TRACE_EVENT(mm_vmscan_write_folio, >> show_reclaim_flags(__entry->reclaim_flags)) >> ); >> >> +TRACE_EVENT(mm_vmscan_reclaim_pages, >> + >> + TP_PROTO(int nid, >> + unsigned long nr_scanned, unsigned long nr_reclaimed, >> + struct reclaim_stat *stat), >> + >> + TP_ARGS(nid, nr_scanned, nr_reclaimed, stat), >> + >> + TP_STRUCT__entry( >> + __field(int, nid) >> + __field(unsigned long, nr_scanned) >> + __field(unsigned long, nr_reclaimed) >> + __field(unsigned long, nr_dirty) >> + __field(unsigned long, nr_writeback) >> + __field(unsigned long, nr_congested) >> + __field(unsigned long, nr_immediate) >> + __field(unsigned int, nr_activate0) >> + __field(unsigned int, nr_activate1) >> + __field(unsigned long, nr_ref_keep) >> + __field(unsigned long, nr_unmap_fail) >> + ), >> + >> + TP_fast_assign( >> + __entry->nid = nid; >> + __entry->nr_scanned = nr_scanned; >> + __entry->nr_reclaimed = nr_reclaimed; >> + __entry->nr_dirty = stat->nr_dirty; >> + __entry->nr_writeback = stat->nr_writeback; >> + __entry->nr_congested = stat->nr_congested; >> + __entry->nr_immediate = stat->nr_immediate; >> + __entry->nr_activate0 = stat->nr_activate[0]; >> + __entry->nr_activate1 = stat->nr_activate[1]; >> + __entry->nr_ref_keep = stat->nr_ref_keep; >> + __entry->nr_unmap_fail = stat->nr_unmap_fail; >> + ), >> + >> + TP_printk("nid=%d nr_scanned=%ld nr_reclaimed=%ld nr_dirty=%ld nr_writeback=%ld nr_congested=%ld nr_immediate=%ld nr_activate_anon=%d nr_activate_file=%d nr_ref_keep=%ld nr_unmap_fail=%ld", >> + __entry->nid, >> + __entry->nr_scanned, __entry->nr_reclaimed, >> + __entry->nr_dirty, __entry->nr_writeback, >> + __entry->nr_congested, __entry->nr_immediate, >> + __entry->nr_activate0, __entry->nr_activate1, >> + __entry->nr_ref_keep, __entry->nr_unmap_fail) >> +); >> + >> TRACE_EVENT(mm_vmscan_lru_shrink_inactive, >> >> TP_PROTO(int nid, >> diff --git a/mm/vmscan.c b/mm/vmscan.c >> index 749cdc110c74..0c2c36bf4c5a 100644 >> --- a/mm/vmscan.c >> +++ b/mm/vmscan.c >> @@ -2126,9 +2126,10 @@ static void shrink_active_list(unsigned long nr_to_scan, >> } >> >> static unsigned int reclaim_folio_list(struct list_head *folio_list, >> + unsigned int nr_scanned, >> struct pglist_data *pgdat) >> { >> - struct reclaim_stat dummy_stat; >> + struct reclaim_stat stat; >> unsigned int nr_reclaimed; >> struct folio *folio; >> struct scan_control sc = { >> @@ -2139,12 +2140,13 @@ static unsigned int reclaim_folio_list(struct list_head *folio_list, >> .no_demotion = 1, >> }; >> >> - nr_reclaimed = shrink_folio_list(folio_list, pgdat, &sc, &dummy_stat, true); >> + nr_reclaimed = shrink_folio_list(folio_list, pgdat, &sc, &stat, true); >> while (!list_empty(folio_list)) { >> folio = lru_to_folio(folio_list); >> list_del(&folio->lru); >> folio_putback_lru(folio); >> } >> + trace_mm_vmscan_reclaim_pages(pgdat->node_id, nr_scanned, nr_reclaimed, &stat); > >Why is the new calculation of nr_scanned needed? Could you just take a delta >of sc->nr_scanned, i.e. after - before calling shrink_folio_list() ? Oh correct. Except the case of (!folio_trylock(folio)), shrink_folio_list would count at sc->nr_scanned. I don't understand why we do not count this lock case though. Let me try to change as you suggested. I think without 'after - before', we can just use sc->nr_scanned after shrink_folio_list. Thank you > >> >> return nr_reclaimed; >> } >> @@ -2152,6 +2154,7 @@ static unsigned int reclaim_folio_list(struct list_head *folio_list, >> unsigned long reclaim_pages(struct list_head *folio_list) >> { >> int nid; >> + unsigned int nr_scanned = 0; >> unsigned int nr_reclaimed = 0; >> LIST_HEAD(node_folio_list); >> unsigned int noreclaim_flag; >> @@ -2168,15 +2171,18 @@ unsigned long reclaim_pages(struct list_head *folio_list) >> if (nid == folio_nid(folio)) { >> folio_clear_active(folio); >> list_move(&folio->lru, &node_folio_list); >> + nr_scanned += folio_nr_pages(folio); >> continue; >> } >> >> - nr_reclaimed += reclaim_folio_list(&node_folio_list, NODE_DATA(nid)); >> + nr_reclaimed += reclaim_folio_list(&node_folio_list, nr_scanned, >> + NODE_DATA(nid)); >> + nr_scanned = 0; >> nid = folio_nid(lru_to_folio(folio_list)); >> } while (!list_empty(folio_list)); >> >> - nr_reclaimed += reclaim_folio_list(&node_folio_list, NODE_DATA(nid)); >> - >> + nr_reclaimed += reclaim_folio_list(&node_folio_list, nr_scanned, >> + NODE_DATA(nid)); >> memalloc_noreclaim_restore(noreclaim_flag); >> >> return nr_reclaimed; >