qsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget6/translations/zh_CN/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/zh_TW/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/it_IT/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ja_JP/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ko_KR/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/sp_SP/tools/rtla/common_timerlat_optionsmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubh paragraph)}(h**-a**, **--auto** *us*h](hstrong)}(h**-a**h]h-a}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh, }(hhhhhNhNubh)}(h **--auto**h]h--auto}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }(hhhhhNhNubhemphasis)}(h*us*h]hus}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhP/var/lib/git/docbuild/linux/Documentation/tools/rtla/common_timerlat_options.rsthKhhhhubh 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 }(hhhhhNhNubh)}(h**-T**h]h-T}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }(hhhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }hhsbh)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }hhsbh)}(h*us*h]hus}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }(hhhhhNhNubh)}(h**-t**h]h-t}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh. By default, }(hhhhhNhNubh)}(h *timerlat*h]htimerlat}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh tracer uses FIFO:95 for }(hhhhhNhNubh)}(h *timerlat*h]htimerlat}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh threads, thus equilavent to }(hhhhhNhNubh)}(h**-P**h]h-P}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh }hhsbh)}(h*f:95*h]hf:95}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h**-p**, **--period** *us*h](h)}(h**-p**h]h-p}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h **--period**h]h--period}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h2Set the *timerlat* tracer period in microseconds. h]h)}(h1Set the *timerlat* tracer period in microseconds.h](hSet the }(hjhhhNhNubh)}(h *timerlat*h]htimerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh tracer period in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(h**-i**, **--irq** *us*h](h)}(h**-i**h]h-i}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h **--irq**h]h--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*us*h]hus}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(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 }(hjFhhhNhNubh)}(h*IRQ*h]hIRQ}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFubh+ latency is higher than the argument in us.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjBubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h**-T**, **--thread** *us*h](h)}(h**-T**h]h-T}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlubh, }(hjlhhhNhNubh)}(h **--thread**h]h--thread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlubh }(hjlhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(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 }(hjhhhNhNubh)}(h*Thread*h]hThread}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h**-s**, **--stack** *us*h](h)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h **--stack**h]h--stack}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(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 }(hjhhhNhNubh)}(h*IRQ*h]hIRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh if a }(hjhhhNhNubh)}(h*Thread*h]hThread}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh+ latency is higher than the argument in us.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h**-t**, **--trace** \[*file*]h](h)}(h**-t**h]h-t}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubh, }(hjJhhhNhNubh)}(h **--trace**h]h--trace}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubh [}(hjJhhhNhNubh)}(h*file*h]hfile}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubh]}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(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 [}(hjhhhNhNubh)}(h*file|timerlat_trace.txt*h]hfile|timerlat_trace.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh].}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhdefinition_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](h)}(h**--dma-latency**h]h --dma-latency}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1jhhhK 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 }(hjhhhNhNubh)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh,, aiming to bound exit from idle latencies. }(hjhhhNhNubh)}(h *cyclictest*h]h cyclictest}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh sets this value to }(hjhhhNhNubh)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh by default, use }(hjhhhNhNubh)}(h**--dma-latency**h]h --dma-latency}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*0*h]h0}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh to have similar results.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK 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](h)}(h**--deepest-idle-state**h]h--deepest-idle-state}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhubh }(hjhhhhNhNubh)}(h*n*h]hn}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhubeh}(h]h ]h"]h$]h&]uh1jhhhK(hjdubj)}(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 }(hjhhhNhNubh)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubhS for cpus that are running timerlat threads to reduce exit from idle latencies. If }(hjhhhNhNubh)}(h*n*h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh 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&]uh1hhhhK#hjubh)}(h+Requires rtla to be built with libcpupower.h]h+Requires rtla to be built with libcpupower.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hjubeh}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhhhK(hjhhubeh}(h]h ]h"]h$]h&]uh1jhhhhhhhNubh)}(h**-k**, **--kernel-threads**h](h)}(h**-k**h]h-k}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h**--kernel-threads**h]h--kernel-threads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK*hhhhubh)}(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 }(hjhhhNhNubh)}(h**-u**h]h-u}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK,hjubah}(h]h ]h"]h$]h&]uh1hhhhK,hhhhubh)}(h**-u**, **--user-threads**h](h)}(h**-u**h]h-u}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;ubh, }(hj;hhhNhNubh)}(h**--user-threads**h]h--user-threads}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]uh1hhhhK.hhhhubh)}(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. }(hjihhhNhNubh)}(h**--user-threads**h]h--user-threads}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh& will be used unless the user specify }(hjihhhNhNubh)}(h**-k**h]h-k}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK0hjeubah}(h]h ]h"]h$]h&]uh1hhhhK0hhhhubh)}(h**-U**, **--user-load**h](h)}(h**-U**h]h-U}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh, }(hjhhhNhNubh)}(h**--user-load**h]h --user-load}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK5hhhhubh)}(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&]uh1hhhhK7hjubah}(h]h ]h"]h$]h&]uh1hhhhK7hhhhubh)}(h**--on-threshold** *action*h](h)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*action*h]haction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK;hhhhubh)}(hXDefines an action to be executed when tracing is stopped on a latency threshold specified by **-i/--irq** or **-T/--thread**. 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 timerlat -T 20 --on-threshold trace --on-threshold shell,command="grep ipi_send timerlat_trace.txt" --on-threshold signal,num=2,pid=parent This will save a trace with the default filename "timerlat_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: 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](h)}(h}Defines an action to be executed when tracing is stopped on a latency threshold specified by **-i/--irq** or **-T/--thread**.h](h]Defines an action to be executed when tracing is stopped on a latency threshold specified by }(hjhhhNhNubh)}(h **-i/--irq**h]h-i/--irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh or }(hjhhhNhNubh)}(h**-T/--thread**h]h -T/--thread}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK=hj ubh)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hj ubh)}(hSupported actions are:h]hSupported actions are:}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhj ubh bullet_list)}(hhh](h list_item)}(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]h)}(hjlh]htrace[,file=]}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjubah}(h]h ]h"]h$]h&]uh1hhhhKFhjfubh)}(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&]uh1hhhhKHhjfubeh}(h]h ]h"]h$]h&]uh1jdhjaubje)}(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]h)}(hjh]hsignal,num=,pid=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKLhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubeh}(h]h ]h"]h$]h&]uh1jdhjaubje)}(h2*shell,command=* Execute shell command. h](h)}(h*shell,command=*h]h)}(hjh]hshell,command=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubh)}(hExecute shell command.h]hExecute shell command.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjubeh}(h]h ]h"]h$]h&]uh1jdhjaubje)}(hM*continue* Continue tracing after actions are executed instead of stopping. h](h)}(h *continue*h]h)}(hjh]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubh)}(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&]uh1hhhhKWhjubeh}(h]h ]h"]h$]h&]uh1jdhjaubeh}(h]h ]h"]h$]h&]bullet-uh1j_hhhKFhj ubh)}(hExample:h]hExample:}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhj ubh)}(h$ rtla timerlat -T 20 --on-threshold trace --on-threshold shell,command="grep ipi_send timerlat_trace.txt" --on-threshold signal,num=2,pid=parenth]h$ rtla timerlat -T 20 --on-threshold trace --on-threshold shell,command=”grep ipi_send timerlat_trace.txt” --on-threshold signal,num=2,pid=parent}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hj ubh)}(hThis will save a trace with the default filename "timerlat_trace.txt", print its lines that contain the text "ipi_send" on standard output, and send signal 2 (SIGINT) to the parent process.h]hThis will save a trace with the default filename “timerlat_trace.txt”, print its lines that contain the text “ipi_send” on standard output, and send signal 2 (SIGINT) to the parent process.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hj ubh)}(hPerformance Considerations:h]hPerformance Considerations:}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchj ubh)}(hXFor 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 }(hjbhhhNhNubh)}(h**rtla timerlat**h]h rtla timerlat}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbubh 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.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKehj ubeh}(h]h ]h"]h$]h&]uh1hhhhK=hhhhubh)}(h**--on-end** *action*h](h)}(h **--on-end**h]h--on-end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh }(hjhhhNhNubh)}(h*action*h]haction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKjhhhhubh)}(hXDefines an action to be executed at the end of **rtla timerlat** 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 timerlat -d 5s --on-end trace This runs rtla timerlat with default options and save trace output at the end.h](h)}(hIDefines an action to be executed at the end of **rtla timerlat** tracing.h](h/Defines an action to be executed at the end of }(hjhhhNhNubh)}(h**rtla timerlat**h]h rtla timerlat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh tracing.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjubh)}(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 }(hjhhhNhNubh)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh< for the list of supported actions, with the exception that }(hjhhhNhNubh)}(h *continue*h]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh has no effect.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKrhjubh)}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubh)}(h$$ rtla timerlat -d 5s --on-end traceh]h$$ rtla timerlat -d 5s --on-end trace}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubh)}(hNThis runs rtla timerlat with default options and save trace output at the end.h]hNThis runs rtla timerlat with default options and save trace output at the end.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjubeh}(h]h ]h"]h$]h&]uh1hhhhKlhhhhubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(titleN 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_handlerjjerror_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} nametypes}h} 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] decorationNhhub.