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 <tduszyn...@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 <ndabilpu...@marvell.com> > M: Pavan Nikhilesh <pbhagavat...@marvell.com> > F: lib/node/ > > +PMU - EXPERIMENTAL > +M: Tomasz Duszynski <tduszyn...@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.