STRUCT ITRACE_SYNTH_OPTS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 of aux_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, or NULL for all.
  • ptime_range β€” time intervals to trace or NULL.
  • 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