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.
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;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.