sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget+/translations/zh_CN/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/pt_BR/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/tools/rtla/rtla-hwnoisemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhE/var/lib/git/docbuild/linux/Documentation/tools/rtla/rtla-hwnoise.rsthKubhsubstitution_definition)}(h.. |tool| replace:: hwnoise h]hhwnoise}hhsbah}(h]h ]h"]toolah$]h&]uh1hhhhKhhhhubhsection)}(hhh](htitle)}(h rtla-hwnoiseh]h rtla-hwnoise}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h*Detect and quantify hardware-related noiseh]h*Detect and quantify hardware-related noise}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hManual sectionh]hManual section}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhhhKubh field_body)}(h1 h]h paragraph)}(h1h]h1}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhK hjhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSYNOPSISh]hSYNOPSIS}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhhhhhKubj )}(h**rtla hwnoise** [*OPTIONS*]h](hstrong)}(h**rtla hwnoise**h]h rtla hwnoise}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjRubh [}(hjRhhhNhNubhemphasis)}(h *OPTIONS*h]hOPTIONS}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjRubh]}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjAhhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h DESCRIPTIONh]h DESCRIPTION}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj )}(h**rtla hwnoise** collects the periodic summary from the *osnoise* tracer running with *interrupts disabled*. By disabling interrupts, and the scheduling of threads as a consequence, only non-maskable interrupts and hardware-related noise is allowed.h](jW)}(h**rtla hwnoise**h]h rtla hwnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh( collects the periodic summary from the }(hjhhhNhNubjk)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh tracer running with }(hjhhhNhNubjk)}(h*interrupts disabled*h]hinterrupts disabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh. By disabling interrupts, and the scheduling of threads as a consequence, only non-maskable interrupts and hardware-related noise is allowed.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubj )}(hhThe tool also allows the configurations of the *osnoise* tracer and the collection of the tracer output.h](h/The tool also allows the configurations of the }(hjhhhNhNubjk)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh0 tracer and the collection of the tracer output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOPTIONSh]hOPTIONS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hN.. |threshold| replace:: **-a/--auto**, **-s/--stop**, or **-S/--stop-total**h](jW)}(h **-a/--auto**h]h -a/--auto}hjsbah}(h]h ]h"]h$]h&]uh1jVhjubh, }hjsbjW)}(h **-s/--stop**h]h -s/--stop}hj,sbah}(h]h ]h"]h$]h&]uh1jVhjubh, or }hjsbjW)}(h**-S/--stop-total**h]h-S/--stop-total}hj>sbah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"] thresholdah$]h&]uh1hh3Documentation/tools/rtla/common_osnoise_options.txthKhjhhubh)}(h.. |thresharg| replace:: -sh]h-s}hjTsbah}(h]h ]h"] threshargah$]h&]uh1hhjShKhjhhubh)}(h".. |tracer| replace:: osnoise h]hosnoise}hjcsbah}(h]h ]h"]tracerah$]h&]uh1hhjShKhjhhubh)}(h.. |actionsperf| replace:: Due to implementational limitations, actions might be delayed up to one second after tracing is stopped. h]hhDue to implementational limitations, actions might be delayed up to one second after tracing is stopped.}hjrsbah}(h]h ]h"] actionsperfah$]h&]uh1hhjShKhjhhubj )}(h**-a**, **--auto** *us*h](jW)}(h**-a**h]h-a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h **--auto**h]h--auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjShK hjhhubh block_quote)}(hSet the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use **-s** *us* **-T 1 -t**. h]j )}(hSet the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use **-s** *us* **-T 1 -t**.h](h|Set the automatic trace mode. This mode sets some commonly used options while debugging the system. It is equivalent to use }(hjhhhNhNubjW)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh }hjsbjW)}(h **-T 1 -t**h]h-T 1 -t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShK hjubah}(h]h ]h"]h$]h&]uh1jhjShK hjhhubj )}(h**-p**, **--period** *us*h](jW)}(h**-p**h]h-p}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh, }(hj hhhNhNubjW)}(h **--period**h]h--period}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh }(hj hhhNhNubjk)}(h*us*h]hus}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubeh}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj)}(h1Set the *osnoise* tracer period in microseconds. h]j )}(h0Set the *osnoise* tracer period in microseconds.h](hSet the }(hjMhhhNhNubjk)}(h *osnoise*h]hosnoise}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjMubh tracer period in microseconds.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShKhjIubah}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj )}(h**-r**, **--runtime** *us*h](jW)}(h**-r**h]h-r}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjsubh, }(hjshhhNhNubjW)}(h **--runtime**h]h --runtime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjsubh }(hjshhhNhNubjk)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjsubeh}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj)}(h2Set the *osnoise* tracer runtime in microseconds. h]j )}(h1Set the *osnoise* tracer runtime in microseconds.h](hSet the }(hjhhhNhNubjk)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh tracer runtime in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShKhjubah}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj )}(h**-s**, **--stop** *us*h](jW)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h **--stop**h]h--stop}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj)}(hStop the trace if a single sample is higher than the argument in microseconds. If **-T** is set, it will also save the trace to the output. h]j )}(hStop the trace if a single sample is higher than the argument in microseconds. If **-T** is set, it will also save the trace to the output.h](hRStop the trace if a single sample is higher than the argument in microseconds. If }(hjhhhNhNubjW)}(h**-T**h]h-T}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh3 is set, it will also save the trace to the output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShKhjubah}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj )}(h**-S**, **--stop-total** *us*h](jW)}(h**-S**h]h-S}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj?ubh, }(hj?hhhNhNubjW)}(h**--stop-total**h]h --stop-total}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj?ubh }(hj?hhhNhNubjk)}(h*us*h]hus}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj?ubeh}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj)}(hStop the trace if the total sample is higher than the argument in microseconds. If **-T** is set, it will also save the trace to the output. h]j )}(hStop the trace if the total sample is higher than the argument in microseconds. If **-T** is set, it will also save the trace to the output.h](hSStop the trace if the total sample is higher than the argument in microseconds. If }(hjhhhNhNubjW)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh3 is set, it will also save the trace to the output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShKhj{ubah}(h]h ]h"]h$]h&]uh1jhjShKhjhhubj )}(h**-T**, **--threshold** *us*h](jW)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h**--threshold**h]h --threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjShK hjhhubj)}(hjSpecify the minimum delta between two time reads to be considered noise. The default threshold is *5 us*. h]j )}(hiSpecify the minimum delta between two time reads to be considered noise. The default threshold is *5 us*.h](hbSpecify the minimum delta between two time reads to be considered noise. The default threshold is }(hjhhhNhNubjk)}(h*5 us*h]h5 us}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShK"hjubah}(h]h ]h"]h$]h&]uh1jhjShK"hjhhubj )}(h**-t**, **--trace** \[*file*]h](jW)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh, }(hj hhhNhNubjW)}(h **--trace**h]h--trace}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh [}(hj hhhNhNubjk)}(h*file*h]hfile}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh]}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShK%hjhhubj)}(h6Save the stopped trace to [*file|osnoise_trace.txt*]. h]j )}(h5Save the stopped trace to [*file|osnoise_trace.txt*].h](hSave the stopped trace to [}(hjOhhhNhNubjk)}(h*file|osnoise_trace.txt*h]hfile|osnoise_trace.txt}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjOubh].}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjShK'hjKubah}(h]h ]h"]h$]h&]uh1jhjShK'hjhhubj )}(h**-q**, **--quiet**h](jW)}(h**-q**h]h-q}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjuubh, }(hjuhhhNhNubjW)}(h **--quiet**h]h--quiet}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjuubeh}(h]h ]h"]h$]h&]uh1jh/Documentation/tools/rtla/common_top_options.txthKhjhhubj)}(h0Print only a summary at the end of the session. h]j )}(h/Print only a summary at the end of the session.h]h/Print only a summary at the end of the session.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(h**-c**, **--cpus** *cpu-list*h](jW)}(h**-c**h]h-c}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h **--cpus**h]h--cpus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h *cpu-list*h]hcpu-list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jh+Documentation/tools/rtla/common_options.txthKhjhhubj)}(hSet the |tool| tracer to run the sample threads in the cpu-list. By default, the |tool| tracer runs the sample threads on all CPUs. h](j )}(h@Set the |tool| tracer to run the sample threads in the cpu-list.h](hSet the }(hjhhhNhNubhhwnoise}(hjhhhNhNubh2 tracer to run the sample threads in the cpu-list.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(hBBy default, the |tool| tracer runs the sample threads on all CPUs.h](hBy default, the }(hjhhhNhNubhhwnoise}(hjhhhNhNubh, tracer runs the sample threads on all CPUs.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(h&**-H**, **--house-keeping** *cpu-list*h](jW)}(h**-H**h]h-H}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj+ubh, }(hj+hhhNhNubjW)}(h**--house-keeping**h]h--house-keeping}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj+ubh }(hj+hhhNhNubjk)}(h *cpu-list*h]hcpu-list}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj+ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj)}(hRun rtla control threads only on the given cpu-list. If omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads. h](j )}(h4Run rtla control threads only on the given cpu-list.h]h4Run rtla control threads only on the given cpu-list.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK hjgubj )}(hrIf omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads.h]hrIf omitted, rtla will attempt to auto-migrate its main thread to any CPU that is not running any workload threads.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK hjgubeh}(h]h ]h"]h$]h&]uh1jhjhK hjhhubj )}(h&**-d**, **--duration** *time[s|m|h|d]*h](jW)}(h**-d**h]h-d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h**--duration**h]h --duration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h*time[s|m|h|d]*h]h time[s|m|h|d]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjhK hjhhubj)}(h!Set the duration of the session. h]j )}(h Set the duration of the session.h]h Set the duration of the session.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(h**-D**, **--debug**h](jW)}(h**-D**h]h-D}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh, }(hjhhhNhNubjW)}(h **--debug**h]h--debug}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj)}(hPrint debug info. h]j )}(hPrint debug info.h]hPrint debug info.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(h**-e**, **--event** *sys:event*h](jW)}(h**-e**h]h-e}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj#ubh, }(hj#hhhNhNubjW)}(h **--event**h]h--event}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj#ubh }(hj#hhhNhNubjk)}(h *sys:event*h]h sys:event}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj#ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj)}(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]j )}(hEnable an event in the trace (**-t**) session. The argument can be a specific event, e.g., **-e** *sched:sched_switch*, or all events of a system group, e.g., **-e** *sched*. Multiple **-e** are allowed. It is only active when **-t** or **-a** are set.h](hEnable an event in the trace (}(hjchhhNhNubjW)}(h**-t**h]h-t}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh7) session. The argument can be a specific event, e.g., }(hjchhhNhNubjW)}(h**-e**h]h-e}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh }(hjchhhNhNubjk)}(h*sched:sched_switch*h]hsched:sched_switch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjcubh), or all events of a system group, e.g., }(hjchhhNhNubjW)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh }hjcsbjk)}(h*sched*h]hsched}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjcubh . Multiple }(hjchhhNhNubjW)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh% are allowed. It is only active when }(hjchhhNhNubjW)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh or }(hjchhhNhNubjW)}(h**-a**h]h-a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjcubh are set.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhj_ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(h**--filter** **h](jW)}(h **--filter**h]h--filter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h **h]h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj)}(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]j )}(hFilter the previous **-e** *sys:event* event with **. For further information about event filtering see https://www.kernel.org/doc/html/latest/trace/events.html#event-filtering.h](hFilter the previous }(hj5hhhNhNubjW)}(h**-e**h]h-e}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj5ubh }(hj5hhhNhNubjk)}(h *sys:event*h]h sys:event}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj5ubh event with }(hj5hhhNhNubjk)}(h **h]h}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj5ubh4. For further information about event filtering see }(hj5hhhNhNubh 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}(hjuhhhNhNubah}(h]h ]h"]h$]h&]refurijwuh1jshj5ubh.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhj1ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubhdefinition_list)}(hhh]hdefinition_list_item)}(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](hterm)}(h**--trigger** **h](jW)}(h **--trigger**h]h --trigger}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h **h]h }(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjubh definition)}(hhh](j )}(hEnable a trace event trigger to the previous **-e** *sys:event*. If the *hist:* trigger is activated, the output histogram will be automatically saved to a file named *system_event_hist.txt*. For example, the command:h](h-Enable a trace event trigger to the previous }(hjhhhNhNubjW)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh }(hjhhhNhNubjk)}(h *sys:event*h]h sys:event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh . If the }(hjhhhNhNubjk)}(h*hist:*h]hhist:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubhX trigger is activated, the output histogram will be automatically saved to a file named }(hjhhhNhNubjk)}(h*system_event_hist.txt*h]hsystem_event_hist.txt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh. For example, the command:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj )}(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&]uh1jhjhK"hjubj )}(h}Will automatically save the content of the histogram associated to *osnoise:irq_noise* event in *osnoise_irq_noise_hist.txt*.h](hCWill automatically save the content of the histogram associated to }(hj4 hhhNhNubjk)}(h*osnoise:irq_noise*h]hosnoise:irq_noise}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj4 ubh event in }(hj4 hhhNhNubjk)}(h*osnoise_irq_noise_hist.txt*h]hosnoise_irq_noise_hist.txt}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj4 ubh.}(hj4 hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK$hjubj )}(hxFor further information about event trigger see https://www.kernel.org/doc/html/latest/trace/events.html#event-triggers.h](h0For further information about event trigger see }(hjf hhhNhNubjt)}(hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggersh]hGhttps://www.kernel.org/doc/html/latest/trace/events.html#event-triggers}(hjn hhhNhNubah}(h]h ]h"]h$]h&]refurijp uh1jshjf ubh.}(hjf hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK&hjubah}(h]h ]h"]h$]h&]uh1jhjhhhjhNubj )}(h>**-P**, **--priority** *o:prio|r:prio|f:prio|d:runtime:period*h](jW)}(h**-P**h]h-P}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh, }(hj hhhNhNubjW)}(h**--priority**h]h --priority}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh }(hj hhhNhNubjk)}(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&]uh1jjhj ubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjhhubj)}(hXSet scheduling parameters to the |tool| tracer threads, the format to set the priority are: - *o:prio* - use SCHED_OTHER with *prio*; - *r:prio* - use SCHED_RR with *prio*; - *f:prio* - use SCHED_FIFO with *prio*; - *d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. If not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see *osnoise* and *timerlat* tracer documentation for the running kernel version. h](j )}(h[Set scheduling parameters to the |tool| tracer threads, the format to set the priority are:h](h!Set scheduling parameters to the }(hj hhhNhNubhhwnoise}(hj hhhNhNubh4 tracer threads, the format to set the priority are:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK*hj ubh bullet_list)}(hhh](h list_item)}(h'*o:prio* - use SCHED_OTHER with *prio*;h]j )}(hj h](jk)}(h*o:prio*h]ho:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh - use SCHED_OTHER with }(hj hhhNhNubjk)}(h*prio*h]hprio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK,hj ubah}(h]h ]h"]h$]h&]uh1j hj ubj )}(h$*r:prio* - use SCHED_RR with *prio*;h]j )}(hj/ h](jk)}(h*r:prio*h]hr:prio}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj1 ubh - use SCHED_RR with }(hj1 hhhNhNubjk)}(h*prio*h]hprio}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj1 ubh;}(hj1 hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK-hj- ubah}(h]h ]h"]h$]h&]uh1j hj ubj )}(h&*f:prio* - use SCHED_FIFO with *prio*;h]j )}(hjf h](jk)}(h*f:prio*h]hf:prio}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjh ubh - use SCHED_FIFO with }(hjh hhhNhNubjk)}(h*prio*h]hprio}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjh ubh;}(hjh hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK.hjd ubah}(h]h ]h"]h$]h&]uh1j hj ubj )}(hf*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. h]j )}(he*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds.h](jk)}(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&]uh1jjhj ubh - use SCHED_DEADLINE with }(hj hhhNhNubjk)}(h *runtime*h]hruntime}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh and }(hj hhhNhNubjk)}(h*period*h]hperiod}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh in nanoseconds.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK/hj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]bullet-uh1j hjhK,hj ubj )}(hIf not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see *osnoise* and *timerlat* tracer documentation for the running kernel version.h](hIf not set, tracer threads keep their default priority. For rtla user threads, it is set to SCHED_FIFO with priority 95. For kernel threads, see }(hj hhhNhNubjk)}(h *osnoise*h]hosnoise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh and }(hj hhhNhNubjk)}(h *timerlat*h]htimerlat}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh5 tracer documentation for the running kernel version.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK1hj ubeh}(h]h ]h"]h$]h&]uh1jhjhK*hjhhubj )}(h **-C**, **--cgroup** \[*cgroup*]h](jW)}(h**-C**h]h-C}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj% ubh, }(hj% hhhNhNubjW)}(h **--cgroup**h]h--cgroup}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj% ubh [}(hj% hhhNhNubjk)}(h*cgroup*h]hcgroup}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj% ubh]}(hj% hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK3hjhhubj)}(hXSet a *cgroup* to the tracer's threads. If the **-C** option is passed without arguments, the tracer's thread will inherit **rtla**'s *cgroup*. Otherwise, the threads will be placed on the *cgroup* passed to the option. If not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla's cgroup. Kernel workloads are assigned the root cgroup. h](j )}(hSet a *cgroup* to the tracer's threads. If the **-C** option is passed without arguments, the tracer's thread will inherit **rtla**'s *cgroup*. Otherwise, the threads will be placed on the *cgroup* passed to the option.h](hSet a }(hji hhhNhNubjk)}(h*cgroup*h]hcgroup}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhji ubh# to the tracer’s threads. If the }(hji hhhNhNubjW)}(h**-C**h]h-C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhji ubhH option is passed without arguments, the tracer’s thread will inherit }(hji hhhNhNubjW)}(h**rtla**h]hrtla}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhji ubh’s }(hji hhhNhNubjk)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhji ubh/. Otherwise, the threads will be placed on the }(hji hhhNhNubjk)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhji ubh passed to the option.}(hji hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK5hje ubj )}(hIf not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla's cgroup. Kernel workloads are assigned the root cgroup.h]hIf not set, the behavior differs between workload types. User workloads created by rtla will inherit rtla’s cgroup. Kernel workloads are assigned the root cgroup.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK7hje ubeh}(h]h ]h"]h$]h&]uh1jhjhK5hjhhubj )}(h**--warm-up** *s*h](jW)}(h **--warm-up**h]h --warm-up}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh }(hj hhhNhNubjk)}(h*s*h]hs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubeh}(h]h ]h"]h$]h&]uh1jhjhK9hjhhubj)}(hAfter starting the workload, let it run for *s* seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded. h]j )}(hAfter starting the workload, let it run for *s* seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded.h](h,After starting the workload, let it run for }(hj hhhNhNubjk)}(h*s*h]hs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubh seconds before starting collecting the data, allowing the system to warm-up. Statistical data generated during warm-up is discarded.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK;hj ubah}(h]h ]h"]h$]h&]uh1jhjhK;hjhhubj)}(hhh]j)}(h**--trace-buffer-size** *kB* Set the per-cpu trace buffer size in kB for the tracing output. If not set, the default tracefs buffer size is used. h](j)}(h**--trace-buffer-size** *kB*h](jW)}(h**--trace-buffer-size**h]h--trace-buffer-size}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj@ ubh }(hj@ hhhNhNubjk)}(h*kB*h]hkB}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj@ ubeh}(h]h ]h"]h$]h&]uh1jhjhK@hj< ubj)}(hhh](j )}(h?Set the per-cpu trace buffer size in kB for the tracing output.h]h?Set the per-cpu trace buffer size in kB for the tracing output.}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK>hjj ubj )}(h4If not set, the default tracefs buffer size is used.h]h4If not set, the default tracefs buffer size is used.}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK@hjj ubeh}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjhK@hj9 ubah}(h]h ]h"]h$]h&]uh1jhjhhhjhNubj )}(h**--on-threshold** *action*h](jW)}(h**--on-threshold**h]h--on-threshold}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh }(hj hhhNhNubjk)}(h*action*h]haction}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubeh}(h]h ]h"]h$]h&]uh1jhjhKBhjhhubj)}(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 unlike -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](j )}(hiDefines an action to be executed when tracing is stopped on a latency threshold specified by |threshold|.h](h]Defines an action to be executed when tracing is stopped on a latency threshold specified by }(hj hhhNhNubjW)}(hjh]h -a/--auto}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhNhNhj hhubh, }(hj hhhNhNubjW)}(hj.h]h -s/--stop}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhNhNhj hhubh, or }(hj hhhNhNubjW)}(hj@h]h-S/--stop-total}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhNhNhj hhubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKDhj ubj )}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKGhj ubj )}(hSupported actions are:h]hSupported actions are:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKKhj ubj )}(hhh](j )}(h*trace[,file=]* Saves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times. h](j )}(h*trace[,file=]*h]jk)}(hj/ h]htrace[,file=]}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj- ubah}(h]h ]h"]h$]h&]uh1jhjhKMhj) ubj )}(hSaves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times.h]hSaves trace output, optionally taking a filename. Alternative to -t/--trace. Note that unlike -t/--trace, specifying this multiple times will result in the trace being saved multiple times.}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKOhj) ubeh}(h]h ]h"]h$]h&]uh1j hj& ubj )}(h*signal,num=,pid=* Sends signal to process. "parent" might be specified in place of pid to target the parent process of rtla. h](j )}(h*signal,num=,pid=*h]jk)}(hj^ h]hsignal,num=,pid=}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj\ ubah}(h]h ]h"]h$]h&]uh1jhjhKShjX ubj )}(hjSends signal to process. "parent" might be specified in place of pid to target the parent process of rtla.h]hnSends signal to process. “parent” might be specified in place of pid to target the parent process of rtla.}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKUhjX ubeh}(h]h ]h"]h$]h&]uh1j hj& ubj )}(h2*shell,command=* Execute shell command. h](j )}(h*shell,command=*h]jk)}(hj h]hshell,command=}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubah}(h]h ]h"]h$]h&]uh1jhjhKXhj ubj )}(hExecute shell command.h]hExecute shell command.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKZhj ubeh}(h]h ]h"]h$]h&]uh1j hj& ubj )}(hM*continue* Continue tracing after actions are executed instead of stopping. h](j )}(h *continue*h]jk)}(hj h]hcontinue}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhj ubah}(h]h ]h"]h$]h&]uh1jhjhK\hj ubj )}(h@Continue tracing after actions are executed instead of stopping.h]h@Continue tracing after actions are executed instead of stopping.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK^hj ubeh}(h]h ]h"]h$]h&]uh1j hj& ubeh}(h]h ]h"]h$]h&]j j uh1j hjhKMhj ubj )}(hExample:h]hExample:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK`hj ubj )}(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 }(hj hhhNhNubhhwnoise}(hj hhhNhNubh }(hj hhhNhNubh-s}(hj hhhNhNubhG 20 --on-threshold trace --on-threshold shell,command=”grep ipi_send }(hj hhhNhNubhosnoise}(hj hhhNhNubh5_trace.txt” --on-threshold signal,num=2,pid=parent}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKbhj ubj )}(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 “}(hjhhhNhNubhosnoise}(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&]uh1jhjhKfhj ubj )}(hPerformance Considerations:h]hPerformance Considerations:}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKjhj ubj )}(h |actionsperf|h]hhDue to implementational limitations, actions might be delayed up to one second after tracing is stopped.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKlhj ubeh}(h]h ]h"]h$]h&]uh1jhjhKDhjhhubj )}(h**--on-end** *action*h](jW)}(h **--on-end**h]h--on-end}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjWubh }(hjWhhhNhNubjk)}(h*action*h]haction}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjWubeh}(h]h ]h"]h$]h&]uh1jhjhKnhjhhubj)}(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](j )}(h7Defines an action to be executed at the end of tracing.h]h7Defines an action to be executed at the end of tracing.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKphjubj )}(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&]uh1jhjhKrhjubj )}(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 }(hjhhhNhNubjW)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh< for the list of supported actions, with the exception that }(hjhhhNhNubjk)}(h *continue*h]hcontinue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh has no effect.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKvhjubj )}(hExample:h]hExample:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKyhjubj )}(h"$ rtla |tool| -d 5s --on-end traceh](h$ rtla }(hjhhhNhNubhhwnoise}(hjhhhNhNubh -d 5s --on-end trace}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK{hjubj )}(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&]uh1jhjhK}hjubeh}(h]h ]h"]h$]h&]uh1jhjhKphjhhubj )}(h**-h**, **--help**h](jW)}(h**-h**h]h-h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubh, }(hj hhhNhNubjW)}(h **--help**h]h--help}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj)}(hPrint help menu. h]j )}(hPrint help menu.h]hPrint help menu.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhj5ubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubeh}(h]optionsah ]h"]optionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hEXAMPLEh]hEXAMPLE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhhhhhK'ubj )}(hIn the example below, the **rtla hwnoise** tool is set to run on CPUs *1-7* on a system with 8 cores/16 threads with hyper-threading enabled.h](hIn the example below, the }(hjfhhhNhNubjW)}(h**rtla hwnoise**h]h rtla hwnoise}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjfubh tool is set to run on CPUs }(hjfhhhNhNubjk)}(h*1-7*h]h1-7}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjfubhB on a system with 8 cores/16 threads with hyper-threading enabled.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhK(hjUhhubj )}(hThe tool is set to detect any noise higher than *one microsecond*, to run for *ten minutes*, displaying a summary of the report at the end of the session::h](h0The tool is set to detect any noise higher than }(hjhhhNhNubjk)}(h*one microsecond*h]hone microsecond}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh , to run for }(hjhhhNhNubjk)}(h *ten minutes*h]h ten minutes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh?, displaying a summary of the report at the end of the session:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhK+hjUhhubh literal_block)}(hX# rtla hwnoise -c 1-7 -T 1 -d 10m -q Hardware-related Noise duration: 0 00:10:00 | time is in us CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 1 #599 599000000 138 99.99997 3 3 4 74 2 #599 599000000 85 99.99998 3 3 4 75 3 #599 599000000 86 99.99998 4 3 6 75 4 #599 599000000 81 99.99998 4 4 2 75 5 #599 599000000 85 99.99998 2 2 2 75 6 #599 599000000 76 99.99998 2 2 0 75 7 #599 599000000 77 99.99998 3 3 0 75h]hX# rtla hwnoise -c 1-7 -T 1 -d 10m -q Hardware-related Noise duration: 0 00:10:00 | time is in us CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 1 #599 599000000 138 99.99997 3 3 4 74 2 #599 599000000 85 99.99998 3 3 4 75 3 #599 599000000 86 99.99998 4 3 6 75 4 #599 599000000 81 99.99998 4 4 2 75 5 #599 599000000 85 99.99998 2 2 2 75 6 #599 599000000 76 99.99998 2 2 0 75 7 #599 599000000 77 99.99998 3 3 0 75}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK/hjUhhubj )}(hX<The first column shows the *CPU*, and the second column shows how many *Periods* the tool ran during the session. The *Runtime* is the time the tool effectively runs on the CPU. The *Noise* column is the sum of all noise that the tool observed, and the *% CPU Aval* is the relation between the *Runtime* and *Noise*.h](hThe first column shows the }(hjhhhNhNubjk)}(h*CPU*h]hCPU}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh', and the second column shows how many }(hjhhhNhNubjk)}(h *Periods*h]hPeriods}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh& the tool ran during the session. The }(hjhhhNhNubjk)}(h *Runtime*h]hRuntime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh7 is the time the tool effectively runs on the CPU. The }(hjhhhNhNubjk)}(h*Noise*h]hNoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh@ column is the sum of all noise that the tool observed, and the }(hjhhhNhNubjk)}(h *% CPU Aval*h]h % CPU Aval}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh is the relation between the }(hjhhhNhNubjk)}(h *Runtime*h]hRuntime}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh and }(hjhhhNhNubjk)}(h*Noise*h]hNoise}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubhM of CPU time for the application. In the worst single period, the CPU caused }(hjhhhNhNubjk)}(h*4 us*h]h4 us}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh` of noise to the application, but it was certainly caused by more than one single noise, as the }(hjhhhNhNubjk)}(h *Max Single*h]h Max Single}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh noise was of }(hjhhhNhNubjk)}(h*3 us*h]h3 us}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh. The CPU has }(hjhhhNhNubjk)}(h *HW noise,*h]h HW noise,}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh at a rate of }(hjhhhNhNubjk)}(h*six occurrences*h]hsix occurrences}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh/}(hjhhhNhNubjk)}(h *ten minutes*h]h ten minutes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh. The CPU also has }(hjhhhNhNubjk)}(h*NMIs*h]hNMIs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh , at a higher frequency: around }(hjhhhNhNubjk)}(h*seven per second*h]hseven per second}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKHhjUhhubj )}(hXSThe tool should report *0* hardware-related noise in the ideal situation. For example, by disabling hyper-threading to remove the hardware noise, and disabling the TSC watchdog to remove the NMI (it is possible to identify this using tracing options of **rtla hwnoise**), it was possible to reach the ideal situation in the same hardware::h](hThe tool should report }(hjhhhNhNubjk)}(h*0*h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jjhjubh hardware-related noise in the ideal situation. For example, by disabling hyper-threading to remove the hardware noise, and disabling the TSC watchdog to remove the NMI (it is possible to identify this using tracing options of }(hjhhhNhNubjW)}(h**rtla hwnoise**h]h rtla hwnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubhE), it was possible to reach the ideal situation in the same hardware:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKPhjUhhubj)}(hX# rtla hwnoise -c 1-7 -T 1 -d 10m -q Hardware-related Noise duration: 0 00:10:00 | time is in us CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 1 #599 599000000 0 100.00000 0 0 0 0 2 #599 599000000 0 100.00000 0 0 0 0 3 #599 599000000 0 100.00000 0 0 0 0 4 #599 599000000 0 100.00000 0 0 0 0 5 #599 599000000 0 100.00000 0 0 0 0 6 #599 599000000 0 100.00000 0 0 0 0 7 #599 599000000 0 100.00000 0 0 0 0h]hX# rtla hwnoise -c 1-7 -T 1 -d 10m -q Hardware-related Noise duration: 0 00:10:00 | time is in us CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 1 #599 599000000 0 100.00000 0 0 0 0 2 #599 599000000 0 100.00000 0 0 0 0 3 #599 599000000 0 100.00000 0 0 0 0 4 #599 599000000 0 100.00000 0 0 0 0 5 #599 599000000 0 100.00000 0 0 0 0 6 #599 599000000 0 100.00000 0 0 0 0 7 #599 599000000 0 100.00000 0 0 0 0}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKVhjUhhubeh}(h]exampleah ]h"]exampleah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(hSEE ALSOh]hSEE ALSO}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhKcubj )}(h**rtla-osnoise**\(1)h](jW)}(h**rtla-osnoise**h]h rtla-osnoise}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jVhj?ubh(1)}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKehj.hhubj )}(hF`Osnoise tracer `__h]jt)}(hj]h]hOsnoise tracer}(hj_hhhNhNubah}(h]h ]h"]h$]h&]nameOsnoise tracerrefuri1https://docs.kernel.org/trace/osnoise-tracer.htmluh1jshj[ubah}(h]h ]h"]h$]h&]uh1jhhhKghj.hhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhKcubh)}(hhh](h)}(hAUTHORh]hAUTHOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hhhhhKjubj )}(h:Written by Daniel Bristot de Oliveira h](h'Written by Daniel Bristot de Oliveira <}(hjhhhNhNubjt)}(hbristot@kernel.orgh]hbristot@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bristot@kernel.orguh1jshjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKkhj~hhubh)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hjsbah}(h]h ]h"]h$]h&]hhuh1hhj~hhh,Documentation/tools/rtla/common_appendix.txthKubeh}(h]authorah ]h"]authorah$]h&]uh1hhhhhhhhKjubh)}(hhh](h)}(hSIGINT BEHAVIORh]hSIGINT BEHAVIOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjhKubj )}(hqOn the first SIGINT, RTLA exits after collecting all outstanding samples up to the point of receiving the signal.h]hqOn the first SIGINT, RTLA exits after collecting all outstanding samples up to the point of receiving the signal.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(hWhen receiving more than one SIGINT, RTLA discards any outstanding samples, and exits while displaying only samples that have already been processed.h]hWhen receiving more than one SIGINT, RTLA discards any outstanding samples, and exits while displaying only samples that have already been processed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubj )}(haIf SIGINT is received during RTLA cleanup, RTLA exits immediately via the default signal handler.h]haIf SIGINT is received during RTLA cleanup, RTLA exits immediately via the default signal handler.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK hjhhubj )}(hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.h]hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubj )}(hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.h]hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjhhubeh}(h]sigint-behaviorah ]h"]sigint behaviorah$]h&]uh1hhhhhhjhKubh)}(hhh](h)}(h EXIT STATUSh]h EXIT STATUS}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hhhjhKubj)}(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}hj8sbah}(h]h ]h"]h$]h&]hhuh1jhjhKhj'hhubeh}(h] exit-statusah ]h"] exit statusah$]h&]uh1hhhhhh[jhKubh)}(hhh](h)}(hREPORTING BUGSh]hREPORTING BUGS}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhhhjhK"ubj )}(hUReport bugs to and h](hReport bugs to <}(hj_hhhNhNubjt)}(hlinux-kernel@vger.kernel.orgh]hlinux-kernel@vger.kernel.org}(hjghhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-kernel@vger.kernel.orguh1jshj_ubh> and <}(hj_hhhNhNubjt)}(h!linux-trace-devel@vger.kernel.orgh]h!linux-trace-devel@vger.kernel.org}(hj{hhhNhNubah}(h]h ]h"]h$]h&]refuri(mailto:linux-trace-devel@vger.kernel.orguh1jshj_ubh>}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK#hjNhhubeh}(h]reporting-bugsah ]h"]reporting bugsah$]h&]uh1hhhhhhjhK"ubh)}(hhh](h)}(hLICENSEh]hLICENSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjhK'ubj )}(h6**rtla** is Free Software licensed under the GNU GPLv2h](jW)}(h**rtla**h]hrtla}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jVhjubh. is Free Software licensed under the GNU GPLv2}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjhhubeh}(h]licenseah ]h"]licenseah$]h&]uh1hhhhhhjhK'ubh)}(hhh](h)}(hCOPYINGh]hCOPYING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjhK+ubj )}(hwCopyright \(C) 2021 Red Hat, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).h]hwCopyright (C) 2021 Red Hat, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK,hjhhubeh}(h]copyingah ]h"]copyingah$]h&]uh1hhhhhhjhK+ubeh}(h]*detect-and-quantify-hardware-related-noiseah ]h"]*detect and quantify hardware-related noiseah$]h&]uh1hhhhhhhhK ubeh}(h] rtla-hwnoiseah ]h"] rtla-hwnoiseah$]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_sourcehnj _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}(hhjPjj`jTjojcj~jrusubstitution_names}(toolh֌ thresholdjP threshargj`tracerjo actionsperfj~urefnames}refids}nameids}(jjjjjjjjjRjOj+j(j{jxjjj$j!jKjHjjjjjju nametypes}(jjjjjRj+j{jj$jKjjjuh}(jhjhjjAjjjOjj(jUjxj.jj~j!jjHj'jjNjjjju 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-hwnoise.rst(NNNNta decorationNhhub.