This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
realtime:documentation:howto:tools:rtla [2023/08/14 20:02] costa.shul |
realtime:documentation:howto:tools:rtla [2025/03/18 09:07] (current) costa.shul [More Information] libtracefs |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Real-time Linux Analysis tool ====== | ====== Real-time Linux Analysis tool ====== | ||
- | The **rtla** – Real-time Linux Analysis tool set analyzes real-time properties of the Linux kernel. | + | The **rtla** – Real-time Linux Analysis toolset analyzes real-time properties of the Linux kernel. |
The tools has several modes. The default **top** mode displays periodic summary from a tracer. The **hist** mode displays histogram at the end of operation. Automatic mode <nowiki>(--auto)</nowiki> stops when the threshold is reached. | The tools has several modes. The default **top** mode displays periodic summary from a tracer. The **hist** mode displays histogram at the end of operation. Automatic mode <nowiki>(--auto)</nowiki> stops when the threshold is reached. | ||
+ | |||
+ | ===== Commands ===== | ||
The tool offers several commands: | The tool offers several commands: | ||
- | * [[https://docs.kernel.org/tools/rtla/rtla-timerlat.html|rtla timerlat]] measures IRQ and thread timer latency. Modes: [[https://docs.kernel.org/tools/rtla/rtla-timerlat-top.html|top]], [[https://docs.kernel.org/tools/rtla/rtla-timerlat-hist.html|hist]]. | + | * [[https://docs.kernel.org/tools/rtla/rtla-timerlat.html|rtla timerlat]] measures IRQ and kernel thread timer latency with [[https://docs.kernel.org/trace/timerlat-tracer.html|timerlat tracer]]. Modes: [[https://docs.kernel.org/tools/rtla/rtla-timerlat-top.html|top]], [[https://docs.kernel.org/tools/rtla/rtla-timerlat-hist.html|hist]]. |
- | * [[https://docs.kernel.org/tools/rtla/rtla-osnoise.html|rtla osnoise]] provides information about operating system noise. It dispatches kernel threads per CPU to measure various sources of interference during execution, such as preemption, softirq, and IRQs. Modes: [[https://docs.kernel.org/tools/rtla/rtla-osnoise-top.html|top]], [[https://docs.kernel.org/tools/rtla/rtla-osnoise-hist.html|hist]]. | + | * [[https://docs.kernel.org/tools/rtla/rtla-osnoise.html|rtla osnoise]] provides information about operating system noise measured with [[https://docs.kernel.org/trace/osnoise-tracer.html|osnoise tracer]]. It dispatches kernel threads per CPU to measure various sources of interference during execution, such as preemption, softirq, and IRQs. Modes: [[https://docs.kernel.org/tools/rtla/rtla-osnoise-top.html|top]], [[https://docs.kernel.org/tools/rtla/rtla-osnoise-hist.html|hist]]. |
- | * [[https://docs.kernel.org/tools/rtla/rtla-hwnoise.html|rtla hwnoise]] detects and quantifies hardware-related noise. By disabling interrupts and scheduling of threads, only non-maskable interrupts and hardware-related noise are analyzed. | + | * [[https://docs.kernel.org/tools/rtla/rtla-hwnoise.html|rtla hwnoise]] detects and quantifies hardware-related noise with [[https://docs.kernel.org/trace/osnoise-tracer.html|osnoise tracer]]. By disabling interrupts with [[https://elixir.bootlin.com/linux/v6.12.6/A/ident/OSN_IRQ_DISABLE|OSNOISE_IRQ_DISABLE]] and scheduling of threads, only non-maskable interrupts and hardware-related noise are analyzed. |
Each of these commands has various options for configuration, such as setting tracer periods, runtimes, thresholds, scheduling parameters, trace events and triggers, and more. These commands offer different ways to analyze and understand the real-time properties and noise sources in the Linux operating system. | Each of these commands has various options for configuration, such as setting tracer periods, runtimes, thresholds, scheduling parameters, trace events and triggers, and more. These commands offer different ways to analyze and understand the real-time properties and noise sources in the Linux operating system. | ||
+ | ===== Events ===== | ||
+ | |||
+ | Arguments to enable common events for automatic and trace options: | ||
+ | |||
+ | ''<nowiki> | ||
+ | -e sched:sched_switch -e sched:sched_wakeup -e sched:sched_migrate_task -e irq -e irq_vectors -e timer -e workqueue | ||
+ | </nowiki>'' | ||
+ | |||
+ | To see all enabled events, run: | ||
+ | |||
+ | ''<nowiki> | ||
+ | grep 1 /sys/kernel/debug/tracing/instances/ /sys/kernel/debug/tracing/events/ -R --include enable | ||
+ | </nowiki>'' | ||
===== More Information ===== | ===== More Information ===== | ||
- | * [[https://bristot.me/linux-scheduling-latency-debug-and-analysis/|Linux scheduling latency debug and analysis with RTLA]] | + | [[realtime:documentation:howto:tools:start|RT tools and utilities]]\\ |
- | * [[https://www.youtube.com/watch?v=oLTRVcJ7_as|🎥 rtla timerlat: Debugging Real-time Linux Scheduling Latency, video]] | + | [[https://bristot.me/linux-scheduling-latency-debug-and-analysis/|Linux scheduling latency debug and analysis with RTLA]]\\ |
- | * [[https://elixir.bootlin.com/linux/latest/source/tools/tracing/rtla|user mode source]] | + | [[https://www.youtube.com/watch?v=oLTRVcJ7_as|🎥 rtla timerlat: Debugging Real-time Linux Scheduling Latency, video]]\\ |
- | * [[https://elixir.bootlin.com/linux/latest/source/kernel/trace/trace_osnoise.c|trace_osnoise.c - kernel mode source]] | + | [[https://elixir.bootlin.com/linux/latest/source/tools/tracing/rtla|user mode source]]\\ |
+ | [[https://elixir.bootlin.com/linux/latest/source/kernel/trace/trace_osnoise.c#L1531|trace_osnoise.c: trace_sample_threshold() - kernel mode source]]\\ | ||
+ | RTLA uses [[https://man7.org/linux/man-pages/man3/libtracefs.3.html|libtracefs]] |