sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget1/translations/zh_CN/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/zh_TW/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/it_IT/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ja_JP/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/ko_KR/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/pt_BR/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget1/translations/sp_SP/tools/rtla/rtla-timerlat-histmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsubstitution_definition)}(h".. |tool| replace:: timerlat hist h]h timerlat hist}hhsbah}(h]h ]h"]toolah$]h&]uh1hhK/var/lib/git/docbuild/linux/Documentation/tools/rtla/rtla-timerlat-hist.rsthKhhhhubhsection)}(hhh](htitle)}(hrtla-timerlat-histh]hrtla-timerlat-hist}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h0Histograms of the operating system timer latencyh]h0Histograms of the operating system timer latency}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hManual sectionh]hManual section}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h1 h]h paragraph)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK hj ubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSYNOPSISh]hSYNOPSIS}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hhhhhK ubj)}(h&**rtla timerlat hist** [*OPTIONS*] ...h](hstrong)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj@ubh [}(hj@hhhNhNubhemphasis)}(h *OPTIONS*h]hOPTIONS}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj@ubh] ...}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKhj/hhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h DESCRIPTIONh]h DESCRIPTION}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhKubj)}(hXBThe **rtla timerlat** tool is an interface for the *timerlat* tracer. The *timerlat* tracer dispatches a kernel thread per-cpu. These threads set a periodic timer to wake themselves up and go back to sleep. After the wakeup, they collect and generate useful information for the debugging of operating system timer latency.h](hThe }(hjhhhNhNubjE)}(h**rtla timerlat**h]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tool is an interface for the }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer. The }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer dispatches a kernel thread per-cpu. These threads set a periodic timer to wake themselves up and go back to sleep. After the wakeup, they collect and generate useful information for the debugging of operating system timer latency.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j h8Documentation/tools/rtla/common_timerlat_description.txthKhjzhhubj)}(hThe *timerlat* tracer outputs information in two ways. It periodically prints the timer latency at the timer *IRQ* handler and the *Thread* handler. It also enables the trace of the most relevant information via **osnoise:** tracepoints.h](hThe }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh_ tracer outputs information in two ways. It periodically prints the timer latency at the timer }(hjhhhNhNubjY)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh handler and the }(hjhhhNhNubjY)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubhI handler. It also enables the trace of the most relevant information via }(hjhhhNhNubjE)}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tracepoints.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjzhhubj)}(hXThe **rtla timerlat** tool sets the options of the *timerlat* tracer and collects and displays a summary of the results. By default, the collection is done synchronously in kernel space using a dedicated BPF program attached to the *timerlat* tracer. If either BPF or the **osnoise:timerlat_sample** tracepoint it attaches to is unavailable, the **rtla timerlat** tool falls back to using tracefs to process the data asynchronously in user space.h](hThe }(hj&hhhNhNubjE)}(h**rtla timerlat**h]h rtla timerlat}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj&ubh tool sets the options of the }(hj&hhhNhNubjY)}(h *timerlat*h]htimerlat}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj&ubh tracer and collects and displays a summary of the results. By default, the collection is done synchronously in kernel space using a dedicated BPF program attached to the }(hj&hhhNhNubjY)}(h *timerlat*h]htimerlat}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj&ubh tracer. If either BPF or the }(hj&hhhNhNubjE)}(h**osnoise:timerlat_sample**h]hosnoise:timerlat_sample}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj&ubh/ tracepoint it attaches to is unavailable, the }(hj&hhhNhNubjE)}(h**rtla timerlat**h]h rtla timerlat}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj&ubhS tool falls back to using tracefs to process the data asynchronously in user space.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhK hjzhhubj)}(hThe **rtla timerlat hist** displays a histogram of each tracer event occurrence. This tool uses the periodic information, and the **osnoise:** tracepoints are enabled when using the **-T** option.h](hThe }(hjhhhNhNubjE)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubhh displays a histogram of each tracer event occurrence. This tool uses the periodic information, and the }(hjhhhNhNubjE)}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh( tracepoints are enabled when using the }(hjhhhNhNubjE)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh option.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKhjzhhubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOPTIONSh]hOPTIONS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hI.. |threshold| replace:: **-a/--auto**, **-i/--irq**, or **-T/--thread**h](jE)}(h **-a/--auto**h]h -a/--auto}hjsbah}(h]h ]h"]h$]h&]uh1jDhjubh, }hjsbjE)}(h **-i/--irq**h]h-i/--irq}hjsbah}(h]h ]h"]h$]h&]uh1jDhjubh, or }hjsbjE)}(h**-T/--thread**h]h -T/--thread}hjsbah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"] thresholdah$]h&]uh1hh4Documentation/tools/rtla/common_timerlat_options.txthKhjhhubh)}(h.. |thresharg| replace:: -Th]h-T}hj)sbah}(h]h ]h"] threshargah$]h&]uh1hhj(hKhjhhubh)}(h#.. |tracer| replace:: timerlat h]htimerlat}hj8sbah}(h]h ]h"]tracerah$]h&]uh1hhj(hKhjhhubh)}(hX@.. |actionsperf| replace:: For time-sensitive actions, it is recommended to run **rtla timerlat** with BPF support and RT priority. Note that due to implementational limitations, actions might be delayed up to one second after tracing is stopped if BPF mode is not available or disabled. h](h5For time-sensitive actions, it is recommended to run }hjGsbjE)}(h**rtla timerlat**h]h rtla timerlat}hjOsbah}(h]h ]h"]h$]h&]uh1jDhjGubh with BPF support and RT priority. Note that due to implementational limitations, actions might be delayed up to one second after tracing is stopped if BPF mode is not available or disabled.}hjGsbeh}(h]h ]h"] actionsperfah$]h&]uh1hhj(hKhjhhubj)}(h**-a**, **--auto** *us*h](jE)}(h**-a**h]h-a}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjhubh, }(hjhhhhNhNubjE)}(h **--auto**h]h--auto}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjhubh }(hjhhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjhubeh}(h]h ]h"]h$]h&]uh1j hj(hK hjhhubh block_quote)}(hXSet the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use **-T** *us* **-s** *us* **-t**. By default, *timerlat* tracer uses FIFO:95 for *timerlat* threads, thus equivalent to **-P** *f:95*. h]j)}(hXSet the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use **-T** *us* **-s** *us* **-t**. By default, *timerlat* tracer uses FIFO:95 for *timerlat* threads, thus equivalent to **-P** *f:95*.h](h|Set the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use }(hjhhhNhNubjE)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh }hjsbjE)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }hjsbjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh }(hjhhhNhNubjE)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh. By default, }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer uses FIFO:95 for }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh threads, thus equivalent to }(hjhhhNhNubjE)}(h**-P**h]h-P}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }hjsbjY)}(h*f:95*h]hf:95}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK hjubah}(h]h ]h"]h$]h&]uh1jhj(hK hjhhubj)}(h**-p**, **--period** *us*h](jE)}(h**-p**h]h-p}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj`ubh, }(hj`hhhNhNubjE)}(h **--period**h]h--period}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj`ubh }(hj`hhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj`ubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjhhubj)}(h2Set the *timerlat* tracer period in microseconds. h]j)}(h1Set the *timerlat* tracer period in microseconds.h](hSet the }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer period in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjubah}(h]h ]h"]h$]h&]uh1jhj(hKhjhhubj)}(h**-i**, **--irq** *us*h](jE)}(h**-i**h]h-i}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--irq**h]h--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjhhubj)}(haStop trace if the *IRQ* latency is higher than the argument in us. This option cannot be unset. h](j)}(hBStop trace if the *IRQ* latency is higher than the argument in us.h](hStop trace if the }(hjhhhNhNubjY)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKhjubeh}(h]h ]h"]h$]h&]uh1jhj(hKhjhhubj)}(h**-T**, **--thread** *us*h](jE)}(h**-T**h]h-T}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj:ubh, }(hj:hhhNhNubjE)}(h **--thread**h]h--thread}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj:ubh }(hj:hhhNhNubjY)}(h*us*h]hus}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj:ubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjhhubj)}(hdStop trace if the *Thread* latency is higher than the argument in us. This option cannot be unset. h](j)}(hEStop trace if the *Thread* latency is higher than the argument in us.h](hStop trace if the }(hjzhhhNhNubjY)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjzubh+ latency is higher than the argument in us.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjvubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hK hjvubeh}(h]h ]h"]h$]h&]uh1jhj(hKhjhhubj)}(h**-s**, **--stack** *us*h](jE)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--stack**h]h--stack}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hj(hK"hjhhubj)}(h[Save the stack trace at the *IRQ* if a *Thread* latency is higher than the argument in us. h]j)}(hZSave the stack trace at the *IRQ* if a *Thread* latency is higher than the argument in us.h](hSave the stack trace at the }(hjhhhNhNubjY)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh if a }(hjhhhNhNubjY)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK$hjubah}(h]h ]h"]h$]h&]uh1jhj(hK$hjhhubj)}(h**-t**, **--trace** \[*file*]h](jE)}(h**-t**h]h-t}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj&ubh, }(hj&hhhNhNubjE)}(h **--trace**h]h--trace}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj&ubh [}(hj&hhhNhNubjY)}(h*file*h]hfile}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj&ubh]}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK'hjhhubj)}(h7Save the stopped trace to [*file|timerlat_trace.txt*]. h]j)}(h6Save the stopped trace to [*file|timerlat_trace.txt*].h](hSave the stopped trace to [}(hjjhhhNhNubjY)}(h*file|timerlat_trace.txt*h]hfile|timerlat_trace.txt}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjjubh].}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK)hjfubah}(h]h ]h"]h$]h&]uh1jhj(hK)hjhhubhdefinition_list)}(hhh](hdefinition_list_item)}(h**--dma-latency** *us* Set the /dev/cpu_dma_latency to *us*, aiming to bound exit from idle latencies. *cyclictest* sets this value to *0* by default, use **--dma-latency** *0* to have similar results. h](hterm)}(h**--dma-latency** *us*h](jE)}(h**--dma-latency**h]h --dma-latency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1jhj(hK.hjubh definition)}(hhh]j)}(hSet the /dev/cpu_dma_latency to *us*, aiming to bound exit from idle latencies. *cyclictest* sets this value to *0* by default, use **--dma-latency** *0* to have similar results.h](h Set the /dev/cpu_dma_latency to }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh,, aiming to bound exit from idle latencies. }(hjhhhNhNubjY)}(h *cyclictest*h]h cyclictest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh sets this value to }(hjhhhNhNubjY)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh by default, use }(hjhhhNhNubjE)}(h**--dma-latency**h]h --dma-latency}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh to have similar results.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj(hK.hjubj)}(hXR**--deepest-idle-state** *n* Disable idle states higher than *n* for cpus that are running timerlat threads to reduce exit from idle latencies. If *n* is -1, all idle states are disabled. On exit from timerlat, the idle state setting is restored to its original state before running timerlat. Requires rtla to be built with libcpupower. h](j)}(h**--deepest-idle-state** *n*h](jE)}(h**--deepest-idle-state**h]h--deepest-idle-state}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjDubh }(hjDhhhNhNubjY)}(h*n*h]hn}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjDubeh}(h]h ]h"]h$]h&]uh1jhj(hK6hj@ubj)}(hhh](j)}(hXDisable idle states higher than *n* for cpus that are running timerlat threads to reduce exit from idle latencies. If *n* is -1, all idle states are disabled. On exit from timerlat, the idle state setting is restored to its original state before running timerlat.h](h Disable idle states higher than }(hjqhhhNhNubjY)}(h*n*h]hn}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjqubhS for cpus that are running timerlat threads to reduce exit from idle latencies. If }(hjqhhhNhNubjY)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjqubh is -1, all idle states are disabled. On exit from timerlat, the idle state setting is restored to its original state before running timerlat.}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK1hjnubj)}(h+Requires rtla to be built with libcpupower.h]h+Requires rtla to be built with libcpupower.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hK6hjnubeh}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj(hK6hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhj(hNubj)}(h**-k**, **--kernel-threads**h](jE)}(h**-k**h]h-k}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--kernel-threads**h]h--kernel-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1j hj(hK8hjhhubj)}(h:Use timerlat kernel-space threads, in contrast of **-u**. h]j)}(h9Use timerlat kernel-space threads, in contrast of **-u**.h](h2Use timerlat kernel-space threads, in contrast of }(hjhhhNhNubjE)}(h**-u**h]h-u}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK:hjubah}(h]h ]h"]h$]h&]uh1jhj(hK:hjhhubj)}(h**-u**, **--user-threads**h](jE)}(h**-u**h]h-u}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--user-threads**h]h--user-threads}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1j hj(hKhjAubah}(h]h ]h"]h$]h&]uh1jhj(hK>hjhhubj)}(h**-U**, **--user-load**h](jE)}(h**-U**h]h-U}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj}ubh, }(hj}hhhNhNubjE)}(h**--user-load**h]h --user-load}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj}ubeh}(h]h ]h"]h$]h&]uh1j hj(hKChjhhubj)}(hSet timerlat to run without workload, waiting for the user to dispatch a per-cpu task that waits for a new period on the tracing/osnoise/per_cpu/cpu$ID/timerlat_fd. See linux/tools/rtla/example/timerlat_load.py for an example of user-load code. h]j)}(hSet timerlat to run without workload, waiting for the user to dispatch a per-cpu task that waits for a new period on the tracing/osnoise/per_cpu/cpu$ID/timerlat_fd. See linux/tools/rtla/example/timerlat_load.py for an example of user-load code.h]hSet timerlat to run without workload, waiting for the user to dispatch a per-cpu task that waits for a new period on the tracing/osnoise/per_cpu/cpu$ID/timerlat_fd. See linux/tools/rtla/example/timerlat_load.py for an example of user-load code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKEhjubah}(h]h ]h"]h$]h&]uh1jhj(hKEhjhhubj)}(h**--bpf-action** *bpf-program*h](jE)}(h**--bpf-action**h]h --bpf-action}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h *bpf-program*h]h bpf-program}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hj(hKIhjhhubj)}(hXQLoads a BPF program from an ELF file and executes it when a latency threshold is exceeded. The BPF program must be a valid ELF file loadable with libbpf. The program must contain a function named ``action_handler``, stored in an ELF section with the ``tp_`` prefix. The prefix is used by libbpf to set BPF program type to BPF_PROG_TYPE_TRACEPOINT. The program receives a ``struct trace_event_raw_timerlat_sample`` parameter containing timerlat sample data. An example is provided in ``tools/tracing/rtla/example/timerlat_bpf_action.c``. This example demonstrates how to create a BPF program that prints latency information using bpf_trace_printk() when a threshold is exceeded. **Note**: BPF actions require BPF support to be available. If BPF is not available or disabled, the tool falls back to tracefs mode and BPF actions are not supported. h](j)}(hZLoads a BPF program from an ELF file and executes it when a latency threshold is exceeded.h]hZLoads a BPF program from an ELF file and executes it when a latency threshold is exceeded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKKhjubj)}(hXThe BPF program must be a valid ELF file loadable with libbpf. The program must contain a function named ``action_handler``, stored in an ELF section with the ``tp_`` prefix. The prefix is used by libbpf to set BPF program type to BPF_PROG_TYPE_TRACEPOINT.h](hiThe BPF program must be a valid ELF file loadable with libbpf. The program must contain a function named }(hjhhhNhNubhliteral)}(h``action_handler``h]haction_handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh$, stored in an ELF section with the }(hjhhhNhNubj )}(h``tp_``h]htp_}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhZ prefix. The prefix is used by libbpf to set BPF program type to BPF_PROG_TYPE_TRACEPOINT.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKMhjubj)}(hlThe program receives a ``struct trace_event_raw_timerlat_sample`` parameter containing timerlat sample data.h](hThe program receives a }(hj/ hhhNhNubj )}(h*``struct trace_event_raw_timerlat_sample``h]h&struct trace_event_raw_timerlat_sample}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ ubh+ parameter containing timerlat sample data.}(hj/ hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKQhjubj)}(hAn example is provided in ``tools/tracing/rtla/example/timerlat_bpf_action.c``. This example demonstrates how to create a BPF program that prints latency information using bpf_trace_printk() when a threshold is exceeded.h](hAn example is provided in }(hjO hhhNhNubj )}(h4``tools/tracing/rtla/example/timerlat_bpf_action.c``h]h0tools/tracing/rtla/example/timerlat_bpf_action.c}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjO ubh. This example demonstrates how to create a BPF program that prints latency information using bpf_trace_printk() when a threshold is exceeded.}(hjO hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKThjubj)}(h**Note**: BPF actions require BPF support to be available. If BPF is not available or disabled, the tool falls back to tracefs mode and BPF actions are not supported.h](jE)}(h**Note**h]hNote}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjo ubh: BPF actions require BPF support to be available. If BPF is not available or disabled, the tool falls back to tracefs mode and BPF actions are not supported.}(hjo hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKXhjubeh}(h]h ]h"]h$]h&]uh1jhj(hKKhjhhubj)}(h**--stack-format** *format*h](jE)}(h**--stack-format**h]h--stack-format}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*format*h]hformat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hj(hK[hjhhubj)}(hXjAdjust the format of the stack trace printed during auto-analysis. The supported values for *format* are: * **truncate** Print the stack trace up to the first unknown address (default). * **skip** Skip unknown addresses. * **full** Print the entire stack trace, including unknown addresses. For unknown addresses, the raw pointer is printed. h](j)}(hBAdjust the format of the stack trace printed during auto-analysis.h]hBAdjust the format of the stack trace printed during auto-analysis.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hK]hj ubj)}(h&The supported values for *format* are:h](hThe supported values for }(hj hhhNhNubjY)}(h*format*h]hformat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh are:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hK_hj ubh bullet_list)}(hhh](h list_item)}(hP**truncate** Print the stack trace up to the first unknown address (default).h]j)}(hj h](jE)}(h **truncate**h]htruncate}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubhD Print the stack trace up to the first unknown address (default).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKahj ubah}(h]h ]h"]h$]h&]uh1j hj ubj )}(h'**skip** Skip unknown addresses.h]j)}(hj h](jE)}(h**skip**h]hskip}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh Skip unknown addresses.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKbhj ubah}(h]h ]h"]h$]h&]uh1j hj ubj )}(hK**full** Print the entire stack trace, including unknown addresses. h]j)}(hJ**full** Print the entire stack trace, including unknown addresses.h](jE)}(h**full**h]hfull}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjB ubhB Print the entire stack trace, including unknown addresses.}(hjB hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj(hKchj> ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]bullet*uh1j hj(hKahj ubj)}(h2For unknown addresses, the raw pointer is printed.h]h2For unknown addresses, the raw pointer is printed.}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKehj ubeh}(h]h ]h"]h$]h&]uh1jhj(hK]hjhhubj)}(h**-A**, **--aligned** *us*h](jE)}(h**-A**h]h-A}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h **--aligned**h]h --aligned}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*us*h]hus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hj(hKghjhhubj)}(hXAlign wake-up of timerlat threads to a set offset in microseconds. The alignment will be applied when the threads wake up at the start of tracing while the timer for the first cycle is armed. Each thread sets its timer to the wake-up time of the previous thread plus the alignment. This option may be used with any non-negative argument, including zero, which will align threads so that they wake up all at the same time. h](j)}(hBAlign wake-up of timerlat threads to a set offset in microseconds.h]hBAlign wake-up of timerlat threads to a set offset in microseconds.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKihj ubj)}(hThe alignment will be applied when the threads wake up at the start of tracing while the timer for the first cycle is armed. Each thread sets its timer to the wake-up time of the previous thread plus the alignment.h]hThe alignment will be applied when the threads wake up at the start of tracing while the timer for the first cycle is armed. Each thread sets its timer to the wake-up time of the previous thread plus the alignment.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKkhj ubj)}(hThis option may be used with any non-negative argument, including zero, which will align threads so that they wake up all at the same time.h]hThis option may be used with any non-negative argument, including zero, which will align threads so that they wake up all at the same time.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(hKohj ubeh}(h]h ]h"]h$]h&]uh1jhj(hKihjhhubj)}(h**-b**, **--bucket-size** *N*h](jE)}(h**-b**h]h-b}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h**--bucket-size**h]h --bucket-size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*N*h]hN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j h0Documentation/tools/rtla/common_hist_options.txthKhjhhubj)}(h-Set the histogram bucket size (default *1*). h]j)}(h,Set the histogram bucket size (default *1*).h](h'Set the histogram bucket size (default }(hj1 hhhNhNubjY)}(h*1*h]h1}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj1 ubh).}(hj1 hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj, hKhj- ubah}(h]h ]h"]h$]h&]uh1jhj, hKhjhhubj)}(h**-E**, **--entries** *N*h](jE)}(h**-E**h]h-E}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjW ubh, }(hjW hhhNhNubjE)}(h **--entries**h]h --entries}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjW ubh }(hjW hhhNhNubjY)}(h*N*h]hN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjW ubeh}(h]h ]h"]h$]h&]uh1j hj, hKhjhhubj)}(h:Set the number of entries of the histogram (default 256). h]j)}(h9Set the number of entries of the histogram (default 256).h]h9Set the number of entries of the histogram (default 256).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj, hKhj ubah}(h]h ]h"]h$]h&]uh1jhj, hKhjhhubj)}(h**--no-header**h]jE)}(hj h]h --no-header}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&]uh1j hj, hK hjhhubj)}(hDo not print header. h]j)}(hDo not print header.h]hDo not print header.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj, hK hj ubah}(h]h ]h"]h$]h&]uh1jhj, hK hjhhubj)}(h**--no-summary**h]jE)}(hj h]h --no-summary}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&]uh1j hj, hK hjhhubj)}(hDo not print summary. h]j)}(hDo not print summary.h]hDo not print summary.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj, hKhj ubah}(h]h ]h"]h$]h&]uh1jhj, hKhjhhubj)}(h**--no-index**h]jE)}(hj h]h --no-index}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&]uh1j hj, hKhjhhubj)}(hDo not print index. h]j)}(hDo not print index.h]hDo not print index.}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj, hKhj ubah}(h]h ]h"]h$]h&]uh1jhj, hKhjhhubj)}(h**--with-zeros**h]jE)}(hj: h]h --with-zeros}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj8 ubah}(h]h ]h"]h$]h&]uh1j hj, hKhjhhubj)}(hPrint zero only entries. h]j)}(hPrint zero only entries.h]hPrint zero only entries.}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj, hKhjO ubah}(h]h ]h"]h$]h&]uh1jhj, hKhjhhubj)}(h**-c**, **--cpus** *cpu-list*h](jE)}(h**-c**h]h-c}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjg ubh, }(hjg hhhNhNubjE)}(h **--cpus**h]h--cpus}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjg ubh }(hjg hhhNhNubjY)}(h *cpu-list*h]hcpu-list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjg ubeh}(h]h ]h"]h$]h&]uh1j h+Documentation/tools/rtla/common_options.txthKhjhhubj)}(hSet the |tool| tracer to run the sample threads in the cpu-list. By default, the |tool| tracer runs the sample threads on all CPUs. h](j)}(h@Set the |tool| tracer to run the sample threads in the cpu-list.h](hSet the }(hj hhhNhNubh timerlat hist}(hj hhhNhNubh2 tracer to run the sample threads in the cpu-list.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj)}(hBBy default, the |tool| tracer runs the sample threads on all CPUs.h](hBy default, the }(hj hhhNhNubh timerlat hist}(hj hhhNhNubh, tracer runs the sample threads on all CPUs.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(h&**-H**, **--house-keeping** *cpu-list*h](jE)}(h**-H**h]h-H}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h**--house-keeping**h]h--house-keeping}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h *cpu-list*h]hcpu-list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjhhubj)}(hRun rtla control threads only on the given cpu-list. If omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads. h](j)}(h4Run rtla control threads only on the given cpu-list.h]h4Run rtla control threads only on the given cpu-list.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK hj ubj)}(hrIf omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads.h]hrIf omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads.}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK hj ubeh}(h]h ]h"]h$]h&]uh1jhj hK hjhhubj)}(h&**-d**, **--duration** *time[s|m|h|d]*h](jE)}(h**-d**h]h-d}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj< ubh, }(hj< hhhNhNubjE)}(h**--duration**h]h --duration}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj< ubh }(hj< hhhNhNubjY)}(h*time[s|m|h|d]*h]h time[s|m|h|d]}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj< ubeh}(h]h ]h"]h$]h&]uh1j hj hK hjhhubj)}(h!Set the duration of the session. h]j)}(h Set the duration of the session.h]h Set the duration of the session.}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjx ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(h**-D**, **--debug**h](jE)}(h**-D**h]h-D}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h **--debug**h]h--debug}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjhhubj)}(hPrint debug info. h]j)}(hPrint debug info.h]hPrint debug info.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(h**-e**, **--event** *sys:event*h](jE)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h **--event**h]h--event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjhhubj)}(hXEnable an event in the trace (**-t**) session. The argument can be a specific event, e.g., **-e** *sched:sched_switch*, or all events of a system group, e.g., **-e** *sched*. Multiple **-e** are allowed. It is only active when **-t** or **-a** are set. This option cannot be unset. h](j)}(hEnable an event in the trace (**-t**) session. The argument can be a specific event, e.g., **-e** *sched:sched_switch*, or all events of a system group, e.g., **-e** *sched*. Multiple **-e** are allowed. It is only active when **-t** or **-a** are set.h](hEnable an event in the trace (}(hjhhhNhNubjE)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh7) session. The argument can be a specific event, e.g., }(hjhhhNhNubjE)}(h**-e**h]h-e}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*sched:sched_switch*h]hsched:sched_switch}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh), or all events of a system group, e.g., }(hjhhhNhNubjE)}(h**-e**h]h-e}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }hjsbjY)}(h*sched*h]hsched}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh . Multiple }(hjhhhNhNubjE)}(h**-e**h]h-e}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh% are allowed. It is only active when }(hjhhhNhNubjE)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh or }(hjhhhNhNubjE)}(h**-a**h]h-a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh are set.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(h**--filter** **h](jE)}(h **--filter**h]h--filter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h **h]h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjhhubj)}(hFilter the previous **-e** *sys:event* event with **. For further information about event filtering see https://www.kernel.org/doc/html/latest/trace/events.html#event-filtering. This option cannot be unset. h](j)}(hFilter the previous **-e** *sys:event* event with **. For further information about event filtering see https://www.kernel.org/doc/html/latest/trace/events.html#event-filtering.h](hFilter the previous }(hjhhhNhNubjE)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh event with }(hjhhhNhNubjY)}(h **h]h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh4. For further information about event filtering see }(hjhhhNhNubh reference)}(hHhttps://www.kernel.org/doc/html/latest/trace/events.html#event-filteringh]hHhttps://www.kernel.org/doc/html/latest/trace/events.html#event-filtering}(hj2hhhNhNubah}(h]h ]h"]h$]h&]refurij4uh1j0hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(hhh]j)}(hX**--trigger** ** Enable a trace event trigger to the previous **-e** *sys:event*. If the *hist:* trigger is activated, the output histogram will be automatically saved to a file named *system_event_hist.txt*. For example, the command: rtla -t -e osnoise:irq_noise --trigger="hist:key=desc,duration/1000:sort=desc,duration/1000:vals=hitcount" Will automatically save the content of the histogram associated to *osnoise:irq_noise* event in *osnoise_irq_noise_hist.txt*. For further information about event trigger see https://www.kernel.org/doc/html/latest/trace/events.html#event-triggers. This option cannot be unset. h](j)}(h**--trigger** **h](jE)}(h **--trigger**h]h --trigger}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjfubh }(hjfhhhNhNubjY)}(h **h]h }(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjfubeh}(h]h ]h"]h$]h&]uh1jhj hK,hjbubj)}(hhh](j)}(hEnable a trace event trigger to the previous **-e** *sys:event*. If the *hist:* trigger is activated, the output histogram will be automatically saved to a file named *system_event_hist.txt*. For example, the command:h](h-Enable a trace event trigger to the previous }(hjhhhNhNubjE)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h *sys:event*h]h sys:event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh . If the }(hjhhhNhNubjY)}(h*hist:*h]hhist:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubhX trigger is activated, the output histogram will be automatically saved to a file named }(hjhhhNhNubjY)}(h*system_event_hist.txt*h]hsystem_event_hist.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh. For example, the command:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK"hjubj)}(h{rtla -t -e osnoise:irq_noise --trigger="hist:key=desc,duration/1000:sort=desc,duration/1000:vals=hitcount"h]hrtla -t -e osnoise:irq_noise --trigger=”hist:key=desc,duration/1000:sort=desc,duration/1000:vals=hitcount”}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK&hjubj)}(h}Will automatically save the content of the histogram associated to *osnoise:irq_noise* event in *osnoise_irq_noise_hist.txt*.h](hCWill automatically save the content of the histogram associated to }(hjhhhNhNubjY)}(h*osnoise:irq_noise*h]hosnoise:irq_noise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh event in }(hjhhhNhNubjY)}(h*osnoise_irq_noise_hist.txt*h]hosnoise_irq_noise_hist.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK(hjubj)}(hxFor further information about event trigger see https://www.kernel.org/doc/html/latest/trace/events.html#event-triggers.h](h0For further information about event trigger see }(hj)hhhNhNubj1)}(hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggersh]hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggers}(hj1hhhNhNubah}(h]h ]h"]h$]h&]refurij3uh1j0hj)ubh.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK*hjubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK,hjubeh}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]uh1jhj hK,hj_ubah}(h]h ]h"]h$]h&]uh1jhjhhhj hNubj)}(h>**-P**, **--priority** *o:prio|r:prio|f:prio|d:runtime:period*h](jE)}(h**-P**h]h-P}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjjubh, }(hjjhhhNhNubjE)}(h**--priority**h]h --priority}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjjubh }(hjjhhhNhNubjY)}(h'*o:prio|r:prio|f:prio|d:runtime:period*h]h%o:prio|r:prio|f:prio|d:runtime:period}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjjubeh}(h]h ]h"]h$]h&]uh1j hj hK.hjhhubj)}(hXSet scheduling parameters to the |tool| tracer threads, the format to set the priority are: - *o:prio* - use SCHED_OTHER with *prio*; - *r:prio* - use SCHED_RR with *prio*; - *f:prio* - use SCHED_FIFO with *prio*; - *d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. If not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see *osnoise* and *timerlat* tracer documentation for the running kernel version. h](j)}(h[Set scheduling parameters to the |tool| tracer threads, the format to set the priority are:h](h!Set scheduling parameters to the }(hjhhhNhNubh timerlat hist}(hjhhhNhNubh4 tracer threads, the format to set the priority are:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK0hjubj )}(hhh](j )}(h'*o:prio* - use SCHED_OTHER with *prio*;h]j)}(hjh](jY)}(h*o:prio*h]ho:prio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh - use SCHED_OTHER with }(hjhhhNhNubjY)}(h*prio*h]hprio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK2hjubah}(h]h ]h"]h$]h&]uh1j hjubj )}(h$*r:prio* - use SCHED_RR with *prio*;h]j)}(hjh](jY)}(h*r:prio*h]hr:prio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh - use SCHED_RR with }(hjhhhNhNubjY)}(h*prio*h]hprio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK3hjubah}(h]h ]h"]h$]h&]uh1j hjubj )}(h&*f:prio* - use SCHED_FIFO with *prio*;h]j)}(hj3h](jY)}(h*f:prio*h]hf:prio}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj5ubh - use SCHED_FIFO with }(hj5hhhNhNubjY)}(h*prio*h]hprio}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj5ubh;}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK4hj1ubah}(h]h ]h"]h$]h&]uh1j hjubj )}(hf*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. h]j)}(he*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds.h](jY)}(h$*d:runtime[us|ms|s]:period[us|ms|s]*h]h"d:runtime[us|ms|s]:period[us|ms|s]}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjlubh - use SCHED_DEADLINE with }(hjlhhhNhNubjY)}(h *runtime*h]hruntime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjlubh and }(hjlhhhNhNubjY)}(h*period*h]hperiod}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjlubh in nanoseconds.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK5hjhubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]jj -uh1j hj hK2hjubj)}(hIf not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see *osnoise* and *timerlat* tracer documentation for the running kernel version.h](hIf not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh and }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh5 tracer documentation for the running kernel version.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK7hjubeh}(h]h ]h"]h$]h&]uh1jhj hK0hjhhubj)}(h **-C**, **--cgroup** \[*cgroup*]h](jE)}(h**-C**h]h-C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--cgroup**h]h--cgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh [}(hjhhhNhNubjY)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK9hjhhubj)}(hXSet a *cgroup* to the tracer's threads. If the **-C** option is passed without arguments, the tracer's thread will inherit **rtla**'s *cgroup*. Otherwise, the threads will be placed on the *cgroup* passed to the option. If not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla's cgroup. Kernel workloads are assigned the root cgroup. h](j)}(hSet a *cgroup* to the tracer's threads. If the **-C** option is passed without arguments, the tracer's thread will inherit **rtla**'s *cgroup*. Otherwise, the threads will be placed on the *cgroup* passed to the option.h](hSet a }(hj5hhhNhNubjY)}(h*cgroup*h]hcgroup}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj5ubh# to the tracer’s threads. If the }(hj5hhhNhNubjE)}(h**-C**h]h-C}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj5ubhH option is passed without arguments, the tracer’s thread will inherit }(hj5hhhNhNubjE)}(h**rtla**h]hrtla}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj5ubh’s }(hj5hhhNhNubjY)}(h*cgroup*h]hcgroup}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj5ubh/. Otherwise, the threads will be placed on the }(hj5hhhNhNubjY)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj5ubh passed to the option.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hK;hj1ubj)}(hIf not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla's cgroup. Kernel workloads are assigned the root cgroup.h]hIf not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla’s cgroup. Kernel workloads are assigned the root cgroup.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK=hj1ubeh}(h]h ]h"]h$]h&]uh1jhj hK;hjhhubj)}(h**--warm-up** *s*h](jE)}(h **--warm-up**h]h --warm-up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*s*h]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hj hK?hjhhubj)}(hAfter starting the workload, let it run for *s* seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded. h]j)}(hAfter starting the workload, let it run for *s* seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded.h](h,After starting the workload, let it run for }(hjhhhNhNubjY)}(h*s*h]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKAhjubah}(h]h ]h"]h$]h&]uh1jhj hKAhjhhubj)}(hhh]j)}(h**--trace-buffer-size** *kB* Set the per-cpu trace buffer size in kB for the tracing output. If not set, the default tracefs buffer size is used. h](j)}(h**--trace-buffer-size** *kB*h](jE)}(h**--trace-buffer-size**h]h--trace-buffer-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*kB*h]hkB}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKFhjubj)}(hhh](j)}(h?Set the per-cpu trace buffer size in kB for the tracing output.h]h?Set the per-cpu trace buffer size in kB for the tracing output.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKDhj6ubj)}(h4If not set, the default tracefs buffer size is used.h]h4If not set, the default tracefs buffer size is used.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKFhj6ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKFhjubah}(h]h ]h"]h$]h&]uh1jhjhhhj hNubj)}(h**--on-threshold** *action*h](jE)}(h**--on-threshold**h]h--on-threshold}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjgubh }(hjghhhNhNubjY)}(h*action*h]haction}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjgubeh}(h]h ]h"]h$]h&]uh1j hj hKHhjhhubj)}(hX4Defines an action to be executed when tracing is stopped on a latency threshold specified by |threshold|. Multiple --on-threshold actions may be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed. Supported actions are: - *trace[,file=]* Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times, and --no-trace will not disable trace output when enabled through this option. - *signal,num=,pid=* Sends signal to process. "parent" might be specified in place of pid to target the parent process of rtla. - *shell,command=* Execute shell command. - *continue* Continue tracing after actions are executed instead of stopping. Example: $ rtla |tool| |thresharg| 20 --on-threshold trace --on-threshold shell,command="grep ipi_send |tracer|\_trace.txt" --on-threshold signal,num=2,pid=parent This will save a trace with the default filename "|tracer|\_trace.txt", print its lines that contain the text "ipi_send" on standard output, and send signal 2 (SIGINT) to the parent process. Performance Considerations: |actionsperf| This option cannot be unset. h](j)}(hiDefines an action to be executed when tracing is stopped on a latency threshold specified by |threshold|.h](h]Defines an action to be executed when tracing is stopped on a latency threshold specified by }(hjhhhNhNubjE)}(hjh]h -a/--auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhjhhubh, }(hjhhhNhNubjE)}(hjh]h-i/--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhjhhubh, or }(hjhhhNhNubjE)}(hjh]h -T/--thread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhjhhubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKJhjubj)}(hMultiple --on-threshold actions may be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed.h]hMultiple --on-threshold actions may be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKMhjubj)}(hSupported actions are:h]hSupported actions are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKQhjubj )}(hhh](j )}(hX(*trace[,file=]* Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times, and --no-trace will not disable trace output when enabled through this option. h](j)}(h*trace[,file=]*h]jY)}(hjh]htrace[,file=]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubah}(h]h ]h"]h$]h&]uh1j hj hKShjubj)}(hX Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times, and --no-trace will not disable trace output when enabled through this option.mh]hX Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times, and --no-trace will not disable trace output when enabled through this option.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKUhjubeh}(h]h ]h"]h$]h&]uh1j hjubj )}(h*signal,num=,pid=* Sends signal to process. "parent" might be specified in place of pid to target the parent process of rtla. h](j)}(h*signal,num=,pid=*h]jY)}(hj*h]hsignal,num=,pid=}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj(ubah}(h]h ]h"]h$]h&]uh1j hj hKZhj$ubj)}(hjSends signal to process. "parent" might be specified in place of pid to target the parent process of rtla.h]hnSends signal to process. “parent” might be specified in place of pid to target the parent process of rtla.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK\hj$ubeh}(h]h ]h"]h$]h&]uh1j hjubj )}(h2*shell,command=* Execute shell command. h](j)}(h*shell,command=*h]jY)}(hjYh]hshell,command=}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjWubah}(h]h ]h"]h$]h&]uh1j hj hK_hjSubj)}(hExecute shell command.h]hExecute shell command.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKahjSubeh}(h]h ]h"]h$]h&]uh1j hjubj )}(hM*continue* Continue tracing after actions are executed instead of stopping. h](j)}(h *continue*h]jY)}(hjh]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubah}(h]h ]h"]h$]h&]uh1j hj hKchjubj)}(h@Continue tracing after actions are executed instead of stopping.h]h@Continue tracing after actions are executed instead of stopping.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKehjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]jj juh1j hj hKShjubj)}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKghjubj)}(h$ rtla |tool| |thresharg| 20 --on-threshold trace --on-threshold shell,command="grep ipi_send |tracer|\_trace.txt" --on-threshold signal,num=2,pid=parenth](h$ rtla }(hjhhhNhNubh timerlat hist}(hjhhhNhNubh }(hjhhhNhNubh-T}(hjhhhNhNubhG 20 --on-threshold trace --on-threshold shell,command=”grep ipi_send }(hjhhhNhNubhtimerlat}(hjhhhNhNubh5_trace.txt” --on-threshold signal,num=2,pid=parent}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKihjubj)}(hThis will save a trace with the default filename "|tracer|\_trace.txt", print its lines that contain the text "ipi_send" on standard output, and send signal 2 (SIGINT) to the parent process.h](h4This will save a trace with the default filename “}(hjhhhNhNubhtimerlat}(hjhhhNhNubh_trace.txt”, print its lines that contain the text “ipi_send” on standard output, and send signal 2 (SIGINT) to the parent process.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKmhjubj)}(hPerformance Considerations:h]hPerformance Considerations:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKqhjubj)}(h |actionsperf|h](h5For time-sensitive actions, it is recommended to run }(hjhhhNhNubjE)}(hjQh]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhjhhubh with BPF support and RT priority. Note that due to implementational limitations, actions might be delayed up to one second after tracing is stopped if BPF mode is not available or disabled.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKshjubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKuhjubeh}(h]h ]h"]h$]h&]uh1jhj hKJhjhhubj)}(h**--on-end** *action*h](jE)}(h **--on-end**h]h--on-end}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjBubh }(hjBhhhNhNubjY)}(h*action*h]haction}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjBubeh}(h]h ]h"]h$]h&]uh1j hj hKwhjhhubj)}(hXDefines an action to be executed at the end of tracing. Multiple --on-end actions can be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed. See the documentation for **--on-threshold** for the list of supported actions, with the exception that *continue* has no effect. Example: $ rtla |tool| -d 5s --on-end trace This runs rtla with the default options, and saves trace output at the end. This option cannot be unset. h](j)}(h7Defines an action to be executed at the end of tracing.h]h7Defines an action to be executed at the end of tracing.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKyhjlubj)}(hMultiple --on-end actions can be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed.h]hMultiple --on-end actions can be specified, and they will be executed in the order they are provided. If any action fails, subsequent actions in the list will not be executed.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hK{hjlubj)}(hSee the documentation for **--on-threshold** for the list of supported actions, with the exception that *continue* has no effect.h](hSee the documentation for }(hjhhhNhNubjE)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh< for the list of supported actions, with the exception that }(hjhhhNhNubjY)}(h *continue*h]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh has no effect.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhjlubj)}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjlubj)}(h"$ rtla |tool| -d 5s --on-end traceh](h$ rtla }(hjhhhNhNubh timerlat hist}(hjhhhNhNubh -d 5s --on-end trace}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hj hKhjlubj)}(hKThis runs rtla with the default options, and saves trace output at the end.h]hKThis runs rtla with the default options, and saves trace output at the end.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjlubj)}(hThis option cannot be unset.h]hThis option cannot be unset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhjlubeh}(h]h ]h"]h$]h&]uh1jhj hKyhjhhubj)}(h**-h**, **--help**h](jE)}(h**-h**h]h-h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--help**h]h--help}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjhhubj)}(hPrint help menu. h]j)}(hPrint help menu.h]hPrint help menu.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj hKhj.ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(h**--dump-tasks**h]jE)}(hjHh]h --dump-tasks}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjFubah}(h]h ]h"]h$]h&]uh1j h/Documentation/tools/rtla/common_timerlat_aa.txthKhjhhubj)}(hUprints the task running on all CPUs if stop conditions are met (depends on !--no-aa) h]j)}(hTprints the task running on all CPUs if stop conditions are met (depends on !--no-aa)h]hTprints the task running on all CPUs if stop conditions are met (depends on !--no-aa)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj]hKhj^ubah}(h]h ]h"]h$]h&]uh1jhj]hKhjhhubj)}(h **--no-aa**h]jE)}(hjxh]h--no-aa}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjvubah}(h]h ]h"]h$]h&]uh1j hj]hKhjhhubj)}(h8disable auto-analysis, reducing rtla timerlat cpu usage h]j)}(h7disable auto-analysis, reducing rtla timerlat cpu usageh]h7disable auto-analysis, reducing rtla timerlat cpu usage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj]hKhjubah}(h]h ]h"]h$]h&]uh1jhj]hKhjhhubeh}(h]optionsah ]h"]optionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hEXAMPLEh]hEXAMPLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK%ubj)}(hXIn the example below, **rtla timerlat hist** is set to run for *10* minutes, in the cpus *0-4*, *skipping zero* only lines. Moreover, **rtla timerlat hist** will change the priority of the *timerlat* threads to run under *SCHED_DEADLINE* priority, with a *100us* runtime every *1ms* period. The *1ms* period is also passed to the *timerlat* tracer. Auto-analysis is disabled to reduce overhead ::h](hIn the example below, }(hjhhhNhNubjE)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh is set to run for }(hjhhhNhNubjY)}(h*10*h]h10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh minutes, in the cpus }(hjhhhNhNubjY)}(h*0-4*h]h0-4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh, }(hjhhhNhNubjY)}(h*skipping zero*h]h skipping zero}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh only lines. Moreover, }(hjhhhNhNubjE)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh! will change the priority of the }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh threads to run under }(hjhhhNhNubjY)}(h*SCHED_DEADLINE*h]hSCHED_DEADLINE}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh priority, with a }(hjhhhNhNubjY)}(h*100us*h]h100us}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh runtime every }(hjhhhNhNubjY)}(h*1ms*h]h1ms}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh period. The }(hjhhhNhNubjY)}(h*1ms*h]h1ms}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh period is also passed to the }(hjhhhNhNubjY)}(h *timerlat*h]htimerlat}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh5 tracer. Auto-analysis is disabled to reduce overhead}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhK&hjhhubh literal_block)}(hX[root@alien ~]# timerlat hist -d 10m -c 0-4 -P d:100us:1ms -p 1000 --no-aa # RTLA timerlat histogram # Time unit is microseconds (us) # Duration: 0 00:10:00 Index IRQ-000 Thr-000 IRQ-001 Thr-001 IRQ-002 Thr-002 IRQ-003 Thr-003 IRQ-004 Thr-004 0 276489 0 206089 0 466018 0 481102 0 205546 0 1 318327 35487 388149 30024 94531 48382 83082 71078 388026 55730 2 3282 122584 4019 126527 28231 109012 23311 89309 4568 98739 3 940 11815 837 9863 6209 16227 6895 17196 910 9780 4 444 17287 424 11574 2097 38443 2169 36736 462 13476 5 206 43291 255 25581 1223 101908 1304 101137 236 28913 6 132 101501 96 64584 635 213774 757 215471 99 73453 7 74 169347 65 124758 350 57466 441 53639 69 148573 8 53 85183 31 156751 229 9052 306 9026 39 139907 9 22 10387 12 42762 161 2554 225 2689 19 26192 10 13 1898 8 5770 114 1247 128 1405 13 3772 11 9 560 9 924 71 686 76 765 8 713 12 4 256 2 360 50 411 64 474 3 278 13 2 167 2 172 43 256 53 350 4 180 14 1 88 1 116 15 198 42 223 0 115 15 2 63 3 94 11 139 20 150 0 58 16 2 37 0 56 5 78 10 102 0 39 17 0 18 0 28 4 57 8 80 0 15 18 0 8 0 17 2 50 6 56 0 12 19 0 9 0 5 0 19 0 48 0 18 20 0 4 0 8 0 11 2 27 0 4 21 0 2 0 3 1 9 1 18 0 6 22 0 1 0 3 1 7 0 3 0 5 23 0 2 0 4 0 2 0 7 0 2 24 0 2 0 2 1 3 0 3 0 5 25 0 0 0 1 0 1 0 1 0 3 26 0 1 0 0 0 2 0 2 0 0 27 0 0 0 3 0 1 0 0 0 1 28 0 0 0 3 0 0 0 1 0 0 29 0 0 0 2 0 2 0 1 0 3 30 0 1 0 0 0 0 0 0 0 0 31 0 1 0 0 0 0 0 2 0 2 32 0 0 0 1 0 2 0 0 0 0 33 0 0 0 2 0 0 0 0 0 1 34 0 0 0 0 0 0 0 0 0 2 35 0 1 0 1 0 0 0 0 0 1 36 0 1 0 0 0 1 0 1 0 0 37 0 0 0 1 0 0 0 0 0 0 40 0 0 0 0 0 1 0 1 0 0 41 0 0 0 0 0 0 0 0 0 1 42 0 0 0 0 0 0 0 0 0 1 44 0 0 0 0 0 1 0 0 0 0 46 0 0 0 0 0 0 0 1 0 0 47 0 0 0 0 0 0 0 0 0 1 50 0 0 0 0 0 0 0 0 0 1 54 0 0 0 1 0 0 0 0 0 0 58 0 0 0 1 0 0 0 0 0 0 over: 0 0 0 0 0 0 0 0 0 0 count: 600002 600002 600002 600002 600002 600002 600002 600002 600002 600002 min: 0 1 0 1 0 1 0 1 0 1 avg: 0 5 0 5 0 4 0 4 0 5 max: 16 36 15 58 24 44 21 46 13 50h]hX[root@alien ~]# timerlat hist -d 10m -c 0-4 -P d:100us:1ms -p 1000 --no-aa # RTLA timerlat histogram # Time unit is microseconds (us) # Duration: 0 00:10:00 Index IRQ-000 Thr-000 IRQ-001 Thr-001 IRQ-002 Thr-002 IRQ-003 Thr-003 IRQ-004 Thr-004 0 276489 0 206089 0 466018 0 481102 0 205546 0 1 318327 35487 388149 30024 94531 48382 83082 71078 388026 55730 2 3282 122584 4019 126527 28231 109012 23311 89309 4568 98739 3 940 11815 837 9863 6209 16227 6895 17196 910 9780 4 444 17287 424 11574 2097 38443 2169 36736 462 13476 5 206 43291 255 25581 1223 101908 1304 101137 236 28913 6 132 101501 96 64584 635 213774 757 215471 99 73453 7 74 169347 65 124758 350 57466 441 53639 69 148573 8 53 85183 31 156751 229 9052 306 9026 39 139907 9 22 10387 12 42762 161 2554 225 2689 19 26192 10 13 1898 8 5770 114 1247 128 1405 13 3772 11 9 560 9 924 71 686 76 765 8 713 12 4 256 2 360 50 411 64 474 3 278 13 2 167 2 172 43 256 53 350 4 180 14 1 88 1 116 15 198 42 223 0 115 15 2 63 3 94 11 139 20 150 0 58 16 2 37 0 56 5 78 10 102 0 39 17 0 18 0 28 4 57 8 80 0 15 18 0 8 0 17 2 50 6 56 0 12 19 0 9 0 5 0 19 0 48 0 18 20 0 4 0 8 0 11 2 27 0 4 21 0 2 0 3 1 9 1 18 0 6 22 0 1 0 3 1 7 0 3 0 5 23 0 2 0 4 0 2 0 7 0 2 24 0 2 0 2 1 3 0 3 0 5 25 0 0 0 1 0 1 0 1 0 3 26 0 1 0 0 0 2 0 2 0 0 27 0 0 0 3 0 1 0 0 0 1 28 0 0 0 3 0 0 0 1 0 0 29 0 0 0 2 0 2 0 1 0 3 30 0 1 0 0 0 0 0 0 0 0 31 0 1 0 0 0 0 0 2 0 2 32 0 0 0 1 0 2 0 0 0 0 33 0 0 0 2 0 0 0 0 0 1 34 0 0 0 0 0 0 0 0 0 2 35 0 1 0 1 0 0 0 0 0 1 36 0 1 0 0 0 1 0 1 0 0 37 0 0 0 1 0 0 0 0 0 0 40 0 0 0 0 0 1 0 1 0 0 41 0 0 0 0 0 0 0 0 0 1 42 0 0 0 0 0 0 0 0 0 1 44 0 0 0 0 0 1 0 0 0 0 46 0 0 0 0 0 0 0 1 0 0 47 0 0 0 0 0 0 0 0 0 1 50 0 0 0 0 0 0 0 0 0 1 54 0 0 0 1 0 0 0 0 0 0 58 0 0 0 1 0 0 0 0 0 0 over: 0 0 0 0 0 0 0 0 0 0 count: 600002 600002 600002 600002 600002 600002 600002 600002 600002 600002 min: 0 1 0 1 0 1 0 1 0 1 avg: 0 5 0 5 0 4 0 4 0 5 max: 16 36 15 58 24 44 21 46 13 50}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhK-hjhhubeh}(h]exampleah ]h"]exampleah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(hSEE ALSOh]hSEE ALSO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhubj)}(h0**rtla-timerlat**\(1), **rtla-timerlat-top**\(1)h](jE)}(h**rtla-timerlat**h]h rtla-timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh(1), }(hjhhhNhNubjE)}(h**rtla-timerlat-top**h]hrtla-timerlat-top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh(1)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKihjhhubj)}(hH`Timerlat tracer `__h]j1)}(hjh]hTimerlat tracer}(hjhhhNhNubah}(h]h ]h"]h$]h&]nameTimerlat tracerrefuri2https://docs.kernel.org/trace/timerlat-tracer.htmluh1j0hjubah}(h]h ]h"]h$]h&]uh1j hhhKkhjhhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKhubh)}(hhh](h)}(hAUTHORh]hAUTHOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKnubj)}(h:Written by Daniel Bristot de Oliveira h](h'Written by Daniel Bristot de Oliveira <}(hjhhhNhNubj1)}(hbristot@kernel.orgh]hbristot@kernel.org}(hj'hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bristot@kernel.orguh1j0hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKohjhhubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hjCsbah}(h]h ]h"]h$]h&]jjuh1jAhjhhh,Documentation/tools/rtla/common_appendix.txthKubeh}(h]authorah ]h"]authorah$]h&]uh1hhhhhhhhKnubh)}(hhh](h)}(hUNSETTING OPTIONSh]hUNSETTING OPTIONS}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhhhjQhKubj)}(h{The effect of most command line options can be reverted by prepending "no-" to the long variant of the option, for example:h]hThe effect of most command line options can be reverted by prepending “no-” to the long variant of the option, for example:}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhKhjZhhubj)}(h&$ rtla timerlat top -p 100 --no-periodh]h&$ rtla timerlat top -p 100 --no-period}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK hjZhhubj)}(h7resets the period back to the default value of 1000 us.h]h7resets the period back to the default value of 1000 us.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK hjZhhubj)}(hX=If a command line option sets multiple RTLA parameters at once, the inverted option will revert all of them, even if they were not set by the particular option. For example, since using "--auto" implies "--trace", specifying "--trace --no-auto" will also disable trace output, just like if "--no-trace" was specified.h]hXMIf a command line option sets multiple RTLA parameters at once, the inverted option will revert all of them, even if they were not set by the particular option. For example, since using “--auto” implies “--trace”, specifying “--trace --no-auto” will also disable trace output, just like if “--no-trace” was specified.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK hjZhhubeh}(h]unsetting-optionsah ]h"]unsetting optionsah$]h&]uh1hhhhhhjQhKubh)}(hhh](h)}(hSIGINT BEHAVIORh]hSIGINT BEHAVIOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjQhKubj)}(hqOn the first SIGINT, RTLA exits after collecting all outstanding samples up to the point of receiving the signal.h]hqOn the first SIGINT, RTLA exits after collecting all outstanding samples up to the point of receiving the signal.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhKhjhhubj)}(hWhen receiving more than one SIGINT, RTLA discards any outstanding samples, and exits while displaying only samples that have already been processed.h]hWhen receiving more than one SIGINT, RTLA discards any outstanding samples, and exits while displaying only samples that have already been processed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhKhjhhubj)}(haIf SIGINT is received during RTLA cleanup, RTLA exits immediately via the default signal handler.h]haIf SIGINT is received during RTLA cleanup, RTLA exits immediately via the default signal handler.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhKhjhhubj)}(hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.h]hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK hjhhubj)}(hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.h]hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK%hjhhubeh}(h]sigint-behaviorah ]h"]sigint behaviorah$]h&]uh1hhhhhhjQhKubh)}(hhh](h)}(h EXIT STATUSh]h EXIT STATUS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhjQhK*ubj)}(h0 Passed: the test did not hit the stop tracing condition 1 Error: invalid argument 2 Failed: the test hit the stop tracing condition 129 Help: either user requested help or incorrect option was specifiedh]h0 Passed: the test did not hit the stop tracing condition 1 Error: invalid argument 2 Failed: the test hit the stop tracing condition 129 Help: either user requested help or incorrect option was specified}hjsbah}(h]h ]h"]h$]h&]jjuh1jhjQhK.hj hhubeh}(h] exit-statusah ]h"] exit statusah$]h&]uh1hhhhhhjQhK*ubh)}(hhh](h)}(hREPORTING BUGSh]hREPORTING BUGS}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hhhjQhK4ubj)}(hUReport bugs to and h](hReport bugs to <}(hjBhhhNhNubj1)}(hlinux-kernel@vger.kernel.orgh]hlinux-kernel@vger.kernel.org}(hjJhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-kernel@vger.kernel.orguh1j0hjBubh> and <}(hjBhhhNhNubj1)}(h!linux-trace-devel@vger.kernel.orgh]h!linux-trace-devel@vger.kernel.org}(hj^hhhNhNubah}(h]h ]h"]h$]h&]refuri(mailto:linux-trace-devel@vger.kernel.orguh1j0hjBubh>}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjQhK5hj1hhubeh}(h]reporting-bugsah ]h"]reporting bugsah$]h&]uh1hhhhhhjQhK4ubh)}(hhh](h)}(hLICENSEh]hLICENSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjQhK9ubj)}(h6**rtla** is Free Software licensed under the GNU GPLv2h](jE)}(h**rtla**h]hrtla}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh. is Free Software licensed under the GNU GPLv2}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjQhK:hjhhubeh}(h]licenseah ]h"]licenseah$]h&]uh1hhhhhhjQhK9ubh)}(hhh](h)}(hCOPYINGh]hCOPYING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjQhK=ubj)}(hwCopyright \(C) 2021 Red Hat, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).h]hwCopyright (C) 2021 Red Hat, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjQhK>hjhhubeh}(h]copyingah ]h"]copyingah$]h&]uh1hhhhhhjQhK=ubeh}(h]0histograms-of-the-operating-system-timer-latencyah ]h"]0histograms of the operating system timer latencyah$]h&]uh1hhhhhhhhKubeh}(h]rtla-timerlat-histah ]h"]rtla-timerlat-histah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehƌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhj%jj5j)jDj8jejGusubstitution_names}(toolhÌ thresholdj% threshargj5tracerjD actionsperfjeurefnames}refids}nameids}(jjjjjwjtjjjjjjj jjWjTjjjjj.j+j}jzjjjju nametypes}(jjjwjjjj jWjjj.j}jjuh}(jhjhjtj/jjzjjjjjjjTjjjZjjj+j jzj1jjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log]/Documentation/tools/rtla/rtla-timerlat-hist.rst(NNNNta decorationNhhub.