sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget0/translations/zh_CN/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/zh_TW/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/it_IT/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/ja_JP/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/ko_KR/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/pt_BR/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget0/translations/sp_SP/tools/rtla/rtla-osnoise-histmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsubstitution_definition)}(h!.. |tool| replace:: osnoise hist h]h osnoise hist}hhsbah}(h]h ]h"]toolah$]h&]uh1hhJ/var/lib/git/docbuild/linux/Documentation/tools/rtla/rtla-osnoise-hist.rsthKhhhhubhsection)}(hhh](htitle)}(hrtla-osnoise-histh]hrtla-osnoise-hist}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h1Display a histogram of the osnoise tracer samplesh]h1Display a histogram of the osnoise tracer samples}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hManual sectionh]hManual section}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h1 h]h paragraph)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hhhK hj ubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hSYNOPSISh]hSYNOPSIS}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hhhhhK ubj)}(h!**rtla osnoise hist** [*OPTIONS*]h](hstrong)}(h**rtla osnoise hist**h]hrtla osnoise hist}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj@ubh [}(hj@hhhNhNubhemphasis)}(h *OPTIONS*h]hOPTIONS}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj@ubh]}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKhj/hhubeh}(h]synopsisah ]h"]synopsisah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h DESCRIPTIONh]h DESCRIPTION}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhKubj)}(hXThe **rtla osnoise** tool is an interface for the *osnoise* tracer. The *osnoise* tracer dispatches a kernel thread per-cpu. These threads read the time in a loop while with preemption, softirq and IRQs enabled, thus allowing all the sources of operating system noise during its execution. The *osnoise*'s tracer threads take note of the delta between each time read, along with an interference counter of all sources of interference. At the end of each period, the *osnoise* tracer displays a summary of the results.h](hThe }(hjhhhNhNubjE)}(h**rtla osnoise**h]h rtla osnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tool is an interface for the }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer. The }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer dispatches a kernel thread per-cpu. These threads read the time in a loop while with preemption, softirq and IRQs enabled, thus allowing all the sources of operating system noise during its execution. The }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh’s tracer threads take note of the delta between each time read, along with an interference counter of all sources of interference. At the end of each period, the }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh* tracer displays a summary of the results.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j h7Documentation/tools/rtla/common_osnoise_description.txthKhjzhhubj)}(hThe **rtla osnoise hist** tool collects all **osnoise:sample_threshold** occurrence in a histogram, displaying the results in a user-friendly way. The tool also allows many configurations of the *osnoise* tracer and the collection of the tracer output.h](hThe }(hjhhhNhNubjE)}(h**rtla osnoise hist**h]hrtla osnoise hist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh tool collects all }(hjhhhNhNubjE)}(h**osnoise:sample_threshold**h]hosnoise:sample_threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh{ occurrence in a histogram, displaying the results in a user-friendly way. The tool also allows many configurations of the }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh0 tracer and the collection of the tracer output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKhjzhhubeh}(h] descriptionah ]h"] descriptionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOPTIONSh]hOPTIONS}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hhhhhKubh)}(hN.. |threshold| replace:: **-a/--auto**, **-s/--stop**, or **-S/--stop-total**h](jE)}(h **-a/--auto**h]h -a/--auto}hjUsbah}(h]h ]h"]h$]h&]uh1jDhjQubh, }hjQsbjE)}(h **-s/--stop**h]h -s/--stop}hjgsbah}(h]h ]h"]h$]h&]uh1jDhjQubh, or }hjQsbjE)}(h**-S/--stop-total**h]h-S/--stop-total}hjysbah}(h]h ]h"]h$]h&]uh1jDhjQubeh}(h]h ]h"] thresholdah$]h&]uh1hh3Documentation/tools/rtla/common_osnoise_options.txthKhj@hhubh)}(h.. |thresharg| replace:: -sh]h-s}hjsbah}(h]h ]h"] threshargah$]h&]uh1hhjhKhj@hhubh)}(h".. |tracer| replace:: osnoise h]hosnoise}hjsbah}(h]h ]h"]tracerah$]h&]uh1hhjhKhj@hhubh)}(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.}hjsbah}(h]h ]h"] actionsperfah$]h&]uh1hhjhKhj@hhubj)}(h**-a**, **--auto** *us*h](jE)}(h**-a**h]h-a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--auto**h]h--auto}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjhK hj@hhubh 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 }(hjhhhNhNubjE)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh }hjsbjE)}(h **-T 1 -t**h]h-T 1 -t}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hj@hhubj)}(h**-p**, **--period** *us*h](jE)}(h**-p**h]h-p}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjHubh, }(hjHhhhNhNubjE)}(h **--period**h]h--period}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjHubh }(hjHhhhNhNubjY)}(h*us*h]hus}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjHubeh}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(h1Set the *osnoise* tracer period in microseconds. h]j)}(h0Set the *osnoise* tracer period in microseconds.h](hSet the }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer period in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-r**, **--runtime** *us*h](jE)}(h**-r**h]h-r}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--runtime**h]h --runtime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(h2Set the *osnoise* tracer runtime in microseconds. h]j)}(h1Set the *osnoise* tracer runtime in microseconds.h](hSet the }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh tracer runtime in microseconds.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-s**, **--stop** *us*h](jE)}(h**-s**h]h-s}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--stop**h]h--stop}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(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 }(hjThhhNhNubjE)}(h**-T**h]h-T}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjTubh3 is set, it will also save the trace to the output.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-S**, **--stop-total** *us*h](jE)}(h**-S**h]h-S}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubh, }(hjzhhhNhNubjE)}(h**--stop-total**h]h --stop-total}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubh }(hjzhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjzubeh}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(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 }(hjhhhNhNubjE)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh3 is set, it will also save the trace to the output.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-T**, **--threshold** *us*h](jE)}(h**-T**h]h-T}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--threshold**h]h --threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*us*h]hus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjhK hj@hhubj)}(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 }(hj hhhNhNubjY)}(h*5 us*h]h5 us}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhK"hjubah}(h]h ]h"]h$]h&]uh1jhjhK"hj@hhubj)}(h**-t**, **--trace** \[*file*]h](jE)}(h**-t**h]h-t}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjFubh, }(hjFhhhNhNubjE)}(h **--trace**h]h--trace}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjFubh [}(hjFhhhNhNubjY)}(h*file*h]hfile}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjFubh]}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhK%hj@hhubj)}(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 [}(hjhhhNhNubjY)}(h*file|osnoise_trace.txt*h]hfile|osnoise_trace.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh].}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhK'hjubah}(h]h ]h"]h$]h&]uh1jhjhK'hj@hhubj)}(h**-b**, **--bucket-size** *N*h](jE)}(h**-b**h]h-b}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--bucket-size**h]h --bucket-size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*N*h]hN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j h0Documentation/tools/rtla/common_hist_options.txthKhj@hhubj)}(h-Set the histogram bucket size (default *1*). h]j)}(h,Set the histogram bucket size (default *1*).h](h'Set the histogram bucket size (default }(hjhhhNhNubjY)}(h*1*h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-E**, **--entries** *N*h](jE)}(h**-E**h]h-E}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--entries**h]h --entries}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*N*h]hN}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(h:Set the number of entries of the histogram (default 256). h]j)}(h9Set the number of entries of the histogram (default 256).h]h9Set the number of entries of the histogram (default 256).}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhKhjSubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**--no-header**h]jE)}(hjmh]h --no-header}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjkubah}(h]h ]h"]h$]h&]uh1j hjhK hj@hhubj)}(hDo not print header. h]j)}(hDo not print header.h]hDo not print header.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhK hjubah}(h]h ]h"]h$]h&]uh1jhjhK hj@hhubj)}(h**--no-summary**h]jE)}(hjh]h --no-summary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&]uh1j hjhK hj@hhubj)}(hDo not print summary. h]j)}(hDo not print summary.h]hDo not print summary.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**--no-index**h]jE)}(hjh]h --no-index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(hDo not print index. h]j)}(hDo not print index.h]hDo not print index.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**--with-zeros**h]jE)}(hjh]h --with-zeros}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubah}(h]h ]h"]h$]h&]uh1j hjhKhj@hhubj)}(hPrint zero only entries. h]j)}(hPrint zero only entries.h]hPrint zero only entries.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhj@hhubj)}(h**-c**, **--cpus** *cpu-list*h](jE)}(h**-c**h]h-c}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj'ubh, }(hj'hhhNhNubjE)}(h **--cpus**h]h--cpus}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj'ubh }(hj'hhhNhNubjY)}(h *cpu-list*h]hcpu-list}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj'ubeh}(h]h ]h"]h$]h&]uh1j h+Documentation/tools/rtla/common_options.txthKhj@hhubj)}(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 }(hjhhhhNhNubh osnoise hist}(hjhhhhNhNubh2 tracer to run the sample threads in the cpu-list.}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKhjdubj)}(hBBy default, the |tool| tracer runs the sample threads on all CPUs.h](hBy default, the }(hj~hhhNhNubh osnoise hist}(hj~hhhNhNubh, tracer runs the sample threads on all CPUs.}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKhjdubeh}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubj)}(h&**-H**, **--house-keeping** *cpu-list*h](jE)}(h**-H**h]h-H}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--house-keeping**h]h--house-keeping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h *cpu-list*h]hcpu-list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjchKhj@hhubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchK hjubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchK hjubeh}(h]h ]h"]h$]h&]uh1jhjchK hj@hhubj)}(h&**-d**, **--duration** *time[s|m|h|d]*h](jE)}(h**-d**h]h-d}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h**--duration**h]h --duration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*time[s|m|h|d]*h]h time[s|m|h|d]}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjchK hj@hhubj)}(h!Set the duration of the session. h]j)}(h Set the duration of the session.h]h Set the duration of the session.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKhj8ubah}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubj)}(h**-D**, **--debug**h](jE)}(h**-D**h]h-D}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjPubh, }(hjPhhhNhNubjE)}(h **--debug**h]h--debug}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjPubeh}(h]h ]h"]h$]h&]uh1j hjchKhj@hhubj)}(hPrint debug info. h]j)}(hPrint debug info.h]hPrint debug info.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKhjzubah}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubj)}(h**-e**, **--event** *sys:event*h](jE)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh, }(hjhhhNhNubjE)}(h **--event**h]h--event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h *sys:event*h]h sys:event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjchKhj@hhubj)}(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 (}(hjhhhNhNubjE)}(h**-t**h]h-t}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh7) session. The argument can be a specific event, e.g., }(hjhhhNhNubjE)}(h**-e**h]h-e}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*sched:sched_switch*h]hsched:sched_switch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh), or all events of a system group, e.g., }(hjhhhNhNubjE)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }hjsbjY)}(h*sched*h]hsched}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh . Multiple }(hjhhhNhNubjE)}(h**-e**h]h-e}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh% are allowed. It is only active when }(hjhhhNhNubjE)}(h**-t**h]h-t}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh or }(hjhhhNhNubjE)}(h**-a**h]h-a}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh are set.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKhjubah}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubj)}(h**--filter** **h](jE)}(h **--filter**h]h--filter}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjv ubh }(hjv hhhNhNubjY)}(h **h]h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjv ubeh}(h]h ]h"]h$]h&]uh1j hjchKhj@hhubj)}(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 }(hj hhhNhNubjE)}(h**-e**h]h-e}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h *sys:event*h]h sys:event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh event with }(hj hhhNhNubjY)}(h **h]h}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj 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&]uh1j hjchKhj ubah}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubhdefinition_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](jE)}(h **--trigger**h]h --trigger}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h **h]h }(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hjchK&hj ubh 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 }(hj? hhhNhNubjE)}(h**-e**h]h-e}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj? ubh }(hj? hhhNhNubjY)}(h *sys:event*h]h sys:event}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj? ubh . If the }(hj? hhhNhNubjY)}(h*hist:*h]hhist:}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj? ubhX trigger is activated, the output histogram will be automatically saved to a file named }(hj? hhhNhNubjY)}(h*system_event_hist.txt*h]hsystem_event_hist.txt}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj? ubh. For example, the command:}(hj? hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKhj< ubj)}(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&]uh1j hjchK"hj< ubj)}(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 hhhNhNubjY)}(h*osnoise:irq_noise*h]hosnoise:irq_noise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh event in }(hj hhhNhNubjY)}(h*osnoise_irq_noise_hist.txt*h]hosnoise_irq_noise_hist.txt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK$hj< ubj)}(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&]uh1j hjchK&hj< ubeh}(h]h ]h"]h$]h&]uh1j: hj ubeh}(h]h ]h"]h$]h&]uh1j hjchK&hj ubah}(h]h ]h"]h$]h&]uh1j hj@hhhjchNubj)}(h>**-P**, **--priority** *o:prio|r:prio|f:prio|d:runtime:period*h](jE)}(h**-P**h]h-P}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h**--priority**h]h --priority}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h'*o:prio|r:prio|f:prio|d:runtime:period*h]h%o:prio|r:prio|f:prio|d:runtime:period}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hjchK(hj@hhubj)}(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 }(hjH hhhNhNubh osnoise hist}(hjH hhhNhNubh4 tracer threads, the format to set the priority are:}(hjH hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK*hjD ubh bullet_list)}(hhh](h list_item)}(h'*o:prio* - use SCHED_OTHER with *prio*;h]j)}(hjg h](jY)}(h*o:prio*h]ho:prio}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhji ubh - use SCHED_OTHER with }(hji hhhNhNubjY)}(h*prio*h]hprio}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhji ubh;}(hji hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK,hje ubah}(h]h ]h"]h$]h&]uh1jc hj` ubjd )}(h$*r:prio* - use SCHED_RR with *prio*;h]j)}(hj h](jY)}(h*r:prio*h]hr:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh - use SCHED_RR with }(hj hhhNhNubjY)}(h*prio*h]hprio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK-hj ubah}(h]h ]h"]h$]h&]uh1jc hj` ubjd )}(h&*f:prio* - use SCHED_FIFO with *prio*;h]j)}(hj h](jY)}(h*f:prio*h]hf:prio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh - use SCHED_FIFO with }(hj hhhNhNubjY)}(h*prio*h]hprio}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh;}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK.hj ubah}(h]h ]h"]h$]h&]uh1jc hj` ubjd )}(hf*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds. h]j)}(he*d:runtime[us|ms|s]:period[us|ms|s]* - use SCHED_DEADLINE with *runtime* and *period* in nanoseconds.h](jY)}(h$*d:runtime[us|ms|s]:period[us|ms|s]*h]h"d:runtime[us|ms|s]:period[us|ms|s]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh - use SCHED_DEADLINE with }(hj hhhNhNubjY)}(h *runtime*h]hruntime}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh and }(hj hhhNhNubjY)}(h*period*h]hperiod}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh in nanoseconds.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK/hj ubah}(h]h ]h"]h$]h&]uh1jc hj` ubeh}(h]h ]h"]h$]h&]bullet-uh1j^ hjchK,hjD 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\ hhhNhNubjY)}(h *osnoise*h]hosnoise}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj\ ubh and }(hj\ hhhNhNubjY)}(h *timerlat*h]htimerlat}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj\ ubh5 tracer documentation for the running kernel version.}(hj\ hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK1hjD ubeh}(h]h ]h"]h$]h&]uh1jhjchK*hj@hhubj)}(h **-C**, **--cgroup** \[*cgroup*]h](jE)}(h**-C**h]h-C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh, }(hj hhhNhNubjE)}(h **--cgroup**h]h--cgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh [}(hj hhhNhNubjY)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh]}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK3hj@hhubj)}(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 }(hj hhhNhNubjY)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh# to the tracer’s threads. If the }(hj hhhNhNubjE)}(h**-C**h]h-C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubhH option is passed without arguments, the tracer’s thread will inherit }(hj hhhNhNubjE)}(h**rtla**h]hrtla}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh’s }(hj hhhNhNubjY)}(h*cgroup*h]hcgroup}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh/. Otherwise, the threads will be placed on the }(hj hhhNhNubjY)}(h*cgroup*h]hcgroup}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubh passed to the option.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK5hj 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&]uh1j hjchK7hj ubeh}(h]h ]h"]h$]h&]uh1jhjchK5hj@hhubj)}(h**--warm-up** *s*h](jE)}(h **--warm-up**h]h --warm-up}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjT ubh }(hjT hhhNhNubjY)}(h*s*h]hs}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjT ubeh}(h]h ]h"]h$]h&]uh1j hjchK9hj@hhubj)}(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 hhhNhNubjY)}(h*s*h]hs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj 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&]uh1j hjchK;hj~ ubah}(h]h ]h"]h$]h&]uh1jhjchK;hj@hhubj )}(hhh]j )}(h**--trace-buffer-size** *kB* Set the per-cpu trace buffer size in kB for the tracing output. If not set, the default tracefs buffer size is used. h](j )}(h**--trace-buffer-size** *kB*h](jE)}(h**--trace-buffer-size**h]h--trace-buffer-size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*kB*h]hkB}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hjchK@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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchK>hj 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&]uh1j hjchK@hj ubeh}(h]h ]h"]h$]h&]uh1j: hj ubeh}(h]h ]h"]h$]h&]uh1j hjchK@hj ubah}(h]h ]h"]h$]h&]uh1j hj@hhhjchNubj)}(h**--on-threshold** *action*h](jE)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj ubh }(hj hhhNhNubjY)}(h*action*h]haction}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj ubeh}(h]h ]h"]h$]h&]uh1j hjchKBhj@hhubj)}(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 }(hj8hhhNhNubjE)}(hjWh]h -a/--auto}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhj8hhubh, }(hj8hhhNhNubjE)}(hjih]h -s/--stop}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhj8hhubh, or }(hj8hhhNhNubjE)}(hj{h]h-S/--stop-total}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhNhNhj8hhubh.}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKDhj4ubj)}(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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKGhj4ubj)}(hSupported actions are:h]hSupported actions are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKKhj4ubj_ )}(hhh](jd )}(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]jY)}(hjh]htrace[,file=]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubah}(h]h ]h"]h$]h&]uh1j hjchKMhjubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKOhjubeh}(h]h ]h"]h$]h&]uh1jc hjubjd )}(h*signal,num=,pid=* Sends signal to process. "parent" might be specified in place of pid to target the parent process of rtla. h](j)}(h*signal,num=,pid=*h]jY)}(hjh]hsignal,num=,pid=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubah}(h]h ]h"]h$]h&]uh1j hjchKShjubj)}(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&]uh1j hjchKUhjubeh}(h]h ]h"]h$]h&]uh1jc hjubjd )}(h2*shell,command=* Execute shell command. h](j)}(h*shell,command=*h]jY)}(hjh]hshell,command=}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubah}(h]h ]h"]h$]h&]uh1j hjchKXhjubj)}(hExecute shell command.h]hExecute shell command.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKZhjubeh}(h]h ]h"]h$]h&]uh1jc hjubjd )}(hM*continue* Continue tracing after actions are executed instead of stopping. h](j)}(h *continue*h]jY)}(hj+h]hcontinue}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhj)ubah}(h]h ]h"]h$]h&]uh1j hjchK\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&]uh1j hjchK^hj%ubeh}(h]h ]h"]h$]h&]uh1jc hjubeh}(h]h ]h"]h$]h&]jZ j[ uh1j^ hjchKMhj4ubj)}(hExample:h]hExample:}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchK`hj4ubj)}(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 }(hjhhhhNhNubh osnoise hist}(hjhhhhNhNubh }(hjhhhhNhNubh-s}(hjhhhhNhNubhG 20 --on-threshold trace --on-threshold shell,command=”grep ipi_send }(hjhhhhNhNubhosnoise}(hjhhhhNhNubh5_trace.txt” --on-threshold signal,num=2,pid=parent}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKbhj4ubj)}(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&]uh1j hjchKfhj4ubj)}(hPerformance Considerations:h]hPerformance Considerations:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKjhj4ubj)}(h |actionsperf|h]hhDue to implementational limitations, actions might be delayed up to one second after tracing is stopped.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKlhj4ubeh}(h]h ]h"]h$]h&]uh1jhjchKDhj@hhubj)}(h**--on-end** *action*h](jE)}(h **--on-end**h]h--on-end}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh }(hjhhhNhNubjY)}(h*action*h]haction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubeh}(h]h ]h"]h$]h&]uh1j hjchKnhj@hhubj)}(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&]uh1j hjchKphjubj)}(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&]uh1j hjchKrhjubj)}(hSee the documentation for **--on-threshold** for the list of supported actions, with the exception that *continue* has no effect.h](hSee the documentation for }(hjhhhNhNubjE)}(h**--on-threshold**h]h--on-threshold}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh< for the list of supported actions, with the exception that }(hjhhhNhNubjY)}(h *continue*h]hcontinue}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh has no effect.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchKvhjubj)}(hExample:h]hExample:}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKyhjubj)}(h"$ rtla |tool| -d 5s --on-end traceh](h$ rtla }(hjPhhhNhNubh osnoise hist}(hjPhhhNhNubh -d 5s --on-end trace}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjchK{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.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchK}hjubeh}(h]h ]h"]h$]h&]uh1jhjchKphj@hhubj)}(h**-h**, **--help**h](jE)}(h**-h**h]h-h}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubh, }(hjzhhhNhNubjE)}(h **--help**h]h--help}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjzubeh}(h]h ]h"]h$]h&]uh1j hjchKhj@hhubj)}(hPrint help menu. h]j)}(hPrint help menu.h]hPrint help menu.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjchKhjubah}(h]h ]h"]h$]h&]uh1jhjchKhj@hhubeh}(h]optionsah ]h"]optionsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hEXAMPLEh]hEXAMPLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK"ubj)}(hXlIn the example below, *osnoise* tracer threads are set to run with real-time priority *FIFO:1*, on CPUs *0-11*, for *900ms* at each period (*1s* by default). The reason for reducing the runtime is to avoid starving the **rtla** tool. The tool is also set to run for *one minute*. The output histogram is set to group outputs in buckets of *10us* and *25* entries::h](hIn the example below, }(hjhhhNhNubjY)}(h *osnoise*h]hosnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh7 tracer threads are set to run with real-time priority }(hjhhhNhNubjY)}(h*FIFO:1*h]hFIFO:1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh , on CPUs }(hjhhhNhNubjY)}(h*0-11*h]h0-11}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh, for }(hjhhhNhNubjY)}(h*900ms*h]h900ms}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh at each period (}(hjhhhNhNubjY)}(h*1s*h]h1s}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubhK by default). The reason for reducing the runtime is to avoid starving the }(hjhhhNhNubjE)}(h**rtla**h]hrtla}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh' tool. The tool is also set to run for }(hjhhhNhNubjY)}(h *one minute*h]h one minute}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh=. The output histogram is set to group outputs in buckets of }(hjhhhNhNubjY)}(h*10us*h]h10us}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh and }(hjhhhNhNubjY)}(h*25*h]h25}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jXhjubh entries:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhK#hjhhubh literal_block)}(hX[root@f34 ~/]# rtla osnoise hist -P F:1 -c 0-11 -r 900000 -d 1M -b 10 -E 25 # RTLA osnoise histogram # Time unit is microseconds (us) # Duration: 0 00:01:00 Index CPU-000 CPU-001 CPU-002 CPU-003 CPU-004 CPU-005 CPU-006 CPU-007 CPU-008 CPU-009 CPU-010 CPU-011 0 42982 46287 51779 53740 52024 44817 49898 36500 50408 50128 49523 52377 10 12224 8356 2912 878 2667 10155 4573 18894 4214 4836 5708 2413 20 8 5 12 2 13 24 20 41 29 53 39 39 30 1 1 0 0 10 3 6 19 15 31 30 38 40 0 0 0 0 0 4 2 7 2 3 8 11 50 0 0 0 0 0 0 0 0 0 1 1 2 over: 0 0 0 0 0 0 0 0 0 0 0 0 count: 55215 54649 54703 54620 54714 55003 54499 55461 54668 55052 55309 54880 min: 0 0 0 0 0 0 0 0 0 0 0 0 avg: 0 0 0 0 0 0 0 0 0 0 0 0 max: 30 30 20 20 30 40 40 40 40 50 50 50h]hX[root@f34 ~/]# rtla osnoise hist -P F:1 -c 0-11 -r 900000 -d 1M -b 10 -E 25 # RTLA osnoise histogram # Time unit is microseconds (us) # Duration: 0 00:01:00 Index CPU-000 CPU-001 CPU-002 CPU-003 CPU-004 CPU-005 CPU-006 CPU-007 CPU-008 CPU-009 CPU-010 CPU-011 0 42982 46287 51779 53740 52024 44817 49898 36500 50408 50128 49523 52377 10 12224 8356 2912 878 2667 10155 4573 18894 4214 4836 5708 2413 20 8 5 12 2 13 24 20 41 29 53 39 39 30 1 1 0 0 10 3 6 19 15 31 30 38 40 0 0 0 0 0 4 2 7 2 3 8 11 50 0 0 0 0 0 0 0 0 0 1 1 2 over: 0 0 0 0 0 0 0 0 0 0 0 0 count: 55215 54649 54703 54620 54714 55003 54499 55461 54668 55052 55309 54880 min: 0 0 0 0 0 0 0 0 0 0 0 0 avg: 0 0 0 0 0 0 0 0 0 0 0 0 max: 30 30 20 20 30 40 40 40 40 50 50 50}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhK)hjhhubeh}(h]exampleah ]h"]exampleah$]h&]uh1hhhhhhhhK"ubh)}(hhh](h)}(hSEE ALSOh]hSEE ALSO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK;ubj)}(h.**rtla-osnoise**\(1), **rtla-osnoise-top**\(1)h](jE)}(h**rtla-osnoise**h]h rtla-osnoise}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh(1), }(hjhhhNhNubjE)}(h**rtla-osnoise-top**h]hrtla-osnoise-top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jDhjubh(1)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhK`__h]j )}(hjh]hOsnoise tracer}(hjhhhNhNubah}(h]h ]h"]h$]h&]nameOsnoise tracerrefuri1https://docs.kernel.org/trace/osnoise-tracer.htmluh1j hjubah}(h]h ]h"]h$]h&]uh1j hhhK>hjhhubeh}(h]see-alsoah ]h"]see alsoah$]h&]uh1hhhhhhhhK;ubh)}(hhh](h)}(hAUTHORh]hAUTHOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKAubj)}(h:Written by Daniel Bristot de Oliveira h](h'Written by Daniel Bristot de Oliveira <}(hjhhhNhNubj )}(hbristot@kernel.orgh]hbristot@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bristot@kernel.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hhhKBhjhhubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hj6sbah}(h]h ]h"]h$]h&]jjuh1j4hjhhh,Documentation/tools/rtla/common_appendix.txthKubeh}(h]authorah ]h"]authorah$]h&]uh1hhhhhhhhKAubh)}(hhh](h)}(hSIGINT BEHAVIORh]hSIGINT BEHAVIOR}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhhhjDhKubj)}(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.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhKhjMhhubj)}(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.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhK hjMhhubj)}(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.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhK hjMhhubj)}(hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.h]hXNote: For the purpose of SIGINT behavior, the expiry of duration specified via the -d/--duration option is treated as equivalent to receiving a SIGINT. For example, a SIGINT received after duration expired but samples have not been processed yet will drop any outstanding samples.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhKhjMhhubj)}(hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.h]hAlso note that when using the timerlat tool in BPF mode, samples are processed in-kernel; RTLA only copies them out to display them to the user. A second SIGINT does not affect in-kernel sample aggregation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhKhjMhhubeh}(h]sigint-behaviorah ]h"]sigint behaviorah$]h&]uh1hhhhhhjDhKubh)}(hhh](h)}(h EXIT STATUSh]h EXIT STATUS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjDhKubj)}(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}hjsbah}(h]h ]h"]h$]h&]jjuh1jhjDhKhjhhubeh}(h] exit-statusah ]h"] exit statusah$]h&]uh1hhhhhhjDhKubh)}(hhh](h)}(hREPORTING BUGSh]hREPORTING BUGS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhjDhK"ubj)}(hUReport bugs to and h](hReport bugs to <}(hjhhhNhNubj )}(hlinux-kernel@vger.kernel.orgh]hlinux-kernel@vger.kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:linux-kernel@vger.kernel.orguh1j hjubh> and <}(hjhhhNhNubj )}(h!linux-trace-devel@vger.kernel.orgh]h!linux-trace-devel@vger.kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri(mailto:linux-trace-devel@vger.kernel.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjDhK#hjhhubeh}(h]reporting-bugsah ]h"]reporting bugsah$]h&]uh1hhhhhhjDhK"ubh)}(hhh](h)}(hLICENSEh]hLICENSE}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hhhjDhK'ubj)}(h6**rtla** is Free Software licensed under the GNU GPLv2h](jE)}(h**rtla**h]hrtla}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jDhj3ubh. is Free Software licensed under the GNU GPLv2}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hjDhK(hj"hhubeh}(h]licenseah ]h"]licenseah$]h&]uh1hhhhhhjDhK'ubh)}(hhh](h)}(hCOPYINGh]hCOPYING}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhhhjDhK+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).}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjDhK,hjWhhubeh}(h]copyingah ]h"]copyingah$]h&]uh1hhhhhhjDhK+ubeh}(h]1display-a-histogram-of-the-osnoise-tracer-samplesah ]h"]1display a histogram of the osnoise tracer samplesah$]h&]uh1hhhhhhhhKubeh}(h]rtla-osnoise-histah ]h"]rtla-osnoise-histah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generator N datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehƌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhjjQjjjjjjusubstitution_names}(toolhÌ thresholdj threshargjtracerj actionsperfjurefnames}refids}nameids}(jjjjjwjtj=j:jjjjjjjJjGjjjjjjjTjQj{jxu nametypes}(jjjwj=jjjjJjjjjTj{uh}(jhjhjtj/j:jzjj@jjjjjGjjjMjjjjjQj"jxjWu 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-osnoise-hist.rst(NNNNta decorationNhhub.