【问题标题】: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】:

    好的。

    我看了一点,我想我找到了答案。


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

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


    例如:

    你告诉你的内核你想在下午 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_configurationstruct perf_event_attr 的一个实例。

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2011-08-19
      • 1970-01-01
      • 2018-06-22
      • 2010-11-05
      • 2020-03-30
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      相关资源
      最近更新 更多