【问题标题】:What really are options of the "read_format" attribute of the "perf_event_attr" structure?“perf_event_attr”结构的“read_format”属性的真正选项是什么?
【发布时间】:2020-05-29 07:43:18
【问题描述】:
我目前正在使用perf_event_open 系统调用(在 Linux 系统上),并且我尝试了解此系统调用的配置参数,该参数由 struct perf_event_attr 结构给出。
这与read_format 选项有关。
有没有人可以在这个系统调用的手册页上看到,这个参数与这个调用的输出有关。
但我不明白每个可能的论点都可以做什么。
尤其是这两种可能性:
- PERF_FORMAT_TOTAL_TIME_ENABLED
- PERF_FORMAT_TOTAL_TIME_RUNNING
知道这些信息的人可以给我一个直接的答案吗?
【问题讨论】:
标签:
c++
c
linux
linux-kernel
perf
【解决方案1】:
好的。
我看了一点,我想我找到了答案。
例如:
你告诉你的内核你想在下午 1:13:05 观察 X 事件。你的内核在 X 上创建一个“探针”,并开始记录活动。
然后,由于未知原因,您告诉在下午 1:14:05 暂时停止记录。
然后,您在下午 1:15:05 恢复记录。
最后,您在下午 1:15:35 停止记录。
您的启用时间为 00:02:30(下午 1:15:35 - 下午 1:13:05 = 00:02:30)
和 00:01:30 运行时间(1:14:05 PM - 1:13:05 PM + 1:15:35 PM - 1:15:05 PM = 00:01:30)
read_format 属性可以使用掩码同时具有这两个值。在 C++ 中,它看起来像这样:
event_configuration.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING;
其中event_configuration 是struct perf_event_attr 的一个实例。