STRUCT ITRACE_SYNTH_OPTS(9)
π struct itrace_synth_opts(9) π
okay so bestie, welcome to the Kernel API Manual entry for struct itrace_synth_opts β literally the vibe-check config blob for AUX area tracing synthesis options. yes that's a mouthful, no i will not be shortening it, we respect the full name in this house π«Ά
β¨ NAME β¨
struct itrace_synth_opts β AUX area tracing synthesis options. that's it. that's the whole name section. iconic brevity π
π SYNOPSIS π
struct itrace_synth_opts {
bool set;
bool default_no_sample;
bool inject;
bool instructions;
bool cycles;
bool branches;
bool transactions;
bool ptwrites;
bool pwr_events;
bool other_events;
bool intr_events;
bool errors;
bool dont_decode;
bool log;
bool calls;
bool returns;
bool callchain;
bool add_callchain;
bool thread_stack;
bool last_branch;
bool add_last_branch;
bool approx_ipc;
bool flc;
bool llc;
bool tlb;
bool remote_access;
bool mem;
bool timeless_decoding;
bool use_timestamp;
bool vm_time_correlation;
bool vm_tm_corr_dry_run;
char *vm_tm_corr_args;
unsigned int callchain_sz;
unsigned int last_branch_sz;
unsigned long long period;
enum itrace_period_type period_type;
unsigned long initial_skip;
unsigned long *cpu_bitmap;
struct perf_time_interval *ptime_range;
int range_num;
unsigned int error_plus_flags;
unsigned int error_minus_flags;
unsigned int log_plus_flags;
unsigned int log_minus_flags;
unsigned int quick;
unsigned int log_on_error_size;
};
look at all those bools. it's giving "i contain multitudes" energy fr fr πΈ
π Members π
okay so here's the whole roster, in order, no skipping, we don't do that here:
setβ tells you whether or not the options have actually been set. the "did anyone actually flip a switch" flag, lowkey important.default_no_sampleβ default to no sampling. that's the whole thing. no sampling by default.injectβ says the event (not just the sample!) has to be fully synthesized, because'perf inject'is gonna write it out. full send, not partial β¨instructionsβ whether to synthesize'instructions'events.cyclesβ whether to synthesize'cycles'events. heads up bestie: these are not fully accurate, because CYC packets only get emitted together with other events, like branches. so likeβ¦ approximation era πbranchesβ whether to synthesize'branches'events.transactionsβ whether to synthesize events for transactions.ptwritesβ whether to synthesize events for ptwrites.pwr_eventsβ whether to synthesize power events. β‘other_eventsβ whether to synthesize other events recorded due to the use ofaux_output.intr_eventsβ whether to synthesize interrupt events.errorsβ whether to synthesize decoder error events. yes we want to know about the errors, that's the point πdont_decodeβ whether to skip decoding entirely. justβ¦ nope, not doing it.logβ write a decoding log.callsβ limit branch samples to calls (can be combined with returns π).callchainβ add callchain to'instructions'events.add_callchainβ add callchain to existing event records.thread_stackβ feed branches to the thread_stack.last_branchβ add branch context to'instruction'events.add_last_branchβ add branch context to existing event records.approx_ipcβ approximate IPC.flcβ whether to synthesize first level cache events.llcβ whether to synthesize last level cache events.tlbβ whether to synthesize TLB events.remote_accessβ whether to synthesize remote access events.memβ whether to synthesize memory events.timeless_decodingβ prefer "timeless" decoding, i.e. ignore timestamps. time is a construct anyway βuse_timestampβ use the timestamp trace as kernel time.vm_time_correlationβ perform VM Time Correlation.vm_tm_corr_dry_runβ VM Time Correlation dry-run. practice round, no commitment πvm_tm_corr_argsβ VM Time Correlation implementation-specific arguments.callchain_szβ maximum callchain size.last_branch_szβ branch context size.periodβ (the original page gives this one no description at all, so neither will i. mysterious. main character energy honestly π΅οΈ)period_typeβ (same deal, no description given. we love an unexplained field π)initial_skipβ skip N events at the beginning.cpu_bitmapβ CPUs for which to synthesize events, orNULLfor all.ptime_rangeβ time intervals to trace orNULL.range_numβ number of time intervals to trace.error_plus_flagsβ flags to affect what errors are reported.error_minus_flagsβ flags to affect what errors are reported. (yes, same description as the one above β they're a plus/minus pair, it's a whole thing π«Ά)log_plus_flagsβ flags to affect what is logged.log_minus_flagsβ flags to affect what is logged. (again, matching pair, we stan symmetry β¨)quickβ quicker (less detailed) decoding. fast mode. zoom zoom π₯log_on_error_sizeβ size of log to keep for outputting log only on errors.
π¦ Return π¦
this section is literally just one line and it's describing the returns member that's chillin' up in the struct but whose description lives down here instead, and honestly? quirky of it:
limit branch samples to returns (can be combined with calls).
π SEE ALSO π
Kernel file ./tools/perf/util/auxtrace.h β plus the whole friend group:
struct auxtrace_index_entry(9)struct auxtrace_index(9)struct auxtrace(9)struct auxtrace_buffer(9)struct auxtrace_queue(9)struct auxtrace_queues(9)struct auxtrace_heap_item(9)struct auxtrace_heap(9)struct auxtrace_mmap(9)struct auxtrace_mmap_params(9)struct auxtrace_record(9)struct addr_filter(9)struct addr_filters(9)
ngl bestie, the flags that say "not fully accurate" and the ones describing what errors get reported are the ones to actually pay attention to β the rest is vibes and bools π
and that's the page!! sourced straight from ./tools/perf/util, dated October 2026, and it's struct itrace_synth_opts(9) signing off πβ¨π periodt.
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms