5 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]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}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSYNOPSISh]hSYNOPSIS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubh)}(h&**rtla timerlat hist** [*OPTIONS*] ...h](hstrong)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj,ubh [}(hj,hhhNhNubhemphasis)}(h *OPTIONS*h]hOPTIONS}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj,ubh] ...}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h DESCRIPTIONh]h DESCRIPTION}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhhhhhKubh)}(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 }(hjwhhhNhNubj1)}(h**rtla timerlat**h]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjwubh tool is an interface for the }(hjwhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjwubh tracer. The }(hjwhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjwubh 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.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh8Documentation/tools/rtla/common_timerlat_description.rsthKhjfhhubh)}(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 }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh_ tracer outputs information in two ways. It periodically prints the timer latency at the timer }(hjhhhNhNubjE)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh handler and the }(hjhhhNhNubjE)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubhI handler. It also enables the trace of the most relevant information via }(hjhhhNhNubj1)}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh tracepoints.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjfhhubh)}(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 }(hjhhhNhNubj1)}(h**rtla timerlat**h]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh tool sets the options of the }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh 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 }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tracer. If either BPF or the }(hjhhhNhNubj1)}(h**osnoise:timerlat_sample**h]hosnoise:timerlat_sample}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh/ tracepoint it attaches to is unavailable, the }(hjhhhNhNubj1)}(h**rtla timerlat**h]h rtla timerlat}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubhS tool falls back to using tracefs to process the data asynchronously in user space.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK hjfhhubh)}(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 }(hjzhhhNhNubj1)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjzubhh displays a histogram of each tracer event occurrence. This tool uses the periodic information, and the }(hjzhhhNhNubj1)}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjzubh( tracepoints are enabled when using the }(hjzhhhNhNubj1)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjzubh option.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjfhhubeh}(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](j1)}(h **-a/--auto**h]h -a/--auto}hjsbah}(h]h ]h"]h$]h&]uh1j0hjubh, }hjsbj1)}(h **-i/--irq**h]h-i/--irq}hjsbah}(h]h ]h"]h$]h&]uh1j0hjubh, or }hjsbj1)}(h**-T/--thread**h]h -T/--thread}hjsbah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"] thresholdah$]h&]uh1hh4Documentation/tools/rtla/common_timerlat_options.rsthKhjhhubh)}(h.. |thresharg| replace:: -Th]h-T}hjsbah}(h]h ]h"] threshargah$]h&]uh1hhjhKhjhhubh)}(h#.. |tracer| replace:: timerlat h]htimerlat}hj$sbah}(h]h ]h"]tracerah$]h&]uh1hhjhKhjhhubh)}(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 }hj3sbj1)}(h**rtla timerlat**h]h rtla timerlat}hj;sbah}(h]h ]h"]h$]h&]uh1j0hj3ubh 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.}hj3sbeh}(h]h ]h"] actionsperfah$]h&]uh1hhjhKhjhhubh)}(h**-a**, **--auto** *us*h](j1)}(h**-a**h]h-a}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjTubh, }(hjThhhNhNubj1)}(h **--auto**h]h--auto}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjTubh }(hjThhhNhNubjE)}(h*us*h]hus}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjTubeh}(h]h ]h"]h$]h&]uh1hhjhK 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 equilavent to **-P** *f:95*. h]h)}(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 equilavent 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 }(hjhhhNhNubj1)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }hjsbj1)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }hjsbjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubj1)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh. By default, }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tracer uses FIFO:95 for }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh threads, thus equilavent to }(hjhhhNhNubj1)}(h**-P**h]h-P}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }hjsbjE)}(h*f:95*h]hf:95}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubh)}(h**-p**, **--period** *us*h](j1)}(h**-p**h]h-p}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjLubh, }(hjLhhhNhNubj1)}(h **--period**h]h--period}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjLubh }(hjLhhhNhNubjE)}(h*us*h]hus}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjLubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(h2Set the *timerlat* tracer period in microseconds. h]h)}(h1Set the *timerlat* tracer period in microseconds.h](hSet the }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tracer period in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-i**, **--irq** *us*h](j1)}(h**-i**h]h-i}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--irq**h]h--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(hCStop trace if the *IRQ* latency is higher than the argument in us. h]h)}(hBStop trace if the *IRQ* latency is higher than the argument in us.h](hStop trace if the }(hjhhhNhNubjE)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-T**, **--thread** *us*h](j1)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--thread**h]h--thread}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*us*h]hus}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(hFStop trace if the *Thread* latency is higher than the argument in us. h]h)}(hEStop trace if the *Thread* latency is higher than the argument in us.h](hStop trace if the }(hjXhhhNhNubjE)}(h*Thread*h]hThread}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjXubh+ latency is higher than the argument in us.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjTubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-s**, **--stack** *us*h](j1)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj~ubh, }(hj~hhhNhNubj1)}(h **--stack**h]h--stack}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj~ubh }(hj~hhhNhNubjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj~ubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(h[Save the stack trace at the *IRQ* if a *Thread* latency is higher than the argument in us. h]h)}(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 }(hjhhhNhNubjE)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh if a }(hjhhhNhNubjE)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubh)}(h**-t**, **--trace** \[*file*]h](j1)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--trace**h]h--trace}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh [}(hjhhhNhNubjE)}(h*file*h]hfile}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK#hjhhubj)}(h7Save the stopped trace to [*file|timerlat_trace.txt*]. h]h)}(h6Save the stopped trace to [*file|timerlat_trace.txt*].h](hSave the stopped trace to [}(hj:hhhNhNubjE)}(h*file|timerlat_trace.txt*h]hfile|timerlat_trace.txt}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj:ubh].}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK%hj6ubah}(h]h ]h"]h$]h&]uh1jhjhK%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](j1)}(h**--dma-latency**h]h --dma-latency}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjmubh }(hjmhhhNhNubjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjmubeh}(h]h ]h"]h$]h&]uh1jkhjhK*hjgubh definition)}(hhh]h)}(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 }(hjhhhNhNubjE)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh,, aiming to bound exit from idle latencies. }(hjhhhNhNubjE)}(h *cyclictest*h]h cyclictest}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh sets this value to }(hjhhhNhNubjE)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh by default, use }(hjhhhNhNubj1)}(h**--dma-latency**h]h --dma-latency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh to have similar results.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK(hjubah}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ]h"]h$]h&]uh1jehjhK*hjbubjf)}(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](jl)}(h**--deepest-idle-state** *n*h](j1)}(h**--deepest-idle-state**h]h--deepest-idle-state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*n*h]hn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1jkhjhK2hjubj)}(hhh](h)}(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 }(hjAhhhNhNubjE)}(h*n*h]hn}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjAubhS for cpus that are running timerlat threads to reduce exit from idle latencies. If }(hjAhhhNhNubjE)}(h*n*h]hn}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjAubh is -1, all idle states are disabled. On exit from timerlat, the idle state setting is restored to its original state before running timerlat.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK-hj>ubh)}(h+Requires rtla to be built with libcpupower.h]h+Requires rtla to be built with libcpupower.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK2hj>ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jehjhK2hjbhhubeh}(h]h ]h"]h$]h&]uh1j`hjhhhjhNubh)}(h**-k**, **--kernel-threads**h](j1)}(h**-k**h]h-k}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h**--kernel-threads**h]h--kernel-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1hhjhK4hjhhubj)}(h:Use timerlat kernel-space threads, in contrast of **-u**. h]h)}(h9Use timerlat kernel-space threads, in contrast of **-u**.h](h2Use timerlat kernel-space threads, in contrast of }(hjhhhNhNubj1)}(h**-u**h]h-u}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1jhjhK6hjhhubh)}(h**-u**, **--user-threads**h](j1)}(h**-u**h]h-u}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h**--user-threads**h]h--user-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1hhjhK8hjhhubj)}(hX;Set timerlat to run without a workload, and then dispatches user-space workloads to wait on the timerlat_fd. Once the workload is awakes, it goes to sleep again adding so the measurement for the kernel-to-user and user-to-kernel to the tracer output. **--user-threads** will be used unless the user specify **-k**. h]h)}(hX:Set timerlat to run without a workload, and then dispatches user-space workloads to wait on the timerlat_fd. Once the workload is awakes, it goes to sleep again adding so the measurement for the kernel-to-user and user-to-kernel to the tracer output. **--user-threads** will be used unless the user specify **-k**.h](hSet timerlat to run without a workload, and then dispatches user-space workloads to wait on the timerlat_fd. Once the workload is awakes, it goes to sleep again adding so the measurement for the kernel-to-user and user-to-kernel to the tracer output. }(hjhhhNhNubj1)}(h**--user-threads**h]h--user-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh& will be used unless the user specify }(hjhhhNhNubj1)}(h**-k**h]h-k}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1jhjhK:hjhhubh)}(h**-U**, **--user-load**h](j1)}(h**-U**h]h-U}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjMubh, }(hjMhhhNhNubj1)}(h**--user-load**h]h --user-load}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjMubeh}(h]h ]h"]h$]h&]uh1hhjhK?hjhhubj)}(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/sample/timerlat_load.py for an example of user-load code. h]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/sample/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/sample/timerlat_load.py for an example of user-load code.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKAhjwubah}(h]h ]h"]h$]h&]uh1jhjhKAhjhhubh)}(h**-b**, **--bucket-size** *N*h](j1)}(h**-b**h]h-b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h**--bucket-size**h]h --bucket-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*N*h]hN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1hh0Documentation/tools/rtla/common_hist_options.rsthKhjhhubj)}(h-Set the histogram bucket size (default *1*). h]h)}(h,Set the histogram bucket size (default *1*).h](h'Set the histogram bucket size (default }(hjhhhNhNubjE)}(h*1*h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-E**, **--entries** *N*h](j1)}(h**-E**h]h-E}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--entries**h]h --entries}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*N*h]hN}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(h:Set the number of entries of the histogram (default 256). h]h)}(h9Set the number of entries of the histogram (default 256).h]h9Set the number of entries of the histogram (default 256).}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj2 ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**--no-header**h]j1)}(hjL h]h --no-header}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjJ ubah}(h]h ]h"]h$]h&]uh1hhjhK hjhhubj)}(hDo not print header. h]h)}(hDo not print header.h]hDo not print header.}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK hja ubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubh)}(h**--no-summary**h]j1)}(hj{ h]h --no-summary}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjy ubah}(h]h ]h"]h$]h&]uh1hhjhK hjhhubj)}(hDo not print summary. h]h)}(hDo not print summary.h]hDo not print summary.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**--no-index**h]j1)}(hj h]h --no-index}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(hDo not print index. h]h)}(hDo not print index.h]hDo not print index.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**--with-zeros**h]j1)}(hj h]h --with-zeros}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubah}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(hPrint zero only entries. h]h)}(hPrint zero only entries.h]hPrint zero only entries.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-c**, **--cpus** *cpu-list*h](j1)}(h**-c**h]h-c}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh, }(hj hhhNhNubj1)}(h **--cpus**h]h--cpus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h *cpu-list*h]hcpu-list}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]uh1hh+Documentation/tools/rtla/common_options.rsthKhjhhubj)}(hBSet the osnoise tracer to run the sample threads in the cpu-list. h]h)}(hASet the osnoise tracer to run the sample threads in the cpu-list.h]hASet the osnoise tracer to run the sample threads in the cpu-list.}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKhjC ubah}(h]h ]h"]h$]h&]uh1jhjB hKhjhhubh)}(h&**-H**, **--house-keeping** *cpu-list*h](j1)}(h**-H**h]h-H}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj[ ubh, }(hj[ hhhNhNubj1)}(h**--house-keeping**h]h--house-keeping}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj[ ubh }(hj[ hhhNhNubjE)}(h *cpu-list*h]hcpu-list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj[ ubeh}(h]h ]h"]h$]h&]uh1hhjB hKhjhhubj)}(h5Run rtla control threads only on the given cpu-list. h]h)}(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&]uh1hhjB hKhj ubah}(h]h ]h"]h$]h&]uh1jhjB hKhjhhubh)}(h&**-d**, **--duration** *time[s|m|h|d]*h](j1)}(h**-d**h]h-d}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh, }(hj hhhNhNubj1)}(h**--duration**h]h --duration}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h*time[s|m|h|d]*h]h time[s|m|h|d]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]uh1hhjB hK hjhhubj)}(h!Set the duration of the session. h]h)}(h Set the duration of the session.h]h Set the duration of the session.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hK hj ubah}(h]h ]h"]h$]h&]uh1jhjB hK hjhhubh)}(h**-D**, **--debug**h](j1)}(h**-D**h]h-D}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh, }(hj hhhNhNubj1)}(h **--debug**h]h--debug}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubeh}(h]h ]h"]h$]h&]uh1hhjB hK hjhhubj)}(hPrint debug info. h]h)}(hPrint debug info.h]hPrint debug info.}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKhj- ubah}(h]h ]h"]h$]h&]uh1jhjB hKhjhhubh)}(h**-e**, **--event** *sys:event*h](j1)}(h**-e**h]h-e}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjE ubh, }(hjE hhhNhNubj1)}(h **--event**h]h--event}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjE ubh }(hjE hhhNhNubjE)}(h *sys:event*h]h sys:event}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjE ubeh}(h]h ]h"]h$]h&]uh1hhjB hKhjhhubj)}(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]h)}(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 (}(hj hhhNhNubj1)}(h**-t**h]h-t}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh7) session. The argument can be a specific event, e.g., }(hj hhhNhNubj1)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h*sched:sched_switch*h]hsched:sched_switch}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh), or all events of a system group, e.g., }(hj hhhNhNubj1)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }hj sbjE)}(h*sched*h]hsched}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh . Multiple }(hj hhhNhNubj1)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh% are allowed. It is only active when }(hj hhhNhNubj1)}(h**-t**h]h-t}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh or }(hj hhhNhNubj1)}(h**-a**h]h-a}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh are set.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hKhj ubah}(h]h ]h"]h$]h&]uh1jhjB hKhjhhubh)}(h**--filter** **h](j1)}(h **--filter**h]h--filter}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj) ubh }(hj) hhhNhNubjE)}(h **h]h}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj) ubeh}(h]h ]h"]h$]h&]uh1hhjB 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. h]h)}(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 }(hjW hhhNhNubj1)}(h**-e**h]h-e}(hj_ hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjW ubh }(hjW hhhNhNubjE)}(h *sys:event*h]h sys:event}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjW ubh event with }(hjW hhhNhNubjE)}(h **h]h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjW ubh4. For further information about event filtering see }(hjW hhhNhNubh 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}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j hjW ubh.}(hjW hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hKhjS ubah}(h]h ]h"]h$]h&]uh1jhjB hKhjhhubja)}(hhh]jf)}(hXj**--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. h](jl)}(h**--trigger** **h](j1)}(h **--trigger**h]h --trigger}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h **h]h }(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]uh1jkhjB hK"hj ubj)}(hhh](h)}(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 }(hj hhhNhNubj1)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh . If the }(hj hhhNhNubjE)}(h*hist:*h]hhist:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubhX trigger is activated, the output histogram will be automatically saved to a file named }(hj hhhNhNubjE)}(h*system_event_hist.txt*h]hsystem_event_hist.txt}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh. For example, the command:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hKhj ubh)}(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”}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKhj ubh)}(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 }(hjN hhhNhNubjE)}(h*osnoise:irq_noise*h]hosnoise:irq_noise}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjN ubh event in }(hjN hhhNhNubjE)}(h*osnoise_irq_noise_hist.txt*h]hosnoise_irq_noise_hist.txt}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjN ubh.}(hjN hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK hj ubh)}(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 hhhNhNubj )}(hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggersh]hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggers}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1j hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK"hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jehjB hK"hj ubah}(h]h ]h"]h$]h&]uh1j`hjhhhjB hNubh)}(h>**-P**, **--priority** *o:prio|r:prio|f:prio|d:runtime:period*h](j1)}(h**-P**h]h-P}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh, }(hj hhhNhNubj1)}(h**--priority**h]h --priority}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj ubh }(hj hhhNhNubjE)}(h'*o:prio|r:prio|f:prio|d:runtime:period*h]h%o:prio|r:prio|f:prio|d:runtime:period}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubeh}(h]h ]h"]h$]h&]uh1hhjB hK$hjhhubj)}(hX@Set scheduling parameters to the osnoise 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. h](h)}(h\Set scheduling parameters to the osnoise tracer threads, the format to set the priority are:h]h\Set scheduling parameters to the osnoise tracer threads, the format to set the priority are:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hK&hj ubh bullet_list)}(hhh](h list_item)}(h'*o:prio* - use SCHED_OTHER with *prio*;h]h)}(hj h](jE)}(h*o:prio*h]ho:prio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh - use SCHED_OTHER with }(hj hhhNhNubjE)}(h*prio*h]hprio}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK(hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h$*r:prio* - use SCHED_RR with *prio*;h]h)}(hjAh](jE)}(h*r:prio*h]hr:prio}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjCubh - use SCHED_RR with }(hjChhhNhNubjE)}(h*prio*h]hprio}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjCubh;}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK)hj?ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h&*f:prio* - use SCHED_FIFO with *prio*;h]h)}(hjxh](jE)}(h*f:prio*h]hf:prio}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubh - use SCHED_FIFO with }(hjzhhhNhNubjE)}(h*prio*h]hprio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubh;}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK*hjvubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hf*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. h]h)}(he*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds.h](jE)}(h$*d:runtime[us|ms|s]:period[us|ms|s]*h]h"d:runtime[us|ms|s]:period[us|ms|s]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh - use SCHED_DEADLINE with }(hjhhhNhNubjE)}(h *runtime*h]hruntime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh and }(hjhhhNhNubjE)}(h*period*h]hperiod}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh in nanoseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhjB hK(hj ubeh}(h]h ]h"]h$]h&]uh1jhjB hK&hjhhubh)}(h **-C**, **--cgroup**\[*=cgroup*]h](j1)}(h**-C**h]h-C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--cgroup**h]h--cgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh[}(hjhhhNhNubjE)}(h *=cgroup*h]h=cgroup}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh]}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK-hjhhubj)}(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]h)}(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 }(hjIhhhNhNubjE)}(h*cgroup*h]hcgroup}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjIubh# to the tracer’s threads. If the }(hjIhhhNhNubj1)}(h**-C**h]h-C}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjIubhH option is passed without arguments, the tracer’s thread will inherit }(hjIhhhNhNubj1)}(h**rtla**h]hrtla}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjIubh’s }(hjIhhhNhNubjE)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjIubh/. Otherwise, the threads will be placed on the }(hjIhhhNhNubjE)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjIubh passed to the option.}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK/hjEubah}(h]h ]h"]h$]h&]uh1jhjB hK/hjhhubh)}(h**--warm-up** *s*h](j1)}(h **--warm-up**h]h --warm-up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*s*h]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1hhjB hK1hjhhubj)}(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)}(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 }(hjhhhNhNubjE)}(h*s*h]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh 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&]uh1hhjB hK3hjubah}(h]h ]h"]h$]h&]uh1jhjB hK3hjhhubja)}(hhh]jf)}(h]**--trace-buffer-size** *kB* Set the per-cpu trace buffer size in kB for the tracing output. h](jl)}(h**--trace-buffer-size** *kB*h](j1)}(h**--trace-buffer-size**h]h--trace-buffer-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh }(hjhhhNhNubjE)}(h*kB*h]hkB}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubeh}(h]h ]h"]h$]h&]uh1jkhjB hK6hjubj)}(hhh]h)}(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.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hK6hj<ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jehjB hK6hj ubah}(h]h ]h"]h$]h&]uh1j`hjhhhjB hNubh)}(h**--on-threshold** *action*h](j1)}(h**--on-threshold**h]h--on-threshold}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj_ubh }(hj_hhhNhNubjE)}(h*action*h]haction}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj_ubeh}(h]h ]h"]h$]h&]uh1hhjB hK8hjhhubj)}(hXDefines 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 nlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times. - *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| h](h)}(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 }(hjhhhNhNubj1)}(hjh]h -a/--auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hNhNhjhhubh, }(hjhhhNhNubj1)}(hjh]h-i/--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hNhNhjhhubh, or }(hjhhhNhNubj1)}(hjh]h -T/--thread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hNhNhjhhubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hK:hjubh)}(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&]uh1hhjB hK=hjubh)}(hSupported actions are:h]hSupported actions are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKAhjubj)}(hhh](j)}(h*trace[,file=]* Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that nlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times. h](h)}(h*trace[,file=]*h]jE)}(hjh]htrace[,file=]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&]uh1hhjB hKChjubh)}(hSaves trace output, optionally taking a filename. Alternative to -t/--trace. Note that nlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times.h]hSaves trace output, optionally taking a filename. Alternative to -t/--trace. Note that nlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKEhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h*signal,num=,pid=* Sends signal to process. "parent" might be specified in place of pid to target the parent process of rtla. h](h)}(h*signal,num=,pid=*h]jE)}(hj"h]hsignal,num=,pid=}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubah}(h]h ]h"]h$]h&]uh1hhjB hKIhjubh)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h2*shell,command=* Execute shell command. h](h)}(h*shell,command=*h]jE)}(hjQh]hshell,command=}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjOubah}(h]h ]h"]h$]h&]uh1hhjB hKNhjKubh)}(hExecute shell command.h]hExecute shell command.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKPhjKubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hM*continue* Continue tracing after actions are executed instead of stopping. h](h)}(h *continue*h]jE)}(hjh]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj~ubah}(h]h ]h"]h$]h&]uh1hhjB hKRhjzubh)}(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&]uh1hhjB hKThjzubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjB hKChjubh)}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKVhjubh)}(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&]uh1hhjB hKXhjubh)}(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&]uh1hhjB hK\hjubh)}(hPerformance Considerations:h]hPerformance Considerations:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hK`hjubh)}(h |actionsperf|h](h5For time-sensitive actions, it is recommended to run }(hjhhhNhNubj1)}(hj=h]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hNhNhjhhubh 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&]uh1hhjB hKbhjubeh}(h]h ]h"]h$]h&]uh1jhjB hK:hjhhubh)}(h**--on-end** *action*h](j1)}(h **--on-end**h]h--on-end}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj,ubh }(hj,hhhNhNubjE)}(h*action*h]haction}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj,ubeh}(h]h ]h"]h$]h&]uh1hhjB hKdhjhhubj)}(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. h](h)}(h7Defines an action to be executed at the end of tracing.h]h7Defines an action to be executed at the end of tracing.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKfhjVubh)}(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.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKhhjVubh)}(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 }(hjvhhhNhNubj1)}(h**--on-threshold**h]h--on-threshold}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjvubh< for the list of supported actions, with the exception that }(hjvhhhNhNubjE)}(h *continue*h]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjvubh has no effect.}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjB hKlhjVubh)}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKohjVubh)}(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&]uh1hhjB hKqhjVubh)}(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&]uh1hhjB hKshjVubeh}(h]h ]h"]h$]h&]uh1jhjB hKfhjhhubh)}(h**-h**, **--help**h](j1)}(h**-h**h]h-h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh, }(hjhhhNhNubj1)}(h **--help**h]h--help}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubeh}(h]h ]h"]h$]h&]uh1hhjB hKuhjhhubj)}(hPrint help menu. h]h)}(hPrint help menu.h]hPrint help menu.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKwhj ubah}(h]h ]h"]h$]h&]uh1jhjB hKwhjhhubh)}(h**--dump-tasks**h]j1)}(hj$h]h --dump-tasks}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j0hj"ubah}(h]h ]h"]h$]h&]uh1hh/Documentation/tools/rtla/common_timerlat_aa.rsthKhjhhubj)}(hUprints the task running on all CPUs if stop conditions are met (depends on !--no-aa) h]h)}(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)}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1jhj9hKhjhhubh)}(h **--no-aa**h]j1)}(hjTh]h--no-aa}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjRubah}(h]h ]h"]h$]h&]uh1hhj9hKhjhhubj)}(h8disable auto-analysis, reducing rtla timerlat cpu usage h]h)}(h7disable auto-analysis, reducing rtla timerlat cpu usageh]h7disable auto-analysis, reducing rtla timerlat cpu usage}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhjiubah}(h]h ]h"]h$]h&]uh1jhj9hKhjhhubeh}(h]optionsah ]h"]optionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hEXAMPLEh]hEXAMPLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK%ubh)}(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, }(hjhhhNhNubj1)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh is set to run for }(hjhhhNhNubjE)}(h*10*h]h10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh minutes, in the cpus }(hjhhhNhNubjE)}(h*0-4*h]h0-4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h*skipping zero*h]h skipping zero}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh only lines. Moreover, }(hjhhhNhNubj1)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh! will change the priority of the }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh threads to run under }(hjhhhNhNubjE)}(h*SCHED_DEADLINE*h]hSCHED_DEADLINE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh priority, with a }(hjhhhNhNubjE)}(h*100us*h]h100us}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh runtime every }(hjhhhNhNubjE)}(h*1ms*h]h1ms}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh period. The }(hjhhhNhNubjE)}(h*1ms*h]h1ms}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh period is also passed to the }(hjhhhNhNubjE)}(h *timerlat*h]htimerlat}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh5 tracer. Auto-analysis is disabled to reduce overhead}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK&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 503h]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}hjpsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jnhhhK-hjhhubeh}(h]exampleah ]h"]exampleah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(hSEE ALSOh]hSEE ALSO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKhubh)}(h0**rtla-timerlat**\(1), **rtla-timerlat-top**\(1)h](j1)}(h**rtla-timerlat**h]h rtla-timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh(1), }(hjhhhNhNubj1)}(h**rtla-timerlat-top**h]hrtla-timerlat-top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh(1)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKihjhhubh)}(hd*timerlat* tracer documentation: h](jE)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tracer documentation: <}(hjhhhNhNubj )}(hAhttps://www.kernel.org/doc/html/latest/trace/timerlat-tracer.htmlh]hAhttps://www.kernel.org/doc/html/latest/trace/timerlat-tracer.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKhubh)}(hhh](h)}(hAUTHORh]hAUTHOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKnubh)}(h:Written by Daniel Bristot de Oliveira h](h'Written by Daniel Bristot de Oliveira <}(hjhhhNhNubj )}(hbristot@kernel.orgh]hbristot@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bristot@kernel.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKohjhhubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hj3sbah}(h]h ]h"]h$]h&]j~juh1j1hjhhh,Documentation/tools/rtla/common_appendix.rsthKubeh}(h]authorah ]h"]authorah$]h&]uh1hhhhhhhhKnubh)}(hhh](h)}(h EXIT STATUSh]h EXIT STATUS}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhhhjAhKubjo)}(h0 Passed: the test did not hit the stop tracing condition 1 Error: invalid argument 2 Failed: the test hit the stop tracing conditionh]h0 Passed: the test did not hit the stop tracing condition 1 Error: invalid argument 2 Failed: the test hit the stop tracing condition}hj[sbah}(h]h ]h"]h$]h&]j~juh1jnhjAhKhjJhhubeh}(h] exit-statusah ]h"] exit statusah$]h&]uh1hhhhhhjAhKubh)}(hhh](h)}(hREPORTING BUGSh]hREPORTING BUGS}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhhhjAhK ubh)}(hUReport bugs to and h](hReport bugs to <}(hjhhhNhNubj )}(hlinux-kernel@vger.kernel.orgh]hlinux-kernel@vger.kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-kernel@vger.kernel.orguh1j hjubh> and <}(hjhhhNhNubj )}(h!linux-trace-devel@vger.kernel.orgh]h!linux-trace-devel@vger.kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri(mailto:linux-trace-devel@vger.kernel.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjAhKhjqhhubeh}(h]reporting-bugsah ]h"]reporting bugsah$]h&]uh1hhhhhhjAhK ubh)}(hhh](h)}(hLICENSEh]hLICENSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjAhKubh)}(h6**rtla** is Free Software licensed under the GNU GPLv2h](j1)}(h**rtla**h]hrtla}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j0hjubh. is Free Software licensed under the GNU GPLv2}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjAhKhjhhubeh}(h]licenseah ]h"]licenseah$]h&]uh1hhhhhhjAhKubh)}(hhh](h)}(hCOPYINGh]hCOPYING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjAhKubh)}(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&]uh1hhjAhKhjhhubeh}(h]copyingah ]h"]copyingah$]h&]uh1hhhhhhjAhKubeh}(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_handlerjOerror_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}(hhjjj!jj0j$jQj3usubstitution_names}(toolh thresholdj threshargj!tracerj0 actionsperfjQurefnames}refids}nameids}(j)j&j!jjcj`jjjjjjjjjGjDjnjkjjjjjju nametypes}(j)j!jcjjjjjGjnjjjuh}(j&hjhj`jjjfjjjjjjjDjjkjJjjqjjjju 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.