Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp285735rdg; Thu, 12 Oct 2023 05:53:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEdvf4OfA71yc4cpulRQbDJO3DBLGpXAgVWtSG23FVrY9euO4efHpWFp+JYNZZv7dAzJZ/H X-Received: by 2002:a17:90b:1e04:b0:268:352c:9d13 with SMTP id pg4-20020a17090b1e0400b00268352c9d13mr20104959pjb.0.1697115193204; Thu, 12 Oct 2023 05:53:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697115193; cv=none; d=google.com; s=arc-20160816; b=KusZE85u4+dvTq0TP8W72BKcU5NkD12QSMjeZIwa5lS0IKLSZlsnyFuprevfgzy5YB SieVYHaLOGn3omPPAIPW8BQa+k8JrPOsB6dBuqY/PZ2TaRcEvIpCNVeD0aYF0VjeLoGk 8gRK6KA7ylg2eWcrolkujgpV+Z3TbYDogPa0z0IhnJcrbCrFh0WGV4e7cizG6GPr6YVS 8vQ0aXqXZvBXZIqSbV1SB0nwmIYzxN3iZxegDexq2lcHmtukzTit4JAGDvX4x3ZLyNYc N8BNvlqF8JaOXE2mP5ZjLtJjjfBkoQ9u5uXYdP2plIoYdkOohd3Pr+pLEutkawdO94IU qGsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=+PwQdRauJ/B3bEzMpdv1PnLeYxdMgVWrNCHJMJ2z4bE=; fh=OD/1BEa6r/WRTtiLF6RjrYKGFHvvLBtIICUzNyJ6WQQ=; b=xOzM7+pTKfCiLU32OBukNcXu+rdfzBUHH0x0dsiZ7pMHghnstxNq+Qmu86PhEeluPn PtB4Sk0MgR2MOPWLTxSbckWixa21NSAlXdOiAxa/jbfiVq1MRpNlkZj5LOveujT30yam ATqAk+XusrqFzLqbXIaaiYtVmk/naYwkhLnqserowRxC6bKAPwhYqqNnnhwXqx8Rzqj1 F5y+rhx1ip00debTxnjM2K+L2BoowfssgQrL4IvRUIcZp7kihDjoOUh18L0bp8s1Md6P NfjAXN1E7/AlZg2jWQ6pBvSP6FVNbL62R0pjc3ra5u9E3BcMey/Px4Yllwh+tzF4zNZU a0GA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id ce13-20020a17090aff0d00b002792831692csi2195426pjb.58.2023.10.12.05.53.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 05:53:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id F174D836E47B; Thu, 12 Oct 2023 05:53:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347197AbjJLMxE (ORCPT + 99 others); Thu, 12 Oct 2023 08:53:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343867AbjJLMxA (ORCPT ); Thu, 12 Oct 2023 08:53:00 -0400 Received: from outbound-smtp51.blacknight.com (outbound-smtp51.blacknight.com [46.22.136.235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A890391 for ; Thu, 12 Oct 2023 05:52:56 -0700 (PDT) Received: from mail.blacknight.com (pemlinmail03.blacknight.ie [81.17.254.16]) by outbound-smtp51.blacknight.com (Postfix) with ESMTPS id 1AE37FB058 for ; Thu, 12 Oct 2023 13:52:55 +0100 (IST) Received: (qmail 5844 invoked from network); 12 Oct 2023 12:52:54 -0000 Received: from unknown (HELO techsingularity.net) (mgorman@techsingularity.net@[84.203.197.19]) by 81.17.254.9 with ESMTPSA (AES256-SHA encrypted, authenticated); 12 Oct 2023 12:52:54 -0000 Date: Thu, 12 Oct 2023 13:52:53 +0100 From: Mel Gorman To: "Huang, Ying" Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Arjan Van De Ven , Sudeep Holla , Andrew Morton , Vlastimil Babka , David Hildenbrand , Johannes Weiner , Dave Hansen , Michal Hocko , Pavel Tatashin , Matthew Wilcox , Christoph Lameter Subject: Re: [PATCH 02/10] cacheinfo: calculate per-CPU data cache size Message-ID: <20231012125253.fpeehd6362c5v2sj@techsingularity.net> References: <20230920061856.257597-1-ying.huang@intel.com> <20230920061856.257597-3-ying.huang@intel.com> <20231011122027.pw3uw32sdxxqjsrq@techsingularity.net> <87h6mwf3gf.fsf@yhuang6-desk2.ccr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <87h6mwf3gf.fsf@yhuang6-desk2.ccr.corp.intel.com> X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.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 (morse.vger.email [0.0.0.0]); Thu, 12 Oct 2023 05:53:11 -0700 (PDT) On Thu, Oct 12, 2023 at 08:08:32PM +0800, Huang, Ying wrote: > Mel Gorman writes: > > > On Wed, Sep 20, 2023 at 02:18:48PM +0800, Huang Ying wrote: > >> Per-CPU data cache size is useful information. For example, it can be > >> used to determine per-CPU cache size. So, in this patch, the data > >> cache size for each CPU is calculated via data_cache_size / > >> shared_cpu_weight. > >> > >> A brute-force algorithm to iterate all online CPUs is used to avoid > >> to allocate an extra cpumask, especially in offline callback. > >> > >> Signed-off-by: "Huang, Ying" > > > > It's not necessarily relevant to the patch, but at least the scheduler > > also stores some per-cpu topology information such as sd_llc_size -- the > > number of CPUs sharing the same last-level-cache as this CPU. It may be > > worth unifying this at some point if it's common that per-cpu > > information is too fine and per-zone or per-node information is too > > coarse. This would be particularly true when considering locking > > granularity, > > > >> Cc: Sudeep Holla > >> Cc: Andrew Morton > >> Cc: Mel Gorman > >> Cc: Vlastimil Babka > >> Cc: David Hildenbrand > >> Cc: Johannes Weiner > >> Cc: Dave Hansen > >> Cc: Michal Hocko > >> Cc: Pavel Tatashin > >> Cc: Matthew Wilcox > >> Cc: Christoph Lameter > >> --- > >> drivers/base/cacheinfo.c | 42 ++++++++++++++++++++++++++++++++++++++- > >> include/linux/cacheinfo.h | 1 + > >> 2 files changed, 42 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c > >> index cbae8be1fe52..3e8951a3fbab 100644 > >> --- a/drivers/base/cacheinfo.c > >> +++ b/drivers/base/cacheinfo.c > >> @@ -898,6 +898,41 @@ static int cache_add_dev(unsigned int cpu) > >> return rc; > >> } > >> > >> +static void update_data_cache_size_cpu(unsigned int cpu) > >> +{ > >> + struct cpu_cacheinfo *ci; > >> + struct cacheinfo *leaf; > >> + unsigned int i, nr_shared; > >> + unsigned int size_data = 0; > >> + > >> + if (!per_cpu_cacheinfo(cpu)) > >> + return; > >> + > >> + ci = ci_cacheinfo(cpu); > >> + for (i = 0; i < cache_leaves(cpu); i++) { > >> + leaf = per_cpu_cacheinfo_idx(cpu, i); > >> + if (leaf->type != CACHE_TYPE_DATA && > >> + leaf->type != CACHE_TYPE_UNIFIED) > >> + continue; > >> + nr_shared = cpumask_weight(&leaf->shared_cpu_map); > >> + if (!nr_shared) > >> + continue; > >> + size_data += leaf->size / nr_shared; > >> + } > >> + ci->size_data = size_data; > >> +} > > > > This needs comments. > > > > It would be nice to add a comment on top describing the limitation of > > CACHE_TYPE_UNIFIED here in the context of > > update_data_cache_size_cpu(). > > Sure. Will do that. > Thanks. > > The L2 cache could be unified but much smaller than a L3 or other > > last-level-cache. It's not clear from the code what level of cache is being > > used due to a lack of familiarity of the cpu_cacheinfo code but size_data > > is not the size of a cache, it appears to be the share of a cache a CPU > > would have under ideal circumstances. > > Yes. And it isn't for one specific level of cache. It's sum of per-CPU > shares of all levels of cache. But the calculation is inaccurate. More > details are in the below reply. > > > However, as it appears to also be > > iterating hierarchy then this may not be accurate. Caches may or may not > > allow data to be duplicated between levels so the value may be inaccurate. > > Thank you very much for pointing this out! The cache can be inclusive > or not. So, we cannot calculate the per-CPU slice of all-level caches > via adding them together blindly. I will change this in a follow-on > patch. > Please do, I would strongly suggest basing this on LLC only because it's the only value you can be sure of. This change is the only change that may warrant a respin of the series as the history will be somewhat confusing otherwise. -- Mel Gorman SUSE Labs