Documentation/trace/ftrace.rst

Source file repositories/reference/linux-study-clean/Documentation/trace/ftrace.rst

File Facts

System
Linux kernel
Corpus path
Documentation/trace/ftrace.rst
Extension
.rst
Size
145055 bytes
Lines
3839
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

=> vfs_read
   => sys_read
   => system_call_fastpath


This shows that the current tracer is "irqsoff" tracing the time
for which interrupts were disabled. It gives the trace version (which
never changes) and the version of the kernel upon which this was executed on
(3.8). Then it displays the max latency in microseconds (259 us). The number
of trace entries displayed and the total number (both are four: #4/4).
VP, KP, SP, and HP are always zero and are reserved for later use.
#P is the number of online CPUs (#P:4).

The task is the process that was running when the latency
occurred. (ps pid: 6143).

The start and stop (the functions in which the interrupts were
disabled and enabled respectively) that caused the latencies:

  - __lock_task_sighand is where the interrupts were disabled.
  - _raw_spin_unlock_irqrestore is where they were enabled again.

The next lines after the header are the trace itself. The header
explains which is which.

  cmd: The name of the process in the trace.

  pid: The PID of that process.

  CPU#: The CPU which the process was running on.

  irqs-off: 'd' interrupts are disabled. '.' otherwise.

  need-resched:
	- 'B' all, TIF_NEED_RESCHED, PREEMPT_NEED_RESCHED and TIF_RESCHED_LAZY is set,
	- 'N' both TIF_NEED_RESCHED and PREEMPT_NEED_RESCHED is set,
	- 'n' only TIF_NEED_RESCHED is set,
	- 'p' only PREEMPT_NEED_RESCHED is set,
	- 'L' both PREEMPT_NEED_RESCHED and TIF_RESCHED_LAZY is set,
	- 'b' both TIF_NEED_RESCHED and TIF_RESCHED_LAZY is set,
	- 'l' only TIF_RESCHED_LAZY is set
	- '.' otherwise.

  hardirq/softirq:
	- 'Z' - NMI occurred inside a hardirq
	- 'z' - NMI is running
	- 'H' - hard irq occurred inside a softirq.
	- 'h' - hard irq is running
	- 's' - soft irq is running
	- '.' - normal context.

  preempt-depth: The level of preempt_disabled

The above is mostly meaningful for kernel developers.

  time:
	When the latency-format option is enabled, the trace file
	output includes a timestamp relative to the start of the
	trace. This differs from the output when latency-format
	is disabled, which includes an absolute timestamp.

  delay:
	This is just to help catch your eye a bit better. And
	needs to be fixed to be only relative to the same CPU.
	The marks are determined by the difference between this
	current trace and the next trace.

	  - '$' - greater than 1 second
	  - '@' - greater than 100 millisecond
	  - '*' - greater than 10 millisecond

Annotation

Implementation Notes