【发布时间】:2020-12-18 13:06:18
【问题描述】:
当我在我的 Linux 系统上运行 perf list 时,我会得到一长串可用的性能事件。
是否可以使用perf_event_open(2) 以编程方式从另一个进程中列出和使用这些事件?也就是说,如何从另一个进程中获取此列表并确定要填充到perf_event_attr 中的相应值?
我不是在寻找使用另一个第三方事件列表的解决方案,例如。 libpfm4 或 jevents。我知道可以从/sys/devices/cpu/events/ 中的文件(以及其他事件类型的类似文件)中重建一些事件,但这些只是perf list 显示的事件的一小部分。
【问题讨论】:
-
性能列表有几个事件集,检查
perf list -h:hw|sw|cache|tracepoint|pmu|sdt|event_glob。大多数事件来自缓存和 pmu 集。您可以从mirrors.edge.kernel.org/pub/linux/kernel/tools/perf 下载性能源并检查函数cmd_list from builtin-list.c file,然后打印_pmu_events。有些是从 /sys/bus/event_source/devices/cpu/events 扫描的,有些是从文件pmu-events/pmu-events.c的内部列表中打印出来的
标签: linux performance perf intel-pmu