From patchwork Thu Dec 30 07:19:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 12701263 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D7E1FC4332F for ; Thu, 30 Dec 2021 07:23:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=qI3P45VQdyRSlwkZHkhEP03qwtfaRVcqcWCoXpRFIx4=; b=b4WfgEQjPvWskkz7GWRH/LdWlL KnDGscgFZHOnaj1dyP/A9vuyecwGO/2iC0CMcCpL5ztrEsXp6fn1TJ2P6TxxMDgnVY8kY85KSKJzc 5H3MDdjglxdBJ7Vvq+neexiDYgK4LIdOpkTeH/WsNvOGrmJxhsyj+L3YIDFCRdalHvjneplx6wkxF MjyOcsMY/C7kp//MPImfNtOU/62mxghBvGpn/ZeJOerbY3NYVh28VXvtgx9KnsDsFSIoB119GMw/z 7bEIxuXf1g2nHUNhKUWpMRbZyexV8H+UMdk+e1v8Db6DbuoeUi+SsNfPwkE5G+lJxCoiKeWJjihK4 NpPp4ddQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n2pkj-003jnn-NS; Thu, 30 Dec 2021 07:21:34 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n2pjz-003jS3-Ka for linux-arm-kernel@lists.infradead.org; Thu, 30 Dec 2021 07:20:49 +0000 Received: by mail-yb1-xb49.google.com with SMTP id t184-20020a2546c1000000b006008b13c80bso42274544yba.1 for ; Wed, 29 Dec 2021 23:20:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=HQ0F4Wkpc2hZGLs9o4VVEd71gbRETuZn+IEXms79S7Y=; b=FD7ZPImddyL2cAMf3QezttcpbIzDG2J9TwTaFHD3Ruo2dwTWNKkd0Rk3IM7BiKFLlj H8VJPHGgAB+zmaij4pvzxfZaRiSM5VtLO6B+rAJYuzuYfFA9B+bpRODDbGbqHsPdUeik JpToHcLcRG4IusO6rxUxZd8yjkhEBjfFf20SHdgp3wpNbIBtz6vs26epU6ckOpQ/UcIS 9MA6dPnFgqp0+Tc83Xi/mWAsFXUQ8Y4jawSqtzba5jj5zkFbL+ue/lnj7vQWRqeNix8n L36jLP7y2ciGmq6/IaAzgWEsrPk1+K+o78N+KAdNdvmihM5jboVIdbSd+/HoOO2W4Bee dIUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=HQ0F4Wkpc2hZGLs9o4VVEd71gbRETuZn+IEXms79S7Y=; b=r4Xc10eTMNt8DxFdcX9Fk0NmJVUzQD8o3+6pQOP7Oj7L/Ot4/jOGvmCSl4qq7Xcsp8 XQrD02Dnt/Q5bz4haTCixnlDYs/Bv/FTDF/K/6OPzjQnRZfmyHL+zWprtbIVgic/VY3n TcwS7zFiT6okjiNKBzaGksAZkWWhho1ep7AfRzpv98A5FVxmF6c9VdNwbKynwfGAe8wL X2BaS7GJqLMmhrvzLhW4buUph/lD0PAOxEA8/cuts2p0dGQrvWA9zXPCrdfJI5bWcsJo TcLNu59ZuYMdxAtIxbTyYe3y5MxU+VVstDwA2LlACK2p4YU5KaPK6DMZn2IDmYeTBPCQ eMaQ== X-Gm-Message-State: AOAM531Uq+oQDLk06v2hSq/Isw0VIbfRUVUtIb6oK+qaB77n5nHxR1oF UZl6HVNhAHZ2lJBgCNOLmfkEGUJZeMud X-Google-Smtp-Source: ABdhPJwYc6sI6/tU+488uQ6TPKBQHt6h6pGnihwygMdw5SVRUcXB7K6/76412r9nXLTCLzEk+BdjcwqsuW62 X-Received: from irogers.svl.corp.google.com ([2620:15c:2cd:202:31c4:9539:dba1:a82b]) (user=irogers job=sendgmr) by 2002:a25:d78f:: with SMTP id o137mr21538140ybg.19.1640848846260; Wed, 29 Dec 2021 23:20:46 -0800 (PST) Date: Wed, 29 Dec 2021 23:19:45 -0800 In-Reply-To: <20211230072030.302559-1-irogers@google.com> Message-Id: <20211230072030.302559-5-irogers@google.com> Mime-Version: 1.0 References: <20211230072030.302559-1-irogers@google.com> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog Subject: [PATCH v3 03/48] perf stat: Correct aggregation CPU map From: Ian Rogers To: Andi Kleen , Jiri Olsa , Namhyung Kim , John Garry , Kajol Jain , "Paul A . Clarke" , Arnaldo Carvalho de Melo , Riccardo Mancini , Kan Liang , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Vineet Singh , James Clark , Mathieu Poirier , Suzuki K Poulose , Mike Leach , Leo Yan , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, zhengjun.xing@intel.com Cc: eranian@google.com, Ian Rogers X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211229_232047_707851_D8849054 X-CRM114-Status: GOOD ( 14.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Switch the perf_cpu_map in aggr_update_shadow from the evlist to the counter's cpu map, so the index is appropriate. This addresses a problem where uncore counts, with a cpumap like: $ cat /sys/devices/uncore_imc_0/cpumask 0,18 Don't aggregate counts in CPUs based on the index of those values in the cpumap (0 and 1) but on the actual CPU (0 and 18). Thereby correcting metric calculations in per-socket mode for counters without a full cpumask. On a SkylakeX with a tweaked DRAM_BW_Use metric, to remove unnecessary scaling, this gives: Before: $ /perf stat --per-socket -M DRAM_BW_Use -I 1000 1.001102293 S0 1 27.01 MiB uncore_imc/cas_count_write/ # 103.00 DRAM_BW_Use 1.001102293 S0 1 30.22 MiB uncore_imc/cas_count_read/ 1.001102293 S0 1 1,001,102,293 ns duration_time 1.001102293 S1 1 20.10 MiB uncore_imc/cas_count_write/ # 0.00 DRAM_BW_Use 1.001102293 S1 1 32.74 MiB uncore_imc/cas_count_read/ 1.001102293 S1 0 ns duration_time 2.003517973 S0 1 83.04 MiB uncore_imc/cas_count_write/ # 920.00 DRAM_BW_Use 2.003517973 S0 1 145.95 MiB uncore_imc/cas_count_read/ 2.003517973 S0 1 1,002,415,680 ns duration_time 2.003517973 S1 1 302.45 MiB uncore_imc/cas_count_write/ # 0.00 DRAM_BW_Use 2.003517973 S1 1 290.99 MiB uncore_imc/cas_count_read/ 2.003517973 S1 0 ns duration_time After: $ perf stat --per-socket -M DRAM_BW_Use -I 1000 1.001080840 S0 1 24.96 MiB uncore_imc/cas_count_write/ # 54.00 DRAM_BW_Use 1.001080840 S0 1 33.64 MiB uncore_imc/cas_count_read/ 1.001080840 S0 1 1,001,080,840 ns duration_time 1.001080840 S1 1 42.43 MiB uncore_imc/cas_count_write/ # 84.00 DRAM_BW_Use 1.001080840 S1 1 47.05 MiB uncore_imc/cas_count_read/ 1.001080840 S1 0 ns duration_time Signed-off-by: Ian Rogers --- tools/perf/util/stat-display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c index 588601000f3f..b0fa81ffce61 100644 --- a/tools/perf/util/stat-display.c +++ b/tools/perf/util/stat-display.c @@ -526,7 +526,7 @@ static void aggr_update_shadow(struct perf_stat_config *config, evlist__for_each_entry(evlist, counter) { val = 0; for (cpu = 0; cpu < evsel__nr_cpus(counter); cpu++) { - s2 = config->aggr_get_id(config, evlist->core.cpus, cpu); + s2 = config->aggr_get_id(config, evsel__cpus(counter), cpu); if (!cpu_map__compare_aggr_cpu_id(s2, id)) continue; val += perf_counts(counter->counts, cpu, 0)->val;