From patchwork Thu Nov 23 19:39:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Rokosov X-Patchwork-Id: 169112 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp672806vqx; Thu, 23 Nov 2023 11:41:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IFSEffPOelHmCwj/xFIforA3+TWMfk5CKTmGBiolfK+w54halnly+dDZ4/ybl2LWqXhR8vt X-Received: by 2002:a05:6e02:152b:b0:35a:d654:5158 with SMTP id i11-20020a056e02152b00b0035ad6545158mr614744ilu.30.1700768505754; Thu, 23 Nov 2023 11:41:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700768505; cv=none; d=google.com; s=arc-20160816; b=CIbP6Nybh1i5y9XzVS6Y/OJJNJynU0xBbXGt+KU9xy0Cv6DhAfPcHQ/y2yuNuVxNeR qoBgShAgqEijZ65alH3lZsrCfJkWAtgXU2QSY3xSAW4B+lGfRCha2KWRnFviITvbGj3+ BfltxHYflLT6b871kAodCK6buE8hHVIPIVMvB2DG2hUTVMv7eOgt1DD5nivvlTU+c4ga 94NfBtFUAsZgS8VDtr86xDnQVpmnoQG7JGxOyQdCeyP3DAhKi1vGBvItQwIXJ/7KVeBj qNmlJCk9rFNy2RPIgYaSnY3vH7j5J5x0m3sIvlA5XafWV6blKDfkdawIsTaiLzAWYV14 t15w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=ywDtj6tZPYqsf6JfVartrIaJdgw+5bnQVzBGvn2tRUk=; fh=zfITSpriae2MLqKm83qRy3n/ZXLe+Vlxxft5MyYasfM=; b=PZQasEpXmZ4GKmy2K84Higkrja8CxXKE8Y8PEcFScFQhzvrRhHiF6N5Vfb7iy3iQ9J RLXu4Z61ojLzWyUQEZIWAkSR0ep0oSINet2YQ9K9j8LcNkl4og487iAQefEzBBJjEIpX 1qNnn11Y8BEe7i5Mxu0XnZNUh/2p0oJXlNrgDjtxR08cP2RO4wM0bjznTpUrZ0UVtt79 igUwLAL4V56xoCZ3VNZjsjC9BAKRsyg5O7uyIOp7i7KOnawYaa8u0mDWzWQLJMtwCV15 5V1oP8hIssnpjQkEQMLTh4GeDpc8bG0G03DICyadYnS+LsFNVL9yYD+YcbbwzYRRq7DR tTCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=PI9aQbRE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e1-20020a636901000000b005b7dd20f8c1si1777395pgc.20.2023.11.23.11.41.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 11:41:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=PI9aQbRE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 3C4AD81A43CD; Thu, 23 Nov 2023 11:39:59 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229647AbjKWTjr (ORCPT + 99 others); Thu, 23 Nov 2023 14:39:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229462AbjKWTjo (ORCPT ); Thu, 23 Nov 2023 14:39:44 -0500 Received: from mx1.sberdevices.ru (mx1.sberdevices.ru [37.18.73.165]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4A8FD6F; Thu, 23 Nov 2023 11:39:47 -0800 (PST) Received: from p-infra-ksmg-sc-msk01 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 66922100002; Thu, 23 Nov 2023 22:39:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 66922100002 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1700768385; bh=ywDtj6tZPYqsf6JfVartrIaJdgw+5bnQVzBGvn2tRUk=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=PI9aQbREnvKhexKQ0GGXr5+Y3ivzCgX45+xVc56UuJ3IeASPnFkZ/w0vmM1qFYMml NP3jgLWtKiWN3iFQ16GSuZUVOiwf3uMVwOGpIKGNtNGX8xYoD0l6HvBNjGj7ZHDW/A PTCdMowrQWgumnWpN+vW88EBlOX1BOMAZwk6Uv2vnH6JILwPPW53jxFEzrjh0PIDPw 6PMQEtVbbfqQphA5EWgdyCzN7n1d5eFIi56doyOVHV29wHHElCGG8C9UG5F2xnMzDm Ncc/kffYHs3Ztb9ikweTidb3FBxW5Lqamk5JlCy6ehDa3zIDzMMxDLz8wxVgUkINDW saB6OQsiXNLeA== Received: from p-i-exch-sc-m01.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Thu, 23 Nov 2023 22:39:45 +0300 (MSK) Received: from localhost.localdomain (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 23 Nov 2023 22:39:44 +0300 From: Dmitry Rokosov To: , , , , , , , , CC: , , , , , , Dmitry Rokosov Subject: [PATCH v3 1/2] mm: memcg: print out cgroup ino in the memcg tracepoints Date: Thu, 23 Nov 2023 22:39:36 +0300 Message-ID: <20231123193937.11628-2-ddrokosov@salutedevices.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20231123193937.11628-1-ddrokosov@salutedevices.com> References: <20231123193937.11628-1-ddrokosov@salutedevices.com> MIME-Version: 1.0 X-Originating-IP: [100.64.160.123] X-ClientProxiedBy: p-i-exch-sc-m02.sberdevices.ru (172.16.192.103) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 181569 [Nov 23 2023] X-KSMG-AntiSpam-Version: 6.0.0.2 X-KSMG-AntiSpam-Envelope-From: ddrokosov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 4 0.3.4 720d3c21819df9b72e78f051e300e232316d302a, {Tracking_from_domain_doesnt_match_to}, salutedevices.com:7.1.1;100.64.160.123:7.1.2;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;p-i-exch-sc-m01.sberdevices.ru:5.0.1,7.1.1;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2023/11/23 17:02:00 #22509098 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 23 Nov 2023 11:39:59 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783385036451408985 X-GMAIL-MSGID: 1783385036451408985 Sometimes, it becomes necessary to determine the memcg tracepoint event that has occurred. This is particularly relevant in scenarios involving a large cgroup hierarchy, where users may wish to trace the process of reclamation within a specific cgroup(s) by applying a filter. The function cgroup_ino() is a useful tool for this purpose. To integrate cgroup_ino() into the existing memcg tracepoints, this patch introduces a new tracepoint template for the begin() and end() events. Signed-off-by: Dmitry Rokosov Acked-by: Shakeel Butt --- include/trace/events/vmscan.h | 73 +++++++++++++++++++++++++++++------ mm/vmscan.c | 10 ++--- 2 files changed, 66 insertions(+), 17 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index d2123dd960d5..e9093fa1c924 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -141,19 +141,45 @@ DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_direct_reclaim_b ); #ifdef CONFIG_MEMCG -DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin, - TP_PROTO(int order, gfp_t gfp_flags), +DECLARE_EVENT_CLASS(mm_vmscan_memcg_reclaim_begin_template, - TP_ARGS(order, gfp_flags) + TP_PROTO(int order, gfp_t gfp_flags, const struct mem_cgroup *memcg), + + TP_ARGS(order, gfp_flags, memcg), + + TP_STRUCT__entry( + __field(int, order) + __field(unsigned long, gfp_flags) + __field(ino_t, ino) + ), + + TP_fast_assign( + __entry->order = order; + __entry->gfp_flags = (__force unsigned long)gfp_flags; + __entry->ino = cgroup_ino(memcg->css.cgroup); + ), + + TP_printk("order=%d gfp_flags=%s memcg=%ld", + __entry->order, + show_gfp_flags(__entry->gfp_flags), + __entry->ino) ); -DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin, +DEFINE_EVENT(mm_vmscan_memcg_reclaim_begin_template, mm_vmscan_memcg_reclaim_begin, - TP_PROTO(int order, gfp_t gfp_flags), + TP_PROTO(int order, gfp_t gfp_flags, const struct mem_cgroup *memcg), - TP_ARGS(order, gfp_flags) + TP_ARGS(order, gfp_flags, memcg) +); + +DEFINE_EVENT(mm_vmscan_memcg_reclaim_begin_template, mm_vmscan_memcg_softlimit_reclaim_begin, + + TP_PROTO(int order, gfp_t gfp_flags, const struct mem_cgroup *memcg), + + TP_ARGS(order, gfp_flags, memcg) ); + #endif /* CONFIG_MEMCG */ DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, @@ -181,19 +207,42 @@ DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_direct_reclaim_end ); #ifdef CONFIG_MEMCG -DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_reclaim_end, - TP_PROTO(unsigned long nr_reclaimed), +DECLARE_EVENT_CLASS(mm_vmscan_memcg_reclaim_end_template, - TP_ARGS(nr_reclaimed) + TP_PROTO(unsigned long nr_reclaimed, const struct mem_cgroup *memcg), + + TP_ARGS(nr_reclaimed, memcg), + + TP_STRUCT__entry( + __field(unsigned long, nr_reclaimed) + __field(ino_t, ino) + ), + + TP_fast_assign( + __entry->nr_reclaimed = nr_reclaimed; + __entry->ino = cgroup_ino(memcg->css.cgroup); + ), + + TP_printk("nr_reclaimed=%lu memcg=%ld", + __entry->nr_reclaimed, + __entry->ino) ); -DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end, +DEFINE_EVENT(mm_vmscan_memcg_reclaim_end_template, mm_vmscan_memcg_reclaim_end, - TP_PROTO(unsigned long nr_reclaimed), + TP_PROTO(unsigned long nr_reclaimed, const struct mem_cgroup *memcg), - TP_ARGS(nr_reclaimed) + TP_ARGS(nr_reclaimed, memcg) ); + +DEFINE_EVENT(mm_vmscan_memcg_reclaim_end_template, mm_vmscan_memcg_softlimit_reclaim_end, + + TP_PROTO(unsigned long nr_reclaimed, const struct mem_cgroup *memcg), + + TP_ARGS(nr_reclaimed, memcg) +); + #endif /* CONFIG_MEMCG */ TRACE_EVENT(mm_shrink_slab_start, diff --git a/mm/vmscan.c b/mm/vmscan.c index 1080209a568b..45780952f4b5 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -7088,8 +7088,8 @@ unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg, sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK); - trace_mm_vmscan_memcg_softlimit_reclaim_begin(sc.order, - sc.gfp_mask); + trace_mm_vmscan_memcg_softlimit_reclaim_begin(sc.order, sc.gfp_mask, + memcg); /* * NOTE: Although we can get the priority field, using it @@ -7100,7 +7100,7 @@ unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg, */ shrink_lruvec(lruvec, &sc); - trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed); + trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed, memcg); *nr_scanned = sc.nr_scanned; @@ -7134,13 +7134,13 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg, struct zonelist *zonelist = node_zonelist(numa_node_id(), sc.gfp_mask); set_task_reclaim_state(current, &sc.reclaim_state); - trace_mm_vmscan_memcg_reclaim_begin(0, sc.gfp_mask); + trace_mm_vmscan_memcg_reclaim_begin(0, sc.gfp_mask, memcg); noreclaim_flag = memalloc_noreclaim_save(); nr_reclaimed = do_try_to_free_pages(zonelist, &sc); memalloc_noreclaim_restore(noreclaim_flag); - trace_mm_vmscan_memcg_reclaim_end(nr_reclaimed); + trace_mm_vmscan_memcg_reclaim_end(nr_reclaimed, memcg); set_task_reclaim_state(current, NULL); return nr_reclaimed; From patchwork Thu Nov 23 19:39:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Rokosov X-Patchwork-Id: 169113 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp672855vqx; Thu, 23 Nov 2023 11:41:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IFYW13nAprLBY41EZDPRZQ8edWY/JgIjN+S8+e25qMZTiANiS4SfwZT6Xk2mb68LIQbcFD9 X-Received: by 2002:a9d:7416:0:b0:6d3:2960:c49 with SMTP id n22-20020a9d7416000000b006d329600c49mr538198otk.26.1700768510716; Thu, 23 Nov 2023 11:41:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700768510; cv=none; d=google.com; s=arc-20160816; b=ooRMUN9SRfmgNyK0rAU9mA/X2Ttod0VzYp5Oe00x/efC3WLprV+rueipSg5kfZuFZs dPBfvWUJ7weg/Mr1ec9lSuPVCaq+h0RP78n/xpsdWj/+gHH1a3aVvIR1oylLAgFRGg2+ MG/QWBgbhuryqacqpD2Qj1ZUu2/aklIvGYJvuFpEI9zA2sY2YxbeIsOTrabdfQ4Q6A2d kQVAZ1upbO/cZlYhtLdk7605Omvsg4OEvziiZT5im6cl7T2mHA1rdTz29HTSZxBSM4f4 bYnMdjG3rLdWN0n6lE7eVcKdR7GM8DnRQ61wVwsOEBa7UiZcqCiMzqmcTKuuT85sDQ17 SwgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=fGDBCiKmSTE+7SXnjipAsp+7eqI2bC5r1hZ9/0vsdks=; fh=zfITSpriae2MLqKm83qRy3n/ZXLe+Vlxxft5MyYasfM=; b=q6kfQy4eqf/taU4bPbOose93KjK71s3I5qmOsu+1Mc3ZQ9DJoPuNLxu1AmpFrNx0t2 cxfSsqnKzYH+YLGReLGwwTfvNCoWBigxyNSiFdpFNyknkST5SHbfxKSWneKdvcsfyGIQ n0sGgk/b61q9Kn9gaDvlwro1NEPitUsw7+YJnEWIUcumdUGmbgjqxCrd5YdolJiaKEGp RV4GmKZmUSwTh1nCtryy/rqtzd4eVJ68XTrnLvb9btmFpp3ZwXhEY8a5aGaAalOUeXGF 25lTc0D8HoWOHEgoqmH0CseOkIS9nGKgvuZbkhV7RaxgS0fkZ9Y5nFlm8ByZPIVKrRyY siuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=UDEGgq7W; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id by30-20020a056a02059e00b005bd3cf5fd1esi2105746pgb.389.2023.11.23.11.41.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 11:41:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=UDEGgq7W; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 2244E80C8D72; Thu, 23 Nov 2023 11:40:06 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229788AbjKWTju (ORCPT + 99 others); Thu, 23 Nov 2023 14:39:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229453AbjKWTjo (ORCPT ); Thu, 23 Nov 2023 14:39:44 -0500 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCF9FD5A; Thu, 23 Nov 2023 11:39:47 -0800 (PST) Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 30808120011; Thu, 23 Nov 2023 22:39:46 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 30808120011 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1700768386; bh=fGDBCiKmSTE+7SXnjipAsp+7eqI2bC5r1hZ9/0vsdks=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=UDEGgq7WizGwhy3OIZgsMiqkZLcTpueDXg7U2Imd1cfixaVQx4o6vVtmX9T1OzYn1 T3A4mqAHGm9OWkx7niV8FtJqfMR2DJjvS6R9vZDw2KAfyfRXl5zmKpuNnJsdzRS5jF pFvpyVd4N7VZYKBl3OXBfLrJeuWt/DFIb1jSYICCO52ubgfO5r8HLBQ+JBvTtOVASw g4kI659Jm40D3Rymt6ELCvngjiSmu/QowWf0vNBZsdLvQpXVby0ndm3np0MKZOaNiU UlxVGJQk71a2iyk08KherA4MzmRSDRLJczMDB1C3zFxkE8dHfqpZCspqFBPmQAt2ut s7WQ4D7dm3bGg== Received: from p-i-exch-sc-m01.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Thu, 23 Nov 2023 22:39:46 +0300 (MSK) Received: from localhost.localdomain (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 23 Nov 2023 22:39:45 +0300 From: Dmitry Rokosov To: , , , , , , , , CC: , , , , , , Dmitry Rokosov Subject: [PATCH v3 2/2] mm: memcg: introduce new event to trace shrink_memcg Date: Thu, 23 Nov 2023 22:39:37 +0300 Message-ID: <20231123193937.11628-3-ddrokosov@salutedevices.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20231123193937.11628-1-ddrokosov@salutedevices.com> References: <20231123193937.11628-1-ddrokosov@salutedevices.com> MIME-Version: 1.0 X-Originating-IP: [100.64.160.123] X-ClientProxiedBy: p-i-exch-sc-m02.sberdevices.ru (172.16.192.103) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 181569 [Nov 23 2023] X-KSMG-AntiSpam-Version: 6.0.0.2 X-KSMG-AntiSpam-Envelope-From: ddrokosov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 4 0.3.4 720d3c21819df9b72e78f051e300e232316d302a, {Tracking_from_domain_doesnt_match_to}, d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;100.64.160.123:7.1.2;salutedevices.com:7.1.1;127.0.0.199:7.1.2;p-i-exch-sc-m01.sberdevices.ru:7.1.1,5.0.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2023/11/23 17:02:00 #22509098 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 23 Nov 2023 11:40:06 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783385042075145478 X-GMAIL-MSGID: 1783385042075145478 The shrink_memcg flow plays a crucial role in memcg reclamation. Currently, it is not possible to trace this point from non-direct reclaim paths. However, direct reclaim has its own tracepoint, so there is no issue there. In certain cases, when debugging memcg pressure, developers may need to identify all potential requests for memcg reclamation including kswapd(). The patchset introduces the tracepoints mm_vmscan_memcg_shrink_{begin|end}() to address this problem. Example of output in the kswapd context (non-direct reclaim): kswapd0-39 [001] ..... 240.356378: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.356396: mm_vmscan_memcg_shrink_end: nr_reclaimed=0 memcg=16 kswapd0-39 [001] ..... 240.356420: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.356454: mm_vmscan_memcg_shrink_end: nr_reclaimed=1 memcg=16 kswapd0-39 [001] ..... 240.356479: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.356506: mm_vmscan_memcg_shrink_end: nr_reclaimed=4 memcg=16 kswapd0-39 [001] ..... 240.356525: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.356593: mm_vmscan_memcg_shrink_end: nr_reclaimed=11 memcg=16 kswapd0-39 [001] ..... 240.356614: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.356738: mm_vmscan_memcg_shrink_end: nr_reclaimed=25 memcg=16 kswapd0-39 [001] ..... 240.356790: mm_vmscan_memcg_shrink_begin: order=0 gfp_flags=GFP_KERNEL memcg=16 kswapd0-39 [001] ..... 240.357125: mm_vmscan_memcg_shrink_end: nr_reclaimed=53 memcg=16 Signed-off-by: Dmitry Rokosov Acked-by: Shakeel Butt --- include/trace/events/vmscan.h | 22 ++++++++++++++++++++++ mm/vmscan.c | 7 +++++++ 2 files changed, 29 insertions(+) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index e9093fa1c924..a4686afe571d 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -180,6 +180,17 @@ DEFINE_EVENT(mm_vmscan_memcg_reclaim_begin_template, mm_vmscan_memcg_softlimit_r TP_ARGS(order, gfp_flags, memcg) ); +DEFINE_EVENT(mm_vmscan_memcg_reclaim_begin_template, mm_vmscan_memcg_shrink_begin, + + TP_PROTO(int order, gfp_t gfp_flags, const struct mem_cgroup *memcg), + + TP_ARGS(order, gfp_flags, memcg) +); + +#else + +#define trace_mm_vmscan_memcg_shrink_begin(...) + #endif /* CONFIG_MEMCG */ DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, @@ -243,6 +254,17 @@ DEFINE_EVENT(mm_vmscan_memcg_reclaim_end_template, mm_vmscan_memcg_softlimit_rec TP_ARGS(nr_reclaimed, memcg) ); +DEFINE_EVENT(mm_vmscan_memcg_reclaim_end_template, mm_vmscan_memcg_shrink_end, + + TP_PROTO(unsigned long nr_reclaimed, const struct mem_cgroup *memcg), + + TP_ARGS(nr_reclaimed, memcg) +); + +#else + +#define trace_mm_vmscan_memcg_shrink_end(...) + #endif /* CONFIG_MEMCG */ TRACE_EVENT(mm_shrink_slab_start, diff --git a/mm/vmscan.c b/mm/vmscan.c index 45780952f4b5..f7e3ddc5a7ad 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6461,6 +6461,10 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) */ cond_resched(); + trace_mm_vmscan_memcg_shrink_begin(sc->order, + sc->gfp_mask, + memcg); + mem_cgroup_calculate_protection(target_memcg, memcg); if (mem_cgroup_below_min(target_memcg, memcg)) { @@ -6491,6 +6495,9 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) shrink_slab(sc->gfp_mask, pgdat->node_id, memcg, sc->priority); + trace_mm_vmscan_memcg_shrink_end(sc->nr_reclaimed - reclaimed, + memcg); + /* Record the group's reclaim efficiency */ if (!sc->proactive) vmpressure(sc->gfp_mask, memcg, false,