Messages in this thread | | | From | Ian Rogers <> | Date | Wed, 23 Aug 2023 01:12:27 -0700 | Subject | Re: [PATCH v1 00/25] Lazily load PMU data |
| |
On Wed, Aug 23, 2023 at 1:08 AM Ian Rogers <irogers@google.com> wrote: > > Lazily load PMU data both from sysfs and json files. Reorganize > json data to be more PMU oriented to facilitate this, for > example, json data is now sorted into arrays for their PMU. > > In refactoring the code some changes were made to get rid of maximum > encoding sizes for events (256 bytes), with input files being directly > passed to the lex generated code. There is also a small event parse > error message improvement. > > Some results from an Intel tigerlake laptop running Debian: > > Binary size reduction of 1.4% or 143,264 bytes because the PMU > name no longer appears in the string. > > stat -e cpu/cycles/ minor faults reduced from 1733 to 1667, open calls reduced > from 171 to 94. > > stat default minor faults reduced from 1085 to 1727, open calls reduced > from 654 to 343.
s/1085/1805/
Thanks, Ian
> > Average PMU scanning reduced from 4720.641usec to 2927.293usec. > Average core PMU scanning reduced from 1004.658usec to 232.668usec > (4.3x faster). > > Ian Rogers (25): > perf script ibs: Remove unused include > perf pmu: Avoid a path name copy > perf pmu: Move perf_pmu__set_format to pmu.y > perf pmu: Reduce scope of perf_pmu_error > perf pmu: Avoid passing format list to perf_pmu__config_terms > perf pmu: Avoid passing format list to perf_pmu__format_type > perf pmu: Avoid passing format list to perf_pmu__format_bits > perf pmu: Pass PMU rather than aliases and format > perf pmu: Make the loading of formats lazy > perf pmu: Abstract alias/event struct > perf pmu-events: Add extra underscore to function names > perf jevents: Group events by PMU > perf parse-events: Improve error message for double setting > perf s390 s390_cpumcfdg_dump: Don't scan all PMUs > perf pmu-events: Reduce processed events by passing PMU > perf pmu-events: Add pmu_events_table__find_event > perf pmu: Parse sysfs events directly from a file > perf pmu: Prefer passing pmu to aliases list > perf pmu: Merge json events with sysfs at load time > perf pmu: Cache json events table > perf pmu: Lazily add json events > perf pmu: Scan type early to fail an invalid PMU quickly > perf pmu: Be lazy about loading event info files from sysfs > perf pmu: Lazily load sysfs aliases > perf jevents: Sort strings in the big C string to reduce faults > > tools/perf/arch/x86/util/intel-pt.c | 39 +- > tools/perf/bench/pmu-scan.c | 8 +- > tools/perf/pmu-events/empty-pmu-events.c | 49 +- > tools/perf/pmu-events/jevents.py | 319 +++++++-- > tools/perf/pmu-events/pmu-events.h | 15 +- > tools/perf/tests/parse-events.c | 2 +- > tools/perf/tests/pmu-events.c | 183 ++--- > tools/perf/tests/pmu.c | 76 +- > tools/perf/util/amd-sample-raw.c | 1 - > tools/perf/util/metricgroup.c | 10 +- > tools/perf/util/parse-events.c | 91 ++- > tools/perf/util/parse-events.h | 3 +- > tools/perf/util/pmu.c | 872 +++++++++++++++-------- > tools/perf/util/pmu.h | 110 ++- > tools/perf/util/pmu.y | 32 +- > tools/perf/util/pmus.c | 230 ++---- > tools/perf/util/s390-sample-raw.c | 50 +- > 17 files changed, 1251 insertions(+), 839 deletions(-) > > -- > 2.42.0.rc1.204.g551eb34607-goog >
| |