#perf-event #perf #linux #record #events #parser #data

perf-event-data

解析perf_event_open发出的记录的类型和特例。

7个版本

0.1.6 2024年5月21日
0.1.5 2024年5月21日
0.1.4 2023年10月24日
0.1.2 2023年5月17日

性能分析中排名71

Download history 171/week @ 2024-04-27 84/week @ 2024-05-04 31/week @ 2024-05-11 261/week @ 2024-05-18 50/week @ 2024-05-25 40/week @ 2024-06-01 288/week @ 2024-06-08 36/week @ 2024-06-15 124/week @ 2024-06-22 19/week @ 2024-06-29 41/week @ 2024-07-06 66/week @ 2024-07-13 5/week @ 2024-07-20 120/week @ 2024-07-27 194/week @ 2024-08-03 39/week @ 2024-08-10

每月下载367
perf-event2中使用

MIT/Apache

170KB
3.5K SLoC

perf-event-data

ci badge crates.io badge docs.rs badge

perf_event_open发出的数据解析为可用的Rust结构体。

入门指南

  • Record类型是一个枚举,包含所有已知的记录类型。
  • parse模块包含将字节解析为已知记录所需的一切。

将所有这些组合起来,我们得到

use perf_event_data::endian::Native;
use perf_event_data::parse::{ParseConfig, Parser};
use perf_event_data::Record;

fn main() {
    let data: &[u8] = &[
        0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
        0x16, 0x4C, 0x01, 0x00, 0x17, 0x4C, 0x01, 0x00,
        0x00, 0xA0, 0x48, 0x96, 0x4F, 0x7F, 0x00, 0x00,
        0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xA0, 0x48, 0x96, 0x4F, 0x7F, 0x00, 0x00,
        0x2F, 0x2F, 0x61, 0x6E, 0x6F, 0x6E, 0x00, 0x00, 
    ];

    let config = ParseConfig::<Native>::default();
    let mut parser = Parser::new(data, config);
    let record: Record = parser.parse().expect("failed to parse the record");

    // ...
}

另请参阅

  • perf-event2 crate 允许你设置采样性能事件计数器。你很可能需要这个或等效的crate,以便获取该crate解析的事件数据。
  • linux-perf-event-reader crate 提供了与这个crate类似的功能。

依赖关系

~580–780KB
~19K SLoC