[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250512215929.2098240-1-ctshao@google.com>
Date: Mon, 12 May 2025 14:50:29 -0700
From: Chun-Tse Shao <ctshao@...gle.com>
To: linux-kernel@...r.kernel.org
Cc: Chun-Tse Shao <ctshao@...gle.com>, peterz@...radead.org, mingo@...hat.com,
acme@...nel.org, namhyung@...nel.org, mark.rutland@....com,
alexander.shishkin@...ux.intel.com, jolsa@...nel.org, irogers@...gle.com,
adrian.hunter@...el.com, kan.liang@...ux.intel.com, james.clark@...aro.org,
howardchu95@...il.com, weilin.wang@...el.com, yeoreum.yun@....com,
linux@...blig.org, linux-perf-users@...r.kernel.org
Subject: [PATCH v3 0/3] Fix incorrect counts when count the same uncore event
multiple times
Let's take a look an example, the machine is SKX with 6 IMC devices.
perf stat -e clockticks,clockticks -I 1000
# time counts unit events
1.001127430 6,901,503,174 uncore_imc_0/clockticks/
1.001127430 3,940,896,301 uncore_imc_0/clockticks/
2.002649722 988,376,876 uncore_imc_0/clockticks/
2.002649722 988,376,141 uncore_imc_0/clockticks/
3.004071319 1,000,292,675 uncore_imc_0/clockticks/
3.004071319 1,000,294,160 uncore_imc_0/clockticks/
1) The events name should not be uniquified.
2) The initial count for the first `clockticks` is doubled.
3) Subsequent count only report for the first IMC device.
The first patch fixes 1) and 3), and the second patch fixes 2).
After these fix:
perf stat -e clockticks,clockticks -I 1000
# time counts unit events
1.001127586 4,126,938,857 clockticks
1.001127586 4,121,564,277 clockticks
2.001686014 3,953,806,350 clockticks
2.001686014 3,953,809,541 clockticks
3.003121403 4,137,750,252 clockticks
3.003121403 4,137,749,048 clockticks
I also tested `-A`, `--per-socket`, `--per-die` and `--per-core`, all
looks good.
Ian tested `hybrid-merge` and `hwmon`, all looks good as well.
Chun-Tse Shao (1):
perf test: Add stat uniquifying test
Ian Rogers (2):
perf evlist: Make uniquifying counter names consistent
perf parse-events: Use wildcard processing to set an event to merge
into
tools/perf/builtin-record.c | 7 +-
tools/perf/builtin-top.c | 7 +-
.../tests/shell/stat+event_uniquifying.sh | 69 ++++++++
tools/perf/util/evlist.c | 66 +++++---
tools/perf/util/evlist.h | 3 +-
tools/perf/util/evsel.c | 119 ++++++++++++-
tools/perf/util/evsel.h | 11 +-
tools/perf/util/parse-events.c | 90 +++++++---
tools/perf/util/stat-display.c | 160 ++----------------
tools/perf/util/stat.c | 40 +----
10 files changed, 332 insertions(+), 240 deletions(-)
create mode 100755 tools/perf/tests/shell/stat+event_uniquifying.sh
--
v3: Rebase with tmp.perf-tools-next. Since most of the conflicts are from
lore.kernel.org/20250403194337.40202-5-irogers@...gle.com, tested v3
patches with:
perf stat -A -C 0,4-5,8 -e "instructions/cpu=0/,l1d-misses/cpu=4,cpu=5/,inst_retired.any/cpu=8/,cycles" -a sleep 0.1
Performance counter stats for 'system wide':
CPU0 682,860 instructions/cpu=0/ # 0.27 insn per cycle
CPU4 53,774 l1d-misses
CPU5 18,725 l1d-misses
CPU8 608,698 inst_retired.any/cpu=8/
CPU0 2,574,325 cycles
CPU4 4,267,115 cycles
CPU5 1,741,536 cycles
CPU8 1,969,547 cycles
0.102746958 seconds time elapsed
v2: lore.kernel.org/20250327225651.642965-1-ctshao@...gle.com
- Fixes for `hwmon` and `--hybrid-merge`.
- Add a test for event uniquifying.
v1: lore.kernel.org/20250326234758.480431-1-ctshao@...gle.com
2.49.0.1045.g170613ef41-goog
Powered by blists - more mailing lists