"perf_event_attr" 结构的 "read_format" 属性的选项到底是什么?
What really are options of the "read_format" attribute of the "perf_event_attr" structure?
我目前正在使用 perf_event_open
系统调用(在 Linux 系统上),并且我试图理解由 struct perf_event_attr
结构给出的此系统调用的配置参数。
这是关于 read_format
选项的。
有没有人能在这个系统调用的手册页上看到,这个参数与这个调用的输出有关。
但我不明白每一个可能的参数都可以做什么。
尤其是这两种可能性:
- PERF_FORMAT_TOTAL_TIME_ENABLED
- PERF_FORMAT_TOTAL_TIME_RUNNING
知道这些信息的人能给我一个直接的答案吗?
好的。
我仔细看了看,我想我找到了答案。
PERF_FORMAT_TOTAL_TIME_ENABLED
:好像一个"enabled time"指的是事件不再被观察到的时间和事件被注册为[=47的时间之间的差异=].
PERF_FORMAT_TOTAL_TIME_RUNNING
:好像一个"running time"指的是事件真正被内核观察到的时间总和。小于或等于 PERF_FORMAT_TOTAL_TIME_ENABLED
.
例如:
您告诉您的内核您想在 1:13:05 下午观察 X 事件。您的内核在 X 上创建一个 "probe",并开始记录 activity。
然后,出于未知原因,您要求在 1:14:05 PM 暂时停止记录。
然后,您在 1:15:05 PM 恢复记录。
最后,您在 1:15:35 下午停止记录。
您有 00:02:30 个启用时间(1:15:35 下午 - 1:13:05 下午 = 00:02:30)
和00:01:30运行时间(1:14:05下午-1:13:05下午+1:15:35下午-1:15:05下午=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
的实例。
我目前正在使用 perf_event_open
系统调用(在 Linux 系统上),并且我试图理解由 struct perf_event_attr
结构给出的此系统调用的配置参数。
这是关于 read_format
选项的。
有没有人能在这个系统调用的手册页上看到,这个参数与这个调用的输出有关。
但我不明白每一个可能的参数都可以做什么。
尤其是这两种可能性:
- PERF_FORMAT_TOTAL_TIME_ENABLED
- PERF_FORMAT_TOTAL_TIME_RUNNING
知道这些信息的人能给我一个直接的答案吗?
好的。
我仔细看了看,我想我找到了答案。
PERF_FORMAT_TOTAL_TIME_ENABLED
:好像一个"enabled time"指的是事件不再被观察到的时间和事件被注册为[=47的时间之间的差异=].PERF_FORMAT_TOTAL_TIME_RUNNING
:好像一个"running time"指的是事件真正被内核观察到的时间总和。小于或等于PERF_FORMAT_TOTAL_TIME_ENABLED
.
例如:
您告诉您的内核您想在 1:13:05 下午观察 X 事件。您的内核在 X 上创建一个 "probe",并开始记录 activity。 然后,出于未知原因,您要求在 1:14:05 PM 暂时停止记录。 然后,您在 1:15:05 PM 恢复记录。 最后,您在 1:15:35 下午停止记录。
您有 00:02:30 个启用时间(1:15:35 下午 - 1:13:05 下午 = 00:02:30)
和00:01:30运行时间(1:14:05下午-1:13:05下午+1:15:35下午-1:15:05下午=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
的实例。