1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/tools/perf/arch/x86/util
Ian Rogers 0197da7aff perf pmu: Lazily compute default config
The default config is computed during creation of the PMU and may do
things like scanning sysfs, when the PMU may just be used as part of
scanning. Change default_config to perf_event_attr_init_default, a
callback that is used when a default config needs initializing. This
avoids holding onto the memory for a perf_event_attr and copying.

On a tigerlake laptop running the pmu-scan benchmark:

Before:
Running 'internals/pmu-scan' benchmark:
Computing performance of sysfs PMU event scan for 100 times
  Average core PMU scanning took: 28.780 usec (+- 0.503 usec)
  Average PMU scanning took: 283.480 usec (+- 18.471 usec)
Number of openat syscalls: 30,227

After:
Running 'internals/pmu-scan' benchmark:
Computing performance of sysfs PMU event scan for 100 times
  Average core PMU scanning took: 27.880 usec (+- 0.169 usec)
  Average PMU scanning took: 245.260 usec (+- 15.758 usec)
Number of openat syscalls: 28,914

Over 3 runs it is a nearly 12% reduction in execution time and a 4.3%
of openat calls.

Signed-off-by: Ian Rogers <irogers@google.com>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: James Clark <james.clark@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Yang Jihong <yangjihong1@huawei.com>
Cc: Will Deacon <will@kernel.org>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Jing Zhang <renyu.zj@linux.alibaba.com>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: John Garry <john.g.garry@oracle.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: coresight@lists.linaro.org
Link: https://lore.kernel.org/r/20231012175645.1849503-8-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2023-10-17 12:40:50 -07:00
..
archinsn.c tools/perf: Convert to insn_decode() 2021-03-15 12:41:26 +01:00
auxtrace.c perf pmu: Separate pmu and pmus 2023-05-27 09:41:39 -03:00
Build perf tool x86: Consolidate is_amd check into single function 2023-06-13 23:40:33 -03:00
cpuid.h perf tsc: Add arch TSC frequency information 2022-07-25 12:28:00 -03:00
dwarf-regs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
env.c perf tool x86: Fix perf_env memory leak 2023-06-14 18:19:06 -03:00
env.h perf tool x86: Consolidate is_amd check into single function 2023-06-13 23:40:33 -03:00
event.c perf map: Add accessors for ->pgoff and ->reloc 2023-04-06 22:12:40 -03:00
evlist.c perf parse-events x86: Avoid sorting uops_retired.slots 2023-08-03 17:01:27 -03:00
evsel.c perf parse-events x86: Avoid sorting uops_retired.slots 2023-08-03 17:01:27 -03:00
evsel.h perf record: Support sample-read topdown metric group for hybrid platforms 2022-06-03 21:30:10 +02:00
header.c perf tsc: Add arch TSC frequency information 2022-07-25 12:28:00 -03:00
intel-bts.c perf pmu: Separate pmu and pmus 2023-05-27 09:41:39 -03:00
intel-pt.c perf pmu: Lazily compute default config 2023-10-17 12:40:50 -07:00
iostat.c perf x86 iostat: Use zfree() to reduce chances of use after free 2023-04-12 09:59:19 -03:00
kvm-stat.c perf evsel: Introduce evsel__name_is() method to check if the evsel name is equal to a given string 2023-04-24 14:28:11 -03:00
machine.c tools: Fix off-by 1 relative directory includes 2020-03-06 08:36:46 -03:00
mem-events.c perf pmu: Remove logic for PMU name being NULL 2023-08-25 10:22:16 -03:00
perf_regs.c perf parse-regs: Move out arch specific header from util/perf_regs.h 2023-08-16 08:52:45 -03:00
pmu.c perf pmu: Lazily compute default config 2023-10-17 12:40:50 -07:00
topdown.c perf pmu: Separate pmu and pmus 2023-05-27 09:41:39 -03:00
topdown.h perf stat: Add TopdownL1 metric as a default if present 2023-02-19 08:07:19 -03:00
tsc.c perf arch x86: Add missing stdlib.h to get free() prototype 2022-10-27 16:37:26 -03:00
unwind-libdw.c perf parse-regs: Move out arch specific header from util/perf_regs.h 2023-08-16 08:52:45 -03:00
unwind-libunwind.c perf unwind: Fix libunwind build failure on i386 systems 2019-09-26 21:59:38 +02:00