From nobody Fri Feb 13 11:00:41 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11EADE8180C for ; Tue, 26 Sep 2023 02:11:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233194AbjIZCLV (ORCPT ); Mon, 25 Sep 2023 22:11:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229501AbjIZCLS (ORCPT ); Mon, 25 Sep 2023 22:11:18 -0400 Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2999C0 for ; Mon, 25 Sep 2023 19:11:08 -0700 (PDT) Received: from epcas1p4.samsung.com (unknown [182.195.41.48]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20230926021105epoutp01eca71749e1440067e4a7cb3add2cf54c~IUPM3uO3k1713917139epoutp01W for ; Tue, 26 Sep 2023 02:11:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20230926021105epoutp01eca71749e1440067e4a7cb3add2cf54c~IUPM3uO3k1713917139epoutp01W DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1695694265; bh=avAklTkMEF1SNHqXPUWAIkv113Uw4FSIkPDMBqQqIgM=; h=Subject:Reply-To:From:To:CC:In-Reply-To:Date:References:From; b=Pzurd/L68nkms6vUk7nQXTE+cxzCOtDV79iQapsNP7fvpLYa90die0HNjBzLa7Iel J+LBgc6cYfGLCQTcQXEFaLT+TPSx6EtFh7y1ly+noy0Zq4MeWeWGiQEaOctD9M6Re5 dsO8lA9GnhVVtQ1EBzO8U80y7JOL9j6bKbq2SGDo= Received: from epsnrtp4.localdomain (unknown [182.195.42.165]) by epcas1p1.samsung.com (KnoxPortal) with ESMTP id 20230926021104epcas1p1c559e6a9bea11e079bc2055c689e0ab2~IUPMXXQei0945509455epcas1p13; Tue, 26 Sep 2023 02:11:04 +0000 (GMT) Received: from epsmgec1p1.samsung.com (unknown [182.195.38.243]) by epsnrtp4.localdomain (Postfix) with ESMTP id 4Rvjs41Y53z4x9QJ; Tue, 26 Sep 2023 02:11:04 +0000 (GMT) X-AuditID: b6c32a36-0d9ff700000025af-70-65123db89551 Received: from epcas1p3.samsung.com ( [182.195.41.47]) by epsmgec1p1.samsung.com (Symantec Messaging Gateway) with SMTP id F8.5C.09647.8BD32156; Tue, 26 Sep 2023 11:11:04 +0900 (KST) Mime-Version: 1.0 Subject: RE: [PATCH v3] vmscan: add trace events for lru_gen Reply-To: jaewon31.kim@samsung.com Sender: =?UTF-8?B?6rmA7J6s7JuQ?= From: =?UTF-8?B?6rmA7J6s7JuQ?= To: SeongJae Park CC: "rostedt@goodmis.org" , "tjmercier@google.com" , "yuzhao@google.com" , "kaleshsingh@google.com" , "akpm@linux-foundation.org" , "vbabka@suse.cz" , "hannes@cmpxchg.org" , "linux-kernel@vger.kernel.org" , "linux-trace-kernel@vger.kernel.org" , "linux-mm@kvack.org" , "jaewon31.kim@gmail.com" X-Priority: 3 X-Content-Kind-Code: NORMAL In-Reply-To: <20230925213619.263131-1-sj@kernel.org> X-Drm-Type: N,general X-Msg-Generator: Mail X-Msg-Type: PERSONAL X-Reply-Demand: N Message-ID: <20230926021103epcms1p413b8c56ba8ce44af67b80cd3df3edf93@epcms1p4> Date: Tue, 26 Sep 2023 11:11:03 +0900 X-CMS-MailID: 20230926021103epcms1p413b8c56ba8ce44af67b80cd3df3edf93 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBJsWRmVeSWpSXmKPExsWy7bCmvu4OW6FUg8+bWSzmrF/DZrF6k69F 9+aZjBa9718xWTTtm8lucXnXHDaLe2v+s1ocWX+WxWJfxwMmi8Nf3zBZvFv/hc1idmMfo8W7 CV9YHXg9Dr95z+yxc9Zddo+WfbfYPRZsKvXYtKqTzWPTp0nsHidm/Gbx6NuyitHjzIIj7B6f N8kFcEVl22SkJqakFimk5iXnp2TmpdsqeQfHO8ebmhkY6hpaWpgrKeQl5qbaKrn4BOi6ZeYA 3a6kUJaYUwoUCkgsLlbSt7Mpyi8tSVXIyC8usVVKLUjJKTAr0CtOzC0uzUvXy0stsTI0MDAy BSpMyM5Yv3c7a8GVuIr2Gw2MDYzzI7sYOTgkBEwkfu5x7WLk5BAS2MEo0XNRGCTMKyAo8XeH MEhYWMBGoufcT1aIEiWJsz+usEPErSX2L5rBBGKzCVhKbL85kRHEFhFQlDj3+CJQPRcHs8BO Fok/G4+ANUsI8ErMaH/KAmFLS2xfvhWsgRPohHeLlrBBxEUlbq5+yw5jvz82nxHCFpFovXeW GcIWlHjwczcjzJw/x59D9RZLLOt8wARh10isOLcKKm4u0fB2JZjNK+Ar8RaqnkVAVWLr/z/M kGBwkbg6MwwkzCygLbFs4WuwMLOApsT6XfoQUxQldv6eywhRwifx7msP3Fc75j2B2qom0fLs K1RcRuLvv2dQtofEgesPmUBGCglUSxzZpTeBUWEWIpxnIdk7C2HvAkbmVYxiqQXFuempxYYF RvCITc7P3cQITsJaZjsYJ739oHeIkYmD8RCjBAezkgjvr2d8qUK8KYmVValF+fFFpTmpxYcY TYEensgsJZqcD8wDeSXxhiaWBiZmRiYWxpbGZkrivHMe96YICaQnlqRmp6YWpBbB9DFxcEo1 MDHn1S38rp8Ts63YecqmuL3Z8r5cDyQPprto7TPR6GN5fWGVMr88p8tx44vPzHSbmYTKfAN8 N73r2rlV8+Vq3rhTN7azNB5e7MVQazXHiC3umO3/y64lDYbX49svnhFpU7Tr2d1QcunxeeVD TDv1nl4L9zH7tznK52/NxJMev5aJT3nxUyXS4PbDyrpnCj/XTO+6bZvce+GH8MToGBlPz2yV +rDK67en3/s0c8lh3Rd1irtupmbnZexVOR10tOzqtrPRt13YZsw+fI6/lcs1zSZ1xo9lRbMt e62+WmbxXEza+ylvaf+TiUFvLxw++/v+AdfPq+4lT9FYGrB27/RYOa4JN4prIv/uMDEJT5GS 3afEUpyRaKjFXFScCABPYuKtSwQAAA== DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20230925213630epcas1p104cd077754d8419936b91795a87ad64c References: <20230925213619.263131-1-sj@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org >Hello, > >On Sun, 24 Sep 2023 23:23:43 +0900 Jaewon Kim w= rote: > >> As the legacy lru provides, the lru_gen needs some trace events for >> debugging. >>=20 >> This commit introduces 2 trace events. >> trace_mm_vmscan_lru_gen_scan >> trace_mm_vmscan_lru_gen_evict >>=20 >> Each event is similar to the following legacy events. >> trace_mm_vmscan_lru_isolate, >> trace_mm_vmscan_lru_shrink_[in]active >>=20 >> Here's an example >> mm_vmscan_lru_gen_scan: isolate_mode=3D0 classzone=3D1 order=3D9 nr_re= quested=3D4096 nr_scanned=3D431 nr_skipped=3D0 nr_taken=3D55 lru=3Danon >> mm_vmscan_lru_gen_evict: nid=3D0 nr_reclaimed=3D42 nr_dirty=3D0 nr_wri= teback=3D0 nr_congested=3D0 nr_immediate=3D0 nr_activate_anon=3D13 nr_activ= ate_file=3D0 nr_ref_keep=3D0 nr_unmap_fail=3D0 priority=3D2 flags=3DRECLAIM= _WB_ANON|RECLAIM_WB_ASYNC >> mm_vmscan_lru_gen_scan: isolate_mode=3D0 classzone=3D1 order=3D9 nr_re= quested=3D4096 nr_scanned=3D66 nr_skipped=3D0 nr_taken=3D64 lru=3Dfile >> mm_vmscan_lru_gen_evict: nid=3D0 nr_reclaimed=3D62 nr_dirty=3D0 nr_wri= teback=3D0 nr_congested=3D0 nr_immediate=3D0 nr_activate_anon=3D0 nr_activa= te_file=3D2 nr_ref_keep=3D0 nr_unmap_fail=3D0 priority=3D2 flags=3DRECLAIM_= WB_FILE|RECLAIM_WB_ASYNC >>=20 >> Signed-off-by: Jaewon Kim >> Reviewed-by: Steven Rostedt (Google) >> Reviewed-by: T.J. Mercier >> --- >> v3: change printk format >> v2: use condition and make it aligned >> v1: introduce trace events >> --- >> include/trace/events/mmflags.h | 5 ++ >> include/trace/events/vmscan.h | 98 ++++++++++++++++++++++++++++++++++ >> mm/vmscan.c | 17 ++++-- >> 3 files changed, 115 insertions(+), 5 deletions(-) >>=20 >> diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmfla= gs.h >> index 1478b9dd05fa..44e9b38f83e7 100644 >> --- a/include/trace/events/mmflags.h >> +++ b/include/trace/events/mmflags.h >> @@ -274,6 +274,10 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \ >> EM (LRU_ACTIVE_FILE, "active_file") \ >> EMe(LRU_UNEVICTABLE, "unevictable") >> =20 >> +#define LRU_GEN_NAMES \ >> + EM (LRU_GEN_ANON, "anon") \ >> + EMe(LRU_GEN_FILE, "file") >> + > >I found this patchset makes build fails when !CONFIG_LRU_GEN, like below: > > In file included from /linux/include/trace/trace_events.h:27, > from /linux/include/trace/define_trace.h:102, > from /linux/include/trace/events/oom.h:195, > from /linux/mm/oom_kill.c:53: > /linux/include/trace/events/mmflags.h:278:7: error: =E2=80=98LRU_GEN_A= NON=E2=80=99 undeclared here (not in a function); did you mean =E2=80=98LRU= _GEN_PGOFF=E2=80=99? > 278 | EM (LRU_GEN_ANON, "anon") \ > | ^~~~~~~~~~~~ > >Maybe some config checks are needed? Sorry and thank you for your comment. I think I need to wrap with CONFIG_LRU_GEN Adding #ifdef CONFIG_LRU_GEN even to vmscan.c seems not nice though. Additionally I had to remove isolate_mode to be compatible with mm, vmscan: remove ISOLATE_UNMAPPED https://lore.kernel.org/linux-mm/20230914131637.12204-4-vbabka@suse.cz/ Here's what I changed on top of this v3 patch. I'm trying to find a way not to use ifdef CONFIG_LRU_GEN in vmscan.c --- a/include/trace/events/mmflags.h +++ b/include/trace/events/mmflags.h @@ -274,9 +274,11 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) = \ EM (LRU_ACTIVE_FILE, "active_file") \ EMe(LRU_UNEVICTABLE, "unevictable") =20 +#ifdef CONFIG_LRU_GEN #define LRU_GEN_NAMES \ EM (LRU_GEN_ANON, "anon") \ EMe(LRU_GEN_FILE, "file") +#endif =20 /* * First define the enums in the above macros to be exported to userspace @@ -292,7 +294,9 @@ COMPACTION_PRIORITY /* COMPACTION_FEEDBACK are defines not enums. Not needed here. */ ZONE_TYPE LRU_NAMES +#ifdef CONFIG_LRU_GEN LRU_GEN_NAMES +#endif =20 /* * Now redefine the EM() and EMe() macros to map the enums to the strings diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index e7230fa8bda1..ba99182d6558 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -323,6 +323,7 @@ TRACE_EVENT(mm_vmscan_lru_isolate, __print_symbolic(__entry->lru, LRU_NAMES)) ); =20 +#ifdef CONFIG_LRU_GEN TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, TP_PROTO(int highest_zoneidx, int order, @@ -330,10 +331,9 @@ TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, unsigned long nr_scanned, unsigned long nr_skipped, unsigned long nr_taken, - isolate_mode_t isolate_mode, int lru), =20 - TP_ARGS(highest_zoneidx, order, nr_requested, nr_scanned, nr_skippe= d, nr_taken, isolate_mode, lru), + TP_ARGS(highest_zoneidx, order, nr_requested, nr_scanned, nr_skippe= d, nr_taken, lru), =20 TP_CONDITION(nr_scanned), =20 @@ -344,7 +344,6 @@ TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, __field(unsigned long, nr_scanned) __field(unsigned long, nr_skipped) __field(unsigned long, nr_taken) - __field(unsigned int, isolate_mode) __field(int, lru) ), =20 @@ -355,7 +354,6 @@ TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, __entry->nr_scanned =3D nr_scanned; __entry->nr_skipped =3D nr_skipped; __entry->nr_taken =3D nr_taken; - __entry->isolate_mode =3D (__force unsigned int)isolate_mod= e; __entry->lru =3D lru; ), =20 @@ -363,7 +361,7 @@ TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, * classzone is previous name of the highest_zoneidx. * Reason not to change it is the ABI requirement of the tracepoint. */ - TP_printk("isolate_mode=3D%u classzone=3D%d order=3D%d nr_requested= =3D%lu nr_scanned=3D%lu nr_skipped=3D%lu nr_taken=3D%lu lru=3D%s", + TP_printk("classzone=3D%d order=3D%d nr_requested=3D%lu nr_scanned= =3D%lu nr_skipped=3D%lu nr_taken=3D%lu lru=3D%s", __entry->isolate_mode, __entry->highest_zoneidx, __entry->order, @@ -373,6 +371,7 @@ TRACE_EVENT_CONDITION(mm_vmscan_lru_gen_scan, __entry->nr_taken, __print_symbolic(__entry->lru, LRU_GEN_NAMES)) ); +#endif =20 TRACE_EVENT(mm_vmscan_write_folio, =20 @@ -484,6 +483,7 @@ TRACE_EVENT(mm_vmscan_lru_shrink_active, show_reclaim_flags(__entry->reclaim_flags)) ); =20 +#ifdef CONFIG_LRU_GEN TRACE_EVENT(mm_vmscan_lru_gen_evict, =20 TP_PROTO(int nid, unsigned long nr_reclaimed, @@ -530,6 +530,7 @@ TRACE_EVENT(mm_vmscan_lru_gen_evict, __entry->priority, show_reclaim_flags(__entry->reclaim_flags)) ); +#endif =20 TRACE_EVENT(mm_vmscan_node_reclaim_begin, =20 diff --git a/mm/vmscan.c b/mm/vmscan.c index dbfacf79b42c..d26e1d2610ca 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4390,9 +4390,10 @@ static int scan_folios(struct lruvec *lruvec, struct= scan_control *sc, __count_memcg_events(memcg, PGREFILL, sorted); __count_vm_events(PGSCAN_ANON + type, isolated); =20 +#ifdef CONFIG_LRU_GEN trace_mm_vmscan_lru_gen_scan(sc->reclaim_idx, sc->order, MAX_LRU_BA= TCH, - scanned, skipped, isolated, - sc->may_unmap ? 0 : ISOLATE_UNMAPPED, type); + scanned, skipped, isolated, type); +#endif /* * There might not be eligible folios due to reclaim_idx. Check the * remaining to prevent livelock if it's not making progress. @@ -4522,8 +4523,10 @@ static int evict_folios(struct lruvec *lruvec, struc= t scan_control *sc, int swap retry: reclaimed =3D shrink_folio_list(&list, pgdat, sc, &stat, false); sc->nr_reclaimed +=3D reclaimed; +#ifdef CONFIG_LRU_GEN trace_mm_vmscan_lru_gen_evict(pgdat->node_id, reclaimed, &stat, sc->priority, type); +#endif =20 list_for_each_entry_safe_reverse(folio, next, &list, lru) { if (!folio_evictable(folio)) { Thank you > > >Thanks, >SJ