[PATCH v10 0/4] add support for self monitoring
Tomasz Duszynski
tduszynski at marvell.com
Mon Feb 13 12:31:52 CET 2023
This series adds self monitoring support i.e allows to configure and
read performance measurement unit (PMU) counters in runtime without
using perf utility. This has certain advantages when application runs on
isolated cores running dedicated tasks.
Events can be read directly using rte_pmu_read() or using dedicated
tracepoint rte_eal_trace_pmu_read(). The latter will cause events to be
stored inside CTF file.
By design, all enabled events are grouped together and the same group
is attached to lcores that use self monitoring funtionality.
Events are enabled by names, which need to be read from standard
location under sysfs i.e
/sys/bus/event_source/devices/PMU/events
where PMU is a core pmu i.e one measuring cpu events. As of today
raw events are not supported.
v10:
- check permissions before using counters
- do not use internal symbols in exported functions
- address review comments
v9:
- fix 'maybe-uninitialized' warning reported by CI
v8:
- just rebase series
v7:
- use per-lcore event group instead of global table index by lcore-id
- don't add pmu_autotest to fast tests because due to lack of suported on
every arch
v6:
- move codebase to the separate library
- address review comments
v5:
- address review comments
- fix sign extension while reading pmu on x86
- fix regex mentioned in doc
- various minor changes/improvements here and there
v4:
- fix freeing mem detected by debug_autotest
v3:
- fix shared build
v2:
- fix problems reported by test build infra
Tomasz Duszynski (4):
lib: add generic support for reading PMU events
pmu: support reading ARM PMU events in runtime
pmu: support reading Intel x86_64 PMU events in runtime
eal: add PMU support to tracing library
MAINTAINERS | 5 +
app/test/meson.build | 2 +
app/test/test_pmu.c | 68 +++
app/test/test_trace_perf.c | 10 +
doc/api/doxy-api-index.md | 3 +-
doc/api/doxy-api.conf.in | 1 +
doc/guides/prog_guide/profile_app.rst | 17 +
doc/guides/prog_guide/trace_lib.rst | 32 ++
doc/guides/rel_notes/release_23_03.rst | 7 +
lib/eal/common/eal_common_trace.c | 13 +-
lib/eal/common/eal_common_trace_points.c | 5 +
lib/eal/include/rte_eal_trace.h | 13 +
lib/eal/meson.build | 3 +
lib/eal/version.map | 1 +
lib/meson.build | 1 +
lib/pmu/meson.build | 21 +
lib/pmu/pmu_arm64.c | 94 ++++
lib/pmu/pmu_private.h | 32 ++
lib/pmu/rte_pmu.c | 521 +++++++++++++++++++++++
lib/pmu/rte_pmu.h | 232 ++++++++++
lib/pmu/rte_pmu_pmc_arm64.h | 30 ++
lib/pmu/rte_pmu_pmc_x86_64.h | 24 ++
lib/pmu/version.map | 16 +
23 files changed, 1149 insertions(+), 2 deletions(-)
create mode 100644 app/test/test_pmu.c
create mode 100644 lib/pmu/meson.build
create mode 100644 lib/pmu/pmu_arm64.c
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/rte_pmu_pmc_arm64.h
create mode 100644 lib/pmu/rte_pmu_pmc_x86_64.h
create mode 100644 lib/pmu/version.map
--
2.34.1
More information about the dev
mailing list