From: Ravi Bangoria <ravi.bangoria@amd.com> To: <peterz@infradead.org>, <acme@kernel.org> Cc: <ravi.bangoria@amd.com>, <rrichter@amd.com>, <mingo@redhat.com>, <mark.rutland@arm.com>, <jolsa@kernel.org>, <namhyung@kernel.org>, <tglx@linutronix.de>, <bp@alien8.de>, <irogers@google.com>, <yao.jin@linux.intel.com>, <james.clark@arm.com>, <leo.yan@linaro.org>, <kan.liang@linux.intel.com>, <ak@linux.intel.com>, <eranian@google.com>, <like.xu.linux@gmail.com>, <x86@kernel.org>, <linux-perf-users@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <sandipan.das@amd.com>, <ananth.narayan@amd.com>, <kim.phillips@amd.com>, <santosh.shukla@amd.com> Subject: [PATCH v2 0/8] perf/amd: Zen4 IBS extensions support Date: Mon, 9 May 2022 10:19:06 +0530 [thread overview] Message-ID: <20220509044914.1473-1-ravi.bangoria@amd.com> (raw) IBS support has been enhanced with two new features in upcoming uarch: 1. DataSrc extension and 2. L3 Miss Filtering capability. Both are indicated by CPUID_Fn8000001B_EAX bit 11. DataSrc extension provides additional data source details for tagged load/store operations. Add support for these new bits in perf report/ script raw-dump. IBS L3 miss filtering works by tagging an instruction on IBS counter overflow and generating an NMI if the tagged instruction causes an L3 miss. Samples without an L3 miss are discarded and counter is reset with random value (between 1-15 for fetch pmu and 1-127 for op pmu). This helps in reducing sampling overhead when user is interested only in such samples. One of the use case of such filtered samples is to feed data to page-migration daemon in tiered memory systems. Add support for L3 miss filtering in IBS driver via new pmu attribute "l3missonly". Example usage: # perf record -a -e ibs_op/l3missonly=1/ --raw-samples sleep 5 # perf report -D Some important points to keep in mind while using L3 miss filtering: 1. Hw internally reset sampling period when tagged instruction does not cause L3 miss. But there is no way to reconstruct aggregated sampling period when this happens. 2. L3 miss is not the actual event being counted. Rather, IBS will count fetch, cycles or uOps depending on the configuration. Thus sampling period have no direct connection to L3 misses. 1st causes sampling period skew. Thus, I've added warning message at perf record: # perf record -c 10000 -C 0 -e ibs_op/l3missonly=1/ WARNING: Hw internally resets sampling period when L3 Miss Filtering is enabled and tagged operation does not cause L3 Miss. This causes sampling period skew. User can configure smaller sampling period to get more samples while using l3missonly. v1: https://lore.kernel.org/r/20220425044323.2830-1-ravi.bangoria@amd.com v1->v2: - patch 1 and 2 are new. 1st patch passes on return value of pmu init functions. 2nd patch refactors pmu attribute code by using ->is_visible() callback. - Patch 3 and 4 now also uses ->is_visible() callback for pmu format and capability attributes respectively. - Other minor improvements suggested by Robert Ravi Bangoria (8): perf/amd/ibs: Cascade pmu init functions' return value perf/amd/ibs: Use ->is_visible callback for dynamic attributes perf/amd/ibs: Add support for L3 miss filtering perf/amd/ibs: Advertise zen4_ibs_extensions as pmu capability attribute perf record ibs: Warn about sampling period skew perf header: Parse non-cpu pmu capabilities perf script ibs: Support new IBS bits in raw trace dump perf ibs: Fix comment arch/x86/events/amd/ibs.c | 191 +++++++++++++--- arch/x86/include/asm/amd-ibs.h | 18 +- arch/x86/include/asm/perf_event.h | 3 + tools/arch/x86/include/asm/amd-ibs.h | 18 +- .../Documentation/perf.data-file-format.txt | 18 ++ tools/perf/arch/x86/util/evsel.c | 34 +++ tools/perf/util/amd-sample-raw.c | 68 +++++- tools/perf/util/env.c | 48 +++- tools/perf/util/env.h | 11 + tools/perf/util/evsel.c | 7 + tools/perf/util/evsel.h | 1 + tools/perf/util/header.c | 211 ++++++++++++++++++ tools/perf/util/header.h | 1 + tools/perf/util/pmu.c | 15 +- tools/perf/util/pmu.h | 2 + 15 files changed, 586 insertions(+), 60 deletions(-) -- 2.27.0
next reply other threads:[~2022-05-09 4:55 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-09 4:49 Ravi Bangoria [this message] 2022-05-09 4:49 ` [PATCH v2 1/8] perf/amd/ibs: Cascade pmu init functions' return value Ravi Bangoria 2022-05-11 19:47 ` [tip: perf/core] " tip-bot2 for Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 2/8] perf/amd/ibs: Use ->is_visible callback for dynamic attributes Ravi Bangoria 2022-05-11 19:47 ` [tip: perf/core] " tip-bot2 for Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 3/8] perf/amd/ibs: Add support for L3 miss filtering Ravi Bangoria 2022-05-09 12:05 ` Peter Zijlstra 2022-05-09 12:35 ` Ravi Bangoria 2022-05-09 13:07 ` Peter Zijlstra 2022-05-11 19:46 ` [tip: perf/core] " tip-bot2 for Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 4/8] perf/amd/ibs: Advertise zen4_ibs_extensions as pmu capability attribute Ravi Bangoria 2022-05-11 19:46 ` [tip: perf/core] " tip-bot2 for Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 5/8] perf record ibs: Warn about sampling period skew Ravi Bangoria 2022-05-16 13:22 ` Arnaldo Carvalho de Melo 2022-05-16 13:27 ` Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 6/8] perf header: Parse non-cpu pmu capabilities Ravi Bangoria 2022-05-16 4:15 ` Ravi Bangoria 2022-05-16 12:53 ` Arnaldo Carvalho de Melo 2022-05-16 13:28 ` Arnaldo Carvalho de Melo 2022-05-16 13:46 ` Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 7/8] perf script ibs: Support new IBS bits in raw trace dump Ravi Bangoria 2022-05-16 13:29 ` Arnaldo Carvalho de Melo 2022-05-16 13:47 ` Ravi Bangoria 2022-05-09 4:49 ` [PATCH v2 8/8] perf ibs: Fix comment Ravi Bangoria 2022-05-11 19:46 ` [tip: perf/core] perf/ibs: " tip-bot2 for Ravi Bangoria
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220509044914.1473-1-ravi.bangoria@amd.com \ --to=ravi.bangoria@amd.com \ --cc=acme@kernel.org \ --cc=ak@linux.intel.com \ --cc=ananth.narayan@amd.com \ --cc=bp@alien8.de \ --cc=eranian@google.com \ --cc=irogers@google.com \ --cc=james.clark@arm.com \ --cc=jolsa@kernel.org \ --cc=kan.liang@linux.intel.com \ --cc=kim.phillips@amd.com \ --cc=leo.yan@linaro.org \ --cc=like.xu.linux@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=peterz@infradead.org \ --cc=rrichter@amd.com \ --cc=sandipan.das@amd.com \ --cc=santosh.shukla@amd.com \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ --cc=yao.jin@linux.intel.com \ --subject='Re: [PATCH v2 0/8] perf/amd: Zen4 IBS extensions support' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).