		i	synthesize instructions events
		y	synthesize cycles events
		b	synthesize branches events (branch misses for Arm SPE)
		c	synthesize branches events (calls only)
		r	synthesize branches events (returns only)
		x	synthesize transactions events
		w	synthesize ptwrite events
		p	synthesize power events (incl. PSB events for Intel PT)
		o	synthesize other events recorded due to the use
			of aux-output (refer to perf record)
		I	synthesize interrupt or similar (asynchronous) events
			(e.g. Intel PT Event Trace)
		e	synthesize error events
		d	create a debug log
		f	synthesize first level cache events
		m	synthesize last level cache events
		M	synthesize memory events
		t	synthesize TLB events
		a	synthesize remote access events
		g	synthesize a call chain (use with i or x)
		G	synthesize a call chain on existing event records
		l	synthesize last branch entries (use with i or x)
		L	synthesize last branch entries on existing event records
		s       skip initial number of events
		q	quicker (less detailed) decoding
		A	approximate IPC
		Z	prefer to ignore timestamps (so-called "timeless" decoding)
		T	use the timestamp trace as kernel time

	The default is all events i.e. the same as --itrace=iybxwpe,
	except for perf script where it is --itrace=ce

	In addition, the period (default 100000, except for perf script where it is 1)
	for instructions events can be specified in units of:

		i	instructions
		t	ticks
		ms	milliseconds
		us	microseconds
		ns	nanoseconds (default)

	Also the call chain size (default 16, max. 1024) for instructions or
	transactions events can be specified.

	Also the number of last branch entries (default 64, max. 1024) for
	instructions or transactions events can be specified.

	Similar to options g and l, size may also be specified for options G and L.
	On x86, note that G and L work poorly when data has been recorded with
	large PEBS. Refer linkperf:perf-intel-pt[1] man page for details.

	It is also possible to skip events generated (instructions, branches, transactions,
	ptwrite, power) at the beginning. This is useful to ignore initialization code.

	--itrace=i0nss1000000

	skips the first million instructions.

	The 'e' option may be followed by flags which affect what errors will or
	will not be reported. Each flag must be preceded by either '+' or '-'.
	The flags are:
		o	overflow
		l	trace data lost

	If supported, the 'd' option may be followed by flags which affect what
	debug messages will or will not be logged. Each flag must be preceded
	by either '+' or '-'. The flags are:
		a	all perf events
		e	output only on errors (size configurable - see linkperf:perf-config[1])
		o	output to stdout

	If supported, the 'q' option may be repeated to increase the effect.
