Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4316703rdh; Tue, 28 Nov 2023 19:22:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGNxFNMth1N2RfFsBNyPLLqkJS6G00vKc3VFE/dbKzwuVqLXFQZ1Hc6YQOT35HtjqE+nzZw X-Received: by 2002:a17:903:2309:b0:1d0:15d9:f4cd with SMTP id d9-20020a170903230900b001d015d9f4cdmr1117311plh.33.1701228170957; Tue, 28 Nov 2023 19:22:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701228170; cv=none; d=google.com; s=arc-20160816; b=yFdzL21nPh3gIJ0ZR16g10AfJISu68jumT7AJRFr6CCkUSwMmFZwmuaMfKEupsbgHo fj3HqppiVEW+49WNKZbD87WPWYaU4AeLT0yBN822Aazt0aQ62ApXBL5EIRLhtqqZgR+a orym4CaiHK1l57LNz4OQIy76mEofMYab4VDthuEqJZdhWKLgxQjNlwwPSqAokk32M8M8 gAciKSYlXA8uqH+UaNry04FQaIIVV68SXGBM4dbmaSnq5woKvFvJ8/3zwT2np25mgMus wJPymbFHQWK8nEejPV2IjPXgjeUzZi3vB6SBVP8JwPTqF/jCdRbYE4OzFbdEAVOz4MgX +YBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=dkGBNY4lxNmyHcFXPaFanJxG5Xvmyz6hflPyUWhCGXY=; fh=IfBS1eUR4Ph2d1rlykJm3WUUhflOgyoV/WQxPmHrs48=; b=YMY3T06bIWh02doIqdDLkX1AD4rYHgp+0kLVKTWXzFOYQUv6K82s/B2u5pFWNsEe1W vcywGTnzCLa35uAFeUMF6qC6YEVsEqEbhNFRceCMvANE/WYeVSv6ADg1Z1pGEHNHDK4G b8/lYB8T1UW2VDWY8j44hEmuuSXRAU8Y8nv5O2E83Nd2IAocXjnuLNvogFnPqvlkmeMc 71EKSqR73Z8LxffK1fFBctDwfkDMf2LAQrjzCDW2MtBpU8e6oO8DnmwiiHCRmvCGV3Vm Te1qvPKv77BwwDv02LB8xWGR9cVN06sw3HlIXpU0ajSZgFFRh4ZzTt3bf0YBTcoPJ2oe IfNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=YtI3wGiu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id 11-20020a170902c14b00b001cf8e4e84besi12723147plj.175.2023.11.28.19.22.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 19:22:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=YtI3wGiu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id BA9B8804B11A; Tue, 28 Nov 2023 19:22:46 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376834AbjK2DWF (ORCPT + 99 others); Tue, 28 Nov 2023 22:22:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376814AbjK2DV7 (ORCPT ); Tue, 28 Nov 2023 22:21:59 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57610170B for ; Tue, 28 Nov 2023 19:22:05 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5cd1172b815so4221427b3.0 for ; Tue, 28 Nov 2023 19:22:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701228124; x=1701832924; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=dkGBNY4lxNmyHcFXPaFanJxG5Xvmyz6hflPyUWhCGXY=; b=YtI3wGiuF2vBfJ/bhNxTx+CJjiClIj7Dc2az9zQ2c6JwiFXDKlIBVDho8pWaZdhCDU 33wCrBiFdpkMI6PKyyLctqUPQdddCAYWRJa3Asjm5tOusAc/o8lsV4ixSoGRxpC1pFN3 c5RFSFlhOU8ZtI8GZC+qerok6eN7o6Ff0pdIazbmYdv+2dUiYG9LMme78euskK4MPg/J C5HjdGk+UywjN8gLyzjYy/rNWj1Ihf1oGWFj6xkbNLrsIS7XswQL/SftKOpQRWtO5JEK /+MpRsTdk3QN2el3QaRuHteUytk/+dYY4xfS8JKYS5nnHyxuy40Zer9ikuq3osC4vayg AvgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701228124; x=1701832924; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dkGBNY4lxNmyHcFXPaFanJxG5Xvmyz6hflPyUWhCGXY=; b=wlMCR0L25iXJWv8ZsY/E6B00JgL9RquurWzShBm1uYlKRKi71XYMmqM1kh1jnrVRun xTs93EhT1iCDL4r5Tql/5hq7lJjCkGDrylzJzp5MzUR0JrFo3pOTHcGZa57Pf5+c49RX vWMeStKLfuhllp25Ag2sVA8YtYAvEHL3fnXd9+4WiDIMdOlyV1RMoulOdNMnqmofaLPf lHceoEjwDf6Uz0TgE+SgdMQHex09knuLl0tX5nRSotk2SV/w6K0r4FMOuBrZZdooOhA7 wvbc1a04J2V96Vcb3Go02GPvY881afCOBy7X+j31w80dzdRHDAH6LEsha63HfNBanTvE JD7Q== X-Gm-Message-State: AOJu0Yx7JusTHAn6gl/eCWMqjnwtBuzSuC1XscRZXJ+uxkuvDzlU9PvW N87oyd2FHILuJxJmSJJWhI0Vk/uEXRp8HMuZ X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:29b4]) (user=yosryahmed job=sendgmr) by 2002:a05:690c:3692:b0:5d1:6732:25a0 with SMTP id fu18-20020a05690c369200b005d1673225a0mr197147ywb.4.1701228124565; Tue, 28 Nov 2023 19:22:04 -0800 (PST) Date: Wed, 29 Nov 2023 03:21:50 +0000 In-Reply-To: <20231129032154.3710765-1-yosryahmed@google.com> Mime-Version: 1.0 References: <20231129032154.3710765-1-yosryahmed@google.com> X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129032154.3710765-3-yosryahmed@google.com> Subject: [mm-unstable v4 2/5] mm: memcg: move vmstats structs definition above flushing code From: Yosry Ahmed To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Ivan Babrou , Tejun Heo , "=?UTF-8?q?Michal=20Koutn=C3=BD?=" , Waiman Long , kernel-team@cloudflare.com, Wei Xu , Greg Thelen , Domenico Cerasuolo , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Tue, 28 Nov 2023 19:22:48 -0800 (PST) The following patch will make use of those structs in the flushing code, so move their definitions (and a few other dependencies) a little bit up to reduce the diff noise in the following patch. No functional change intended. Signed-off-by: Yosry Ahmed Tested-by: Domenico Cerasuolo Acked-by: Shakeel Butt --- mm/memcontrol.c | 148 ++++++++++++++++++++++++------------------------ 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 61435bd037cb4..cf05b97c1e824 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -573,6 +573,80 @@ mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_node *mctz) return mz; } +/* Subset of vm_event_item to report for memcg event stats */ +static const unsigned int memcg_vm_event_stat[] = { + PGPGIN, + PGPGOUT, + PGSCAN_KSWAPD, + PGSCAN_DIRECT, + PGSCAN_KHUGEPAGED, + PGSTEAL_KSWAPD, + PGSTEAL_DIRECT, + PGSTEAL_KHUGEPAGED, + PGFAULT, + PGMAJFAULT, + PGREFILL, + PGACTIVATE, + PGDEACTIVATE, + PGLAZYFREE, + PGLAZYFREED, +#if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_ZSWAP) + ZSWPIN, + ZSWPOUT, + ZSWP_WB, +#endif +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + THP_FAULT_ALLOC, + THP_COLLAPSE_ALLOC, + THP_SWPOUT, + THP_SWPOUT_FALLBACK, +#endif +}; + +#define NR_MEMCG_EVENTS ARRAY_SIZE(memcg_vm_event_stat) +static int mem_cgroup_events_index[NR_VM_EVENT_ITEMS] __read_mostly; + +static void init_memcg_events(void) +{ + int i; + + for (i = 0; i < NR_MEMCG_EVENTS; ++i) + mem_cgroup_events_index[memcg_vm_event_stat[i]] = i + 1; +} + +static inline int memcg_events_index(enum vm_event_item idx) +{ + return mem_cgroup_events_index[idx] - 1; +} + +struct memcg_vmstats_percpu { + /* Local (CPU and cgroup) page state & events */ + long state[MEMCG_NR_STAT]; + unsigned long events[NR_MEMCG_EVENTS]; + + /* Delta calculation for lockless upward propagation */ + long state_prev[MEMCG_NR_STAT]; + unsigned long events_prev[NR_MEMCG_EVENTS]; + + /* Cgroup1: threshold notifications & softlimit tree updates */ + unsigned long nr_page_events; + unsigned long targets[MEM_CGROUP_NTARGETS]; +}; + +struct memcg_vmstats { + /* Aggregated (CPU and subtree) page state & events */ + long state[MEMCG_NR_STAT]; + unsigned long events[NR_MEMCG_EVENTS]; + + /* Non-hierarchical (CPU aggregated) page state & events */ + long state_local[MEMCG_NR_STAT]; + unsigned long events_local[NR_MEMCG_EVENTS]; + + /* Pending child counts during tree propagation */ + long state_pending[MEMCG_NR_STAT]; + unsigned long events_pending[NR_MEMCG_EVENTS]; +}; + /* * memcg and lruvec stats flushing * @@ -684,80 +758,6 @@ static void flush_memcg_stats_dwork(struct work_struct *w) queue_delayed_work(system_unbound_wq, &stats_flush_dwork, FLUSH_TIME); } -/* Subset of vm_event_item to report for memcg event stats */ -static const unsigned int memcg_vm_event_stat[] = { - PGPGIN, - PGPGOUT, - PGSCAN_KSWAPD, - PGSCAN_DIRECT, - PGSCAN_KHUGEPAGED, - PGSTEAL_KSWAPD, - PGSTEAL_DIRECT, - PGSTEAL_KHUGEPAGED, - PGFAULT, - PGMAJFAULT, - PGREFILL, - PGACTIVATE, - PGDEACTIVATE, - PGLAZYFREE, - PGLAZYFREED, -#if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_ZSWAP) - ZSWPIN, - ZSWPOUT, - ZSWP_WB, -#endif -#ifdef CONFIG_TRANSPARENT_HUGEPAGE - THP_FAULT_ALLOC, - THP_COLLAPSE_ALLOC, - THP_SWPOUT, - THP_SWPOUT_FALLBACK, -#endif -}; - -#define NR_MEMCG_EVENTS ARRAY_SIZE(memcg_vm_event_stat) -static int mem_cgroup_events_index[NR_VM_EVENT_ITEMS] __read_mostly; - -static void init_memcg_events(void) -{ - int i; - - for (i = 0; i < NR_MEMCG_EVENTS; ++i) - mem_cgroup_events_index[memcg_vm_event_stat[i]] = i + 1; -} - -static inline int memcg_events_index(enum vm_event_item idx) -{ - return mem_cgroup_events_index[idx] - 1; -} - -struct memcg_vmstats_percpu { - /* Local (CPU and cgroup) page state & events */ - long state[MEMCG_NR_STAT]; - unsigned long events[NR_MEMCG_EVENTS]; - - /* Delta calculation for lockless upward propagation */ - long state_prev[MEMCG_NR_STAT]; - unsigned long events_prev[NR_MEMCG_EVENTS]; - - /* Cgroup1: threshold notifications & softlimit tree updates */ - unsigned long nr_page_events; - unsigned long targets[MEM_CGROUP_NTARGETS]; -}; - -struct memcg_vmstats { - /* Aggregated (CPU and subtree) page state & events */ - long state[MEMCG_NR_STAT]; - unsigned long events[NR_MEMCG_EVENTS]; - - /* Non-hierarchical (CPU aggregated) page state & events */ - long state_local[MEMCG_NR_STAT]; - unsigned long events_local[NR_MEMCG_EVENTS]; - - /* Pending child counts during tree propagation */ - long state_pending[MEMCG_NR_STAT]; - unsigned long events_pending[NR_MEMCG_EVENTS]; -}; - unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx) { long x = READ_ONCE(memcg->vmstats->state[idx]); -- 2.43.0.rc1.413.gea7ed67945-goog