forked from Minki/linux
tracing/doc: Fix typos on the timerlat tracer documentation
Fixes a series of typos in the timerlat doc.
Link: https://lkml.kernel.org/r/d3763eb376603890baab908141de6660ba18fff8.1634308385.git.bristot@kernel.org
Cc: Daniel Bristot de Oliveira <bristot@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: x86@kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Fixes: a955d7eac1
("trace: Add timerlat tracer")
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
9bd985766a
commit
4d4eac7b5a
@ -3,7 +3,7 @@ Timerlat tracer
|
|||||||
###############
|
###############
|
||||||
|
|
||||||
The timerlat tracer aims to help the preemptive kernel developers to
|
The timerlat tracer aims to help the preemptive kernel developers to
|
||||||
find souces of wakeup latencies of real-time threads. Like cyclictest,
|
find sources of wakeup latencies of real-time threads. Like cyclictest,
|
||||||
the tracer sets a periodic timer that wakes up a thread. The thread then
|
the tracer sets a periodic timer that wakes up a thread. The thread then
|
||||||
computes a *wakeup latency* value as the difference between the *current
|
computes a *wakeup latency* value as the difference between the *current
|
||||||
time* and the *absolute time* that the timer was set to expire. The main
|
time* and the *absolute time* that the timer was set to expire. The main
|
||||||
@ -50,14 +50,14 @@ The second is the *timer latency* observed by the thread. The ACTIVATION
|
|||||||
ID field serves to relate the *irq* execution to its respective *thread*
|
ID field serves to relate the *irq* execution to its respective *thread*
|
||||||
execution.
|
execution.
|
||||||
|
|
||||||
The *irq*/*thread* splitting is important to clarify at which context
|
The *irq*/*thread* splitting is important to clarify in which context
|
||||||
the unexpected high value is coming from. The *irq* context can be
|
the unexpected high value is coming from. The *irq* context can be
|
||||||
delayed by hardware related actions, such as SMIs, NMIs, IRQs
|
delayed by hardware-related actions, such as SMIs, NMIs, IRQs,
|
||||||
or by a thread masking interrupts. Once the timer happens, the delay
|
or by thread masking interrupts. Once the timer happens, the delay
|
||||||
can also be influenced by blocking caused by threads. For example, by
|
can also be influenced by blocking caused by threads. For example, by
|
||||||
postponing the scheduler execution via preempt_disable(), by the
|
postponing the scheduler execution via preempt_disable(), scheduler
|
||||||
scheduler execution, or by masking interrupts. Threads can
|
execution, or masking interrupts. Threads can also be delayed by the
|
||||||
also be delayed by the interference from other threads and IRQs.
|
interference from other threads and IRQs.
|
||||||
|
|
||||||
Tracer options
|
Tracer options
|
||||||
---------------------
|
---------------------
|
||||||
@ -68,14 +68,14 @@ directory. The timerlat configs are:
|
|||||||
|
|
||||||
- cpus: CPUs at which a timerlat thread will execute.
|
- cpus: CPUs at which a timerlat thread will execute.
|
||||||
- timerlat_period_us: the period of the timerlat thread.
|
- timerlat_period_us: the period of the timerlat thread.
|
||||||
- osnoise/stop_tracing_us: stop the system tracing if a
|
- stop_tracing_us: stop the system tracing if a
|
||||||
timer latency at the *irq* context higher than the configured
|
timer latency at the *irq* context higher than the configured
|
||||||
value happens. Writing 0 disables this option.
|
value happens. Writing 0 disables this option.
|
||||||
- stop_tracing_total_us: stop the system tracing if a
|
- stop_tracing_total_us: stop the system tracing if a
|
||||||
timer latency at the *thread* context higher than the configured
|
timer latency at the *thread* context is higher than the configured
|
||||||
value happens. Writing 0 disables this option.
|
value happens. Writing 0 disables this option.
|
||||||
- print_stack: save the stack of the IRQ ocurrence, and print
|
- print_stack: save the stack of the IRQ occurrence, and print
|
||||||
it afte the *thread context* event".
|
it after the *thread context* event".
|
||||||
|
|
||||||
timerlat and osnoise
|
timerlat and osnoise
|
||||||
----------------------------
|
----------------------------
|
||||||
@ -95,7 +95,7 @@ For example::
|
|||||||
timerlat/5-1035 [005] ....... 548.771104: #402268 context thread timer_latency 39960 ns
|
timerlat/5-1035 [005] ....... 548.771104: #402268 context thread timer_latency 39960 ns
|
||||||
|
|
||||||
In this case, the root cause of the timer latency does not point to a
|
In this case, the root cause of the timer latency does not point to a
|
||||||
single cause, but to multiple ones. Firstly, the timer IRQ was delayed
|
single cause but to multiple ones. Firstly, the timer IRQ was delayed
|
||||||
for 13 us, which may point to a long IRQ disabled section (see IRQ
|
for 13 us, which may point to a long IRQ disabled section (see IRQ
|
||||||
stacktrace section). Then the timer interrupt that wakes up the timerlat
|
stacktrace section). Then the timer interrupt that wakes up the timerlat
|
||||||
thread took 7597 ns, and the qxl:21 device IRQ took 7139 ns. Finally,
|
thread took 7597 ns, and the qxl:21 device IRQ took 7139 ns. Finally,
|
||||||
|
Loading…
Reference in New Issue
Block a user