我正在尝试通过linux/perf_event.h手动使用性能测量。作为引用:我按照ozlabs.org/~anton/junkcode/perf_events_example1.c中的描述进行类似操作

我想阅读一些特定的性能计数器事件,例如,我想拥有该事件
UOPS_ISSUED.ANY,其中Cmask = 1和Inv = 1(计数停止周期)。

所以我就有了attr.type = PERF_TYPE_RAW和attr.config = 0x010E。但是,在哪里可以指定Cmask和Inv?

最佳答案

Cmask和Inv是特定于体系结构的属性。我假设您使用的是x86。然后,这些属性位于arch/x86/kernel/cpu/perf_event.h中的x86_pmu_config结构中

您可以使用在同一文件中定义的X86_CONFIG宏为attr.config创建足够的值。例如:

X86_CONFIG(.event = 0xb1,.umask = 0x3f,.inv = 1,.cmask = 1);

如此link中所述。

关于c++ - 在perf_event中设置cmask/inv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29983505/

10-10 18:04