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§

pub use linux_perf_event_reader;
pub use prost;

Modules§

jitdump
Parsing code for jitdump files.
simpleperf_dso_type
Constants used in SimpleperfFileRecord’s type property.

Structs§

AttributeDescription
A single event attr with name and corresponding event IDs.
DsoInfo
The file path and the build ID of a DSO.
Feature
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.
FeatureSet
The set of features used in the perf file. The perf file contains one feature section for each feature.
FeatureSetIter
An iterator over all the features that are included in a FeatureSet, ordered from low to high feature bit.
NrCpus
The number of available and online CPUs. (nr_cpus)
PerfFile
Contains the information from the perf.data file header and feature sections.
PerfFileReader
A parser for the perf.data file format.
PerfRecordIter
An iterator which incrementally reads and sorts the records from a perf.data file.
RawUserRecord
A raw user record.
SampleTimeRange
The timestamps of the first and last sample.
SimpleperfDexFileInfo
DEX-specific info inside a SimpleperfFileRecord.
SimpleperfElfFileInfo
ELF object specific info inside a SimpleperfFileRecord.
SimpleperfFileRecord
Used in the SIMPLEPERF_FILE and SIMPLEPERF_FILE2 section.
SimpleperfKernelModuleInfo
Kernel module specific info inside a SimpleperfFileRecord.
SimpleperfSymbol
A single symbol, contained in the symbol table inside a SimpleperfFileRecord.
ThreadMap
A list of threads, usually without names.
UserRecordType
A newtype wrapping RecordType values for which RecordType::is_user_type() returns true.

Enums§

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