[PATCH v6 1/4] lib: add generic support for reading PMU events
Tyler Retzlaff
roretzla at linux.microsoft.com
Fri Jan 20 19:29:31 CET 2023
On Fri, Jan 20, 2023 at 12:39:12AM +0100, Tomasz Duszynski wrote:
> Add support for programming PMU counters and reading their values
> in runtime bypassing kernel completely.
>
> This is especially useful in cases where CPU cores are isolated
> (nohz_full) i.e run dedicated tasks. In such cases one cannot use
> standard perf utility without sacrificing latency and performance.
>
> Signed-off-by: Tomasz Duszynski <tduszynski at marvell.com>
> ---
> MAINTAINERS | 5 +
> app/test/meson.build | 4 +
> app/test/test_pmu.c | 42 +++
> doc/api/doxy-api-index.md | 3 +-
> doc/api/doxy-api.conf.in | 1 +
> doc/guides/prog_guide/profile_app.rst | 8 +
> doc/guides/rel_notes/release_23_03.rst | 7 +
> lib/meson.build | 1 +
> lib/pmu/meson.build | 13 +
> lib/pmu/pmu_private.h | 29 ++
> lib/pmu/rte_pmu.c | 436 +++++++++++++++++++++++++
> lib/pmu/rte_pmu.h | 206 ++++++++++++
> lib/pmu/version.map | 19 ++
> 13 files changed, 773 insertions(+), 1 deletion(-)
> create mode 100644 app/test/test_pmu.c
> create mode 100644 lib/pmu/meson.build
> create mode 100644 lib/pmu/pmu_private.h
> create mode 100644 lib/pmu/rte_pmu.c
> create mode 100644 lib/pmu/rte_pmu.h
> create mode 100644 lib/pmu/version.map
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9a0f416d2e..9f13eafd95 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1697,6 +1697,11 @@ M: Nithin Dabilpuram <ndabilpuram at marvell.com>
> M: Pavan Nikhilesh <pbhagavatula at marvell.com>
> F: lib/node/
>
> +PMU - EXPERIMENTAL
> +M: Tomasz Duszynski <tduszynski at marvell.com>
> +F: lib/pmu/
> +F: app/test/test_pmu*
> +
>
> Test Applications
> -----------------
> diff --git a/app/test/meson.build b/app/test/meson.build
> index f34d19e3c3..b2c2a618b1 100644
> --- a/app/test/meson.build
> +++ b/app/test/meson.build
> @@ -360,6 +360,10 @@ if dpdk_conf.has('RTE_LIB_METRICS')
> test_sources += ['test_metrics.c']
> fast_tests += [['metrics_autotest', true, true]]
> endif
> +if is_linux
> + test_sources += ['test_pmu.c']
> + fast_tests += [['pmu_autotest', true, true]]
> +endif
traditionally we don't conditionally include tests at the meson.build
level, instead we run all tests and have them skip when executed for
unsupported exec environments.
you can take a look at test_eventdev.c as an example for a test that is
skipped on windows, i'm sure it could be adapted to skip on freebsd if
you aren't supporting it.
More information about the dev
mailing list