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 _documenthsourceNlineNubhsection)}(hhh](htitle)}(hrtla-timerlat-histh]hrtla-timerlat-hist}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhK/var/lib/git/docbuild/linux/Documentation/tools/rtla/rtla-timerlat-hist.rsthKubh)}(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&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSYNOPSISh]hSYNOPSIS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK ubh)}(h&**rtla timerlat hist** [*OPTIONS*] ...h](hstrong)}(h**rtla timerlat hist**h]hrtla timerlat hist}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh [}(hjhhhNhNubhemphasis)}(h *OPTIONS*h]hOPTIONS}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh] ...}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hj hhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h DESCRIPTIONh]h DESCRIPTION}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhhhhhKubh)}(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 }(hjfhhhNhNubj )}(h**rtla timerlat**h]h rtla timerlat}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubh tool is an interface for the }(hjfhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjfubh tracer. The }(hjfhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjfubh 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.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh8Documentation/tools/rtla/common_timerlat_description.rsthKhjUhhubh)}(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 }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh_ tracer outputs information in two ways. It periodically prints the timer latency at the timer }(hjhhhNhNubj4)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh handler and the }(hjhhhNhNubj4)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubhI handler. It also enables the trace of the most relevant information via }(hjhhhNhNubj )}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh tracepoints.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjUhhubh)}(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 }(hjhhhNhNubj )}(h**rtla timerlat**h]h rtla timerlat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh tool sets the options of the }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh 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 }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh tracer. If either BPF or the }(hjhhhNhNubj )}(h**osnoise:timerlat_sample**h]hosnoise:timerlat_sample}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh/ tracepoint it attaches to is unavailable, the }(hjhhhNhNubj )}(h**rtla timerlat**h]h rtla timerlat}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhS tool falls back to using tracefs to process the data asynchronously in user space.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK hjUhhubh)}(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 }(hjihhhNhNubj )}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubhh displays a histogram of each tracer event occurrence. This tool uses the periodic information, and the }(hjihhhNhNubj )}(h **osnoise:**h]hosnoise:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh( tracepoints are enabled when using the }(hjihhhNhNubj )}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh option.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjUhhubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOPTIONSh]hOPTIONS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(h**-a**, **--auto** *us*h](j )}(h**-a**h]h-a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h **--auto**h]h--auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1hh4Documentation/tools/rtla/common_timerlat_options.rsthKhjhhubh 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 }(hj hhhNhNubj )}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h*us*h]hus}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh }hj sbj )}(h**-s**h]h-s}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }hj sbj4)}(h*us*h]hus}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh }(hj hhhNhNubj )}(h**-t**h]h-t}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh. By default, }(hj hhhNhNubj4)}(h *timerlat*h]htimerlat}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh tracer uses FIFO:95 for }(hj hhhNhNubj4)}(h *timerlat*h]htimerlat}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh threads, thus equilavent to }(hj hhhNhNubj )}(h**-P**h]h-P}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }hj sbj4)}(h*f:95*h]hf:95}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-p**, **--period** *us*h](j )}(h**-p**h]h-p}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h **--period**h]h--period}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(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 }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh tracer period in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubh)}(h**-i**, **--irq** *us*h](j )}(h**-i**h]h-i}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh, }(hj%hhhNhNubj )}(h **--irq**h]h--irq}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh }(hj%hhhNhNubj4)}(h*us*h]hus}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj%ubeh}(h]h ]h"]h$]h&]uh1hhjhK hjhhubj)}(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 }(hjehhhNhNubj4)}(h*IRQ*h]hIRQ}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjeubh+ latency is higher than the argument in us.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjaubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-T**, **--thread** *us*h](j )}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h **--thread**h]h--thread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(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 }(hjhhhNhNubj4)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-s**, **--stack** *us*h](j )}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h **--stack**h]h--stack}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(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 }(hj1hhhNhNubj4)}(h*IRQ*h]hIRQ}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj1ubh if a }(hj1hhhNhNubj4)}(h*Thread*h]hThread}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj1ubh+ latency is higher than the argument in us.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhj-ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubh)}(h**-t**, **--trace** \[*file*]h](j )}(h**-t**h]h-t}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh, }(hjihhhNhNubj )}(h **--trace**h]h--trace}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh [}(hjihhhNhNubj4)}(h*file*h]hfile}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjiubh]}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjhhubj)}(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 [}(hjhhhNhNubj4)}(h*file|timerlat_trace.txt*h]hfile|timerlat_trace.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh].}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubhdefinition_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](j )}(h**--dma-latency**h]h --dma-latency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhjhK hjubh 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 }(hjhhhNhNubj4)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh,, aiming to bound exit from idle latencies. }(hjhhhNhNubj4)}(h *cyclictest*h]h cyclictest}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh sets this value to }(hjhhhNhNubj4)}(h*0*h]h0}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh by default, use }(hjhhhNhNubj )}(h**--dma-latency**h]h --dma-latency}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*0*h]h0}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh to have similar results.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhjhK 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](j )}(h**--deepest-idle-state**h]h--deepest-idle-state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjubj )}(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 }(hjhhhNhNubj4)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubhS for cpus that are running timerlat threads to reduce exit from idle latencies. If }(hjhhhNhNubj4)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh is -1, all idle states are disabled. On exit from timerlat, the idle state setting is restored to its original state before running timerlat.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK#hjubh)}(h+Requires rtla to be built with libcpupower.h]h+Requires rtla to be built with libcpupower.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK(hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjhhubeh}(h]h ]h"]h$]h&]uh1jhjhhhjhNubh)}(h**-k**, **--kernel-threads**h](j )}(h**-k**h]h-k}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h**--kernel-threads**h]h--kernel-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhK*hjhhubj)}(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 }(hj4hhhNhNubj )}(h**-u**h]h-u}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK,hj0ubah}(h]h ]h"]h$]h&]uh1jhjhK,hjhhubh)}(h**-u**, **--user-threads**h](j )}(h**-u**h]h-u}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubh, }(hjZhhhNhNubj )}(h**--user-threads**h]h--user-threads}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1hhjhK.hjhhubj)}(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. }(hjhhhNhNubj )}(h**--user-threads**h]h--user-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh& will be used unless the user specify }(hjhhhNhNubj )}(h**-k**h]h-k}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1jhjhK0hjhhubh)}(h**-U**, **--user-load**h](j )}(h**-U**h]h-U}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h**--user-load**h]h --user-load}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhK5hjhhubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1jhjhK7hjhhubh)}(h**-b**, **--bucket-size** *N*h](j )}(h**-b**h]h-b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h**--bucket-size**h]h --bucket-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*N*h]hN}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(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 }(hjChhhNhNubj4)}(h*1*h]h1}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjCubh).}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hKhj?ubah}(h]h ]h"]h$]h&]uh1jhj>hKhjhhubh)}(h**-E**, **--entries** *N*h](j )}(h**-E**h]h-E}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh, }(hjihhhNhNubj )}(h **--entries**h]h --entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh }(hjihhhNhNubj4)}(h*N*h]hN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjiubeh}(h]h ]h"]h$]h&]uh1hhj>hKhjhhubj)}(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).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhjubah}(h]h ]h"]h$]h&]uh1jhj>hKhjhhubh)}(h**--no-header**h]j )}(hjh]h --no-header}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhj>hK hjhhubj)}(hDo not print header. h]h)}(hDo not print header.h]hDo not print header.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hK hjubah}(h]h ]h"]h$]h&]uh1jhj>hK hjhhubh)}(h**--no-summary**h]j )}(hjh]h --no-summary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhj>hK hjhhubj)}(hDo not print summary. h]h)}(hDo not print summary.h]hDo not print summary.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj ubah}(h]h ]h"]h$]h&]uh1jhj>hKhjhhubh)}(h**--no-index**h]j )}(hj h]h --no-index}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhj>hKhjhhubj)}(hDo not print index. h]h)}(hDo not print index.h]hDo not print index.}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj2 ubah}(h]h ]h"]h$]h&]uh1jhj>hKhjhhubh)}(h**--with-zeros**h]j )}(hjL h]h --with-zeros}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ ubah}(h]h ]h"]h$]h&]uh1hhj>hKhjhhubj)}(hPrint zero only entries. h]h)}(hPrint zero only entries.h]hPrint zero only entries.}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhja ubah}(h]h ]h"]h$]h&]uh1jhj>hKhjhhubh)}(h**-c**, **--cpus** *cpu-list*h](j )}(h**-c**h]h-c}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy ubh, }(hjy hhhNhNubj )}(h **--cpus**h]h--cpus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy ubh }(hjy hhhNhNubj4)}(h *cpu-list*h]hcpu-list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjy 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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubh)}(h&**-H**, **--house-keeping** *cpu-list*h](j )}(h**-H**h]h-H}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }(hj hhhNhNubj )}(h**--house-keeping**h]h--house-keeping}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h *cpu-list*h]hcpu-list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubeh}(h]h ]h"]h$]h&]uh1hhj 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&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubh)}(h&**-d**, **--duration** *time[s|m|h|d]*h](j )}(h**-d**h]h-d}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj" ubh, }(hj" hhhNhNubj )}(h**--duration**h]h --duration}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj" ubh }(hj" hhhNhNubj4)}(h*time[s|m|h|d]*h]h time[s|m|h|d]}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj" ubeh}(h]h ]h"]h$]h&]uh1hhj 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.}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK hj^ ubah}(h]h ]h"]h$]h&]uh1jhj hK hjhhubh)}(h**-D**, **--debug**h](j )}(h**-D**h]h-D}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv ubh, }(hjv hhhNhNubj )}(h **--debug**h]h--debug}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv ubeh}(h]h ]h"]h$]h&]uh1hhj hK hjhhubj)}(hPrint debug info. h]h)}(hPrint debug info.h]hPrint debug info.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubh)}(h**-e**, **--event** *sys:event*h](j )}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }(hj hhhNhNubj )}(h **--event**h]h--event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubeh}(h]h ]h"]h$]h&]uh1hhj 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 hhhNhNubj )}(h**-t**h]h-t}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh7) session. The argument can be a specific event, e.g., }(hj hhhNhNubj )}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h*sched:sched_switch*h]hsched:sched_switch}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh), or all events of a system group, e.g., }(hj hhhNhNubj )}(h**-e**h]h-e}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }hj sbj4)}(h*sched*h]hsched}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh . Multiple }(hj hhhNhNubj )}(h**-e**h]h-e}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh% are allowed. It is only active when }(hj hhhNhNubj )}(h**-t**h]h-t}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh or }(hj hhhNhNubj )}(h**-a**h]h-a}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh are set.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubh)}(h**--filter** **h](j )}(h **--filter**h]h--filter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h **h]h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubeh}(h]h ]h"]h$]h&]uh1hhj 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 }(hj hhhNhNubj )}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh }(hj hhhNhNubj4)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh event with }(hj hhhNhNubj4)}(h **h]h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh4. For further information about event filtering see }(hj 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 hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj hKhjhhubj)}(hhh]j)}(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](j)}(h**--trigger** **h](j )}(h **--trigger**h]h --trigger}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0 ubh }(hj0 hhhNhNubj4)}(h **h]h }(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj0 ubeh}(h]h ]h"]h$]h&]uh1jhj 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] hhhNhNubj )}(h**-e**h]h-e}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj] ubh }(hj] hhhNhNubj4)}(h *sys:event*h]h sys:event}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj] ubh . If the }(hj] hhhNhNubj4)}(h*hist:*h]hhist:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj] ubhX trigger is activated, the output histogram will be automatically saved to a file named }(hj] hhhNhNubj4)}(h*system_event_hist.txt*h]hsystem_event_hist.txt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj] ubh. For example, the command:}(hj] hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhjZ 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&]uh1hhj hKhjZ 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 }(hj hhhNhNubj4)}(h*osnoise:irq_noise*h]hosnoise:irq_noise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh event in }(hj hhhNhNubj4)}(h*osnoise_irq_noise_hist.txt*h]hosnoise_irq_noise_hist.txt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK hjZ 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&]uh1hhj hK"hjZ ubeh}(h]h ]h"]h$]h&]uh1j hj, ubeh}(h]h ]h"]h$]h&]uh1jhj hK"hj) ubah}(h]h ]h"]h$]h&]uh1jhjhhhj hNubh)}(h>**-P**, **--priority** *o:prio|r:prio|f:prio|d:runtime:period*h](j )}(h**-P**h]h-P}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj& ubh, }(hj& hhhNhNubj )}(h**--priority**h]h --priority}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj& ubh }(hj& hhhNhNubj4)}(h'*o:prio|r:prio|f:prio|d:runtime:period*h]h%o:prio|r:prio|f:prio|d:runtime:period}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj& ubeh}(h]h ]h"]h$]h&]uh1hhj 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:}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK&hjb ubh bullet_list)}(hhh](h list_item)}(h'*o:prio* - use SCHED_OTHER with *prio*;h]h)}(hj} h](j4)}(h*o:prio*h]ho:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh - use SCHED_OTHER with }(hj hhhNhNubj4)}(h*prio*h]hprio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK(hj{ ubah}(h]h ]h"]h$]h&]uh1jy hjv ubjz )}(h$*r:prio* - use SCHED_RR with *prio*;h]h)}(hj h](j4)}(h*r:prio*h]hr:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh - use SCHED_RR with }(hj hhhNhNubj4)}(h*prio*h]hprio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK)hj ubah}(h]h ]h"]h$]h&]uh1jy hjv ubjz )}(h&*f:prio* - use SCHED_FIFO with *prio*;h]h)}(hj h](j4)}(h*f:prio*h]hf:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh - use SCHED_FIFO with }(hj hhhNhNubj4)}(h*prio*h]hprio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK*hj ubah}(h]h ]h"]h$]h&]uh1jy hjv ubjz )}(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](j4)}(h$*d:runtime[us|ms|s]:period[us|ms|s]*h]h"d:runtime[us|ms|s]:period[us|ms|s]}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj$ubh - use SCHED_DEADLINE with }(hj$hhhNhNubj4)}(h *runtime*h]hruntime}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj$ubh and }(hj$hhhNhNubj4)}(h*period*h]hperiod}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj$ubh in nanoseconds.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK+hj ubah}(h]h ]h"]h$]h&]uh1jy hjv ubeh}(h]h ]h"]h$]h&]bullet-uh1jt hj hK(hjb ubeh}(h]h ]h"]h$]h&]uh1jhj hK&hjhhubh)}(h **-C**, **--cgroup**\[*=cgroup*]h](j )}(h**-C**h]h-C}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubh, }(hjxhhhNhNubj )}(h **--cgroup**h]h--cgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubh[}(hjxhhhNhNubj4)}(h *=cgroup*h]h=cgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjxubh]}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj 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 }(hjhhhNhNubj4)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh# to the tracer’s threads. If the }(hjhhhNhNubj )}(h**-C**h]h-C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhH option is passed without arguments, the tracer’s thread will inherit }(hjhhhNhNubj )}(h**rtla**h]hrtla}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh’s }(hjhhhNhNubj4)}(h*cgroup*h]hcgroup}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh/. Otherwise, the threads will be placed on the }(hjhhhNhNubj4)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh passed to the option.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK/hjubah}(h]h ]h"]h$]h&]uh1jhj hK/hjhhubh)}(h**--warm-up** *s*h](j )}(h **--warm-up**h]h --warm-up}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh }(hj*hhhNhNubj4)}(h*s*h]hs}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hj*ubeh}(h]h ]h"]h$]h&]uh1hhj 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 }(hjXhhhNhNubj4)}(h*s*h]hs}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjXubh seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hK3hjTubah}(h]h ]h"]h$]h&]uh1jhj hK3hjhhubj)}(hhh]j)}(h]**--trace-buffer-size** *kB* Set the per-cpu trace buffer size in kB for the tracing output. h](j)}(h**--trace-buffer-size** *kB*h](j )}(h**--trace-buffer-size**h]h--trace-buffer-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj4)}(h*kB*h]hkB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhj 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK6hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhj hK6hj~ubah}(h]h ]h"]h$]h&]uh1jhjhhhj hNubh)}(h**-h**, **--help**h](j )}(h**-h**h]h-h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj )}(h **--help**h]h--help}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hK8hjhhubj)}(hPrint help menu. h]h)}(hPrint help menu.h]hPrint help menu.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK:hjubah}(h]h ]h"]h$]h&]uh1jhj hK:hjhhubh)}(h**--dump-tasks**h]j )}(hjh]h --dump-tasks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj,ubah}(h]h ]h"]h$]h&]uh1jhj+hKhjhhubh)}(h **--no-aa**h]j )}(hjFh]h--no-aa}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhj+hKhjhhubj)}(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}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj[ubah}(h]h ]h"]h$]h&]uh1jhj+hKhjhhubeh}(h]optionsah ]h"]optionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hEXAMPLEh]hEXAMPLE}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hhhhhK#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, }(hjhhhNhNubj )}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is set to run for }(hjhhhNhNubj4)}(h*10*h]h10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh minutes, in the cpus }(hjhhhNhNubj4)}(h*0-4*h]h0-4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh, }(hjhhhNhNubj4)}(h*skipping zero*h]h skipping zero}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh only lines. Moreover, }(hjhhhNhNubj )}(h**rtla timerlat hist**h]hrtla timerlat hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh! will change the priority of the }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh threads to run under }(hjhhhNhNubj4)}(h*SCHED_DEADLINE*h]hSCHED_DEADLINE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh priority, with a }(hjhhhNhNubj4)}(h*100us*h]h100us}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh runtime every }(hjhhhNhNubj4)}(h*1ms*h]h1ms}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh period. The }(hjhhhNhNubj4)}(h*1ms*h]h1ms}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh period is also passed to the }(hjhhhNhNubj4)}(h *timerlat*h]htimerlat}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh5 tracer. Auto-analysis is disabled to reduce overhead}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK$hj{hhubh 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}hjbsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1j`hhhK+hj{hhubeh}(h]exampleah ]h"]exampleah$]h&]uh1hhhhhhhhK#ubh)}(hhh](h)}(hSEE ALSOh]hSEE ALSO}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhKfubh)}(h0**rtla-timerlat**\(1), **rtla-timerlat-top**\(1)h](j )}(h**rtla-timerlat**h]h rtla-timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(1), }(hjhhhNhNubj )}(h**rtla-timerlat-top**h]hrtla-timerlat-top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(1)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKghjzhhubh)}(hd*timerlat* tracer documentation: h](j4)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j3hjubh 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&]uh1hhhhKihjzhhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKfubh)}(hhh](h)}(hAUTHORh]hAUTHOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKlubh)}(h:Written by Daniel Bristot de Oliveira h](h'Written by Daniel Bristot de Oliveira <}(hjhhhNhNubj )}(hbristot@kernel.orgh]hbristot@kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bristot@kernel.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKmhjhhubeh}(h]authorah ]h"]authorah$]h&]uh1hhhhhhhhKlubeh}(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_handlerj^error_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}substitution_names}refnames}refids}nameids}(j8j5j0j-jRjOjjjxjujwjtjjj(j%u nametypes}(j8j0jRjjxjwjj(uh}(j5hj-hjOj jjUjujjtj{jjzj%ju 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.