Crate linux_perf_data

source ·
Expand description

A parser for the perf.data file format.

Files of this format consist of a header, a data section, and a few other supplemental sections. The data section contains the main content of the file: a sequence of records.

There are two types of records: event records from the kernel, and “user records” from perf / simpleperf.

The jitdump module lets you parse jitdump files, which are used in conjunction with perf.data files when profiling JIT runtimes.

Example

use linux_perf_data::{AttributeDescription, PerfFileReader, PerfFileRecord};

let file = std::fs::File::open("perf.data")?;
let reader = std::io::BufReader::new(file);
let PerfFileReader { mut perf_file, mut record_iter } = PerfFileReader::parse_file(reader)?;
let event_names: Vec<_> =
    perf_file.event_attributes().iter().filter_map(AttributeDescription::name).collect();
println!("perf events: {}", event_names.join(", "));

while let Some(record) = record_iter.next_record(&mut perf_file)? {
    match record {
        PerfFileRecord::EventRecord { attr_index, record } => {
            let record_type = record.record_type;
            let parsed_record = record.parse()?;
            println!("{:?} for event {}: {:?}", record_type, attr_index, parsed_record);
        }
        PerfFileRecord::UserRecord(record) => {
            let record_type = record.record_type;
            let parsed_record = record.parse()?;
            println!("{:?}: {:?}", record_type, parsed_record);
        }
    }
}

Re-exports

Modules

Structs

  • A single event attr with name and corresponding event IDs.
  • The file path and the build ID of a DSO.
  • A piece of optional data stored in a perf.data file. Its data is contained in a “feature section” at the end of the file.
  • The set of features used in the perf file. The perf file contains one feature section for each feature.
  • An iterator over all the features that are included in a FeatureSet, ordered from low to high feature bit.
  • The number of available and online CPUs. (nr_cpus)
  • Contains the information from the perf.data file header and feature sections.
  • A parser for the perf.data file format.
  • An iterator which incrementally reads and sorts the records from a perf.data file.
  • A raw user record.
  • The timestamps of the first and last sample.
  • A list of threads, usually without names.
  • A newtype wrapping RecordType values for which RecordType::is_user_type() returns true.

Enums

  • A canonicalized key which can be used to cross-reference an Mmap record with an entry in the perf file’s build ID list.
  • An enum for little or big endian.
  • The error type used in this crate.
  • A record from a perf.data file’s data stream.
  • This error indicates that the data slice was not large enough to read the respective item.
  • A record emitted by a user space tool, for example by perf or by simpleperf.