Currently, there is no way to measure lcore polling busyness in a passive way, without any modifications to the application. This patchset adds a new EAL API that will be able to passively track core polling busyness. As part of the set, new telemetry endpoints are added to read the generate metrics.
--- v4: * Fix doc build * Rename timestamp macro to RTE_LCORE_TELEMETRY_TIMESTAMP * Make enable/disable read and write atomic * Change rte_lcore_poll_busyness_enabled_set() param to bool * Move mem alloc from enable/disable to init/cleanup * Other minor fixes v3: * Fix missing renaming to poll busyness * Fix clang compilation * Fix arm compilation v2: * Use rte_get_tsc_hz() to adjust the telemetry period * Rename to reflect polling busyness vs general busyness * Fix segfault when calling telemetry timestamp from an unregistered non-EAL thread. * Minor cleanup Anatoly Burakov (2): eal: add lcore poll busyness telemetry eal: add cpuset lcore telemetry entries Kevin Laatz (1): doc: add howto guide for lcore poll busyness config/meson.build | 1 + config/rte_config.h | 1 + doc/guides/howto/index.rst | 1 + doc/guides/howto/lcore_poll_busyness.rst | 92 ++++++ lib/bbdev/rte_bbdev.h | 17 +- lib/compressdev/rte_compressdev.c | 2 + lib/cryptodev/rte_cryptodev.h | 2 + lib/distributor/rte_distributor.c | 21 +- lib/distributor/rte_distributor_single.c | 14 +- lib/dmadev/rte_dmadev.h | 15 +- lib/eal/common/eal_common_lcore_telemetry.c | 346 ++++++++++++++++++++ lib/eal/common/meson.build | 1 + lib/eal/include/rte_lcore.h | 90 +++++ lib/eal/linux/eal.c | 3 + lib/eal/meson.build | 3 + lib/eal/version.map | 8 + lib/ethdev/rte_ethdev.h | 2 + lib/eventdev/rte_eventdev.h | 10 +- lib/rawdev/rte_rawdev.c | 6 +- lib/regexdev/rte_regexdev.h | 5 +- lib/ring/rte_ring_elem_pvt.h | 1 + meson_options.txt | 2 + 22 files changed, 619 insertions(+), 24 deletions(-) create mode 100644 doc/guides/howto/lcore_poll_busyness.rst create mode 100644 lib/eal/common/eal_common_lcore_telemetry.c -- 2.31.1