“ perf_event_attr”结构的“ read_format”属性的选项实际上是什么?

问题描述 投票:1回答:1

我目前正在使用perf_event_open系统调用(在Linux系统上,并且我试图理解此系统调用的配置参数,该参数由struct perf_event_attr结构给出)。

关于read_format选项。任何人都可以在此syscall的手册页上看到该参数是否与该调用的输出有关。

但是我不明白每个可能的论点都可以做什么。


特别是这两种可能性:

  • PERF_FORMAT_TOTAL_TIME_ENABLED
  • PERF_FORMAT_TOTAL_TIME_RUNNING

拥有该信息的任何人都可以直接给我答复吗?

c++ c linux linux-kernel perf
1个回答
0
投票

确定

我进一步看了一下,我想找到了答案。


  • PERF_FORMAT_TOTAL_TIME_ENABLED:似乎“启用时间”是指不再观察到该事件的时间与该事件注册为“待观察”的时间之间的差。

  • PERF_FORMAT_TOTAL_TIME_RUNNING:似乎“运行时间”是指内核真正观察到该事件的时间总和。小于或等于PERF_FORMAT_TOTAL_TIME_ENABLED


例如:

您告诉您的内核您想在1:13:05 PM观察X事件。您的内核在X上创建一个“探针”,并开始记录该活动。然后,出于未知原因,您告诉您在1:14:05 PM暂时停止记录。然后,您将在下午1:15:05恢复记录。最后,您在1:15:35 PM停止记录。

您有00:02:30启用时间(1:15:35 PM-1:13:05 PM = 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_configurationstruct perf_event_attr的实例。

© www.soinside.com 2019 - 2024. All rights reserved.