PERF-DATA(1)

πŸ’… perf-data(1) β€” the data file glow-up guide

okay bestie, welcome to perf data πŸŽ€ β€” the part of perf that's all about data files and what you can do with them. this is from the perf manual, and it's genuinely so much less scary than it looks. let's go πŸ’–


✨ SYNOPSIS ✨

perf data [<common options>] <command> [<options>]",

(yes the ", at the end is literally in there, that's not me being chaotic, that's just how the manpage ships it 🫢)


🌸 DESCRIPTION 🌸

Data file related processing. that's it, that's the whole vibe β€” anything to do with perf data files lives under here ✨


πŸ‘‘ COMMANDS πŸ‘‘

  • convert β€” turns a perf data file into another format πŸ”₯. and listen: you can set the data-convert debug variable to get debug messages out of the conversion, like so:
perf --debug data-convert data convert ...

πŸ¦‹ OPTIONS FOR CONVERT πŸ¦‹

these are the flags for the convert command specifically. it's giving "small but mighty" ngl πŸ’…

  • --to-ctf β€” triggers the CTF conversion ✨ you specify the path of the CTF data directory.
  • --to-json β€” triggers JSON conversion πŸŽ€ you specify the JSON filename to output.
  • --tod β€” converts time to wall clock time πŸ•°οΈ
  • -i β€” you specify the input perf data file path 🌸
  • -f, --force β€” Don't complain, do it. πŸ’€ (iconic honestly)
  • --time β€” only convert samples within the given time window: <start>,<stop> ⭐ times have the format seconds.nanoseconds. if start isn't given (i.e. the time string is ,x.y) then analysis starts at the beginning of the file. if stop time isn't given (i.e. the time string is x.y,) then analysis goes to the end of the file. multiple ranges can be separated by spaces, which means you gotta quote the argument, e.g.
--time "1234.567,1234.789 1235,"

also β€” and this is the fun part β€” time percent works with multiple time ranges too πŸ’– the time string is 'a%/n,b%/m,...' or 'a%-b%,c%-%d,...'.

ngl this parser ate, so here are the examples, fr fr:

For example:
Select the second 10% time slice:

perf data convert --to-json out.json --time 10%/2

Select from 0% to 10% time slice:

perf data convert --to-json out.json --time 0%-10%

Select the first and second 10% time slices:

perf data convert --to-json out.json --time 10%/1,10%/2

Select from 0% to 10% and 30% to 40% slices:

perf data convert --to-json out.json --time 0%-10%,30%-40%
  • -v, --verbose β€” be more verbose (show counter open errors, etc) πŸ” main character energy for your error messages.
  • --all β€” convert all events, including non-sample events (comm, fork, ...), to output πŸ’œ default is off, and only samples get converted. so if stuff seems missing, vibe check this flag 😭
lowkey important reminder: --all defaults to off. if you're wondering where your comm and fork events went, they didn't ghost you β€” you just didn't pass the flag πŸ™ˆ

🌈 SEE ALSO 🌈


and that's the whole page bestie, no cap 🧚✨ β€” this was perf manual perf-data(1), dated 10/31/2026, slay πŸ’…πŸ’–

πŸ“¦ where this page comes from