| **-a**, **--auto** *us* |
| |
| Set the automatic trace mode. This mode sets some commonly used options |
| while debugging the system. It is equivalent to use **-T** *us* **-s** *us* |
| **-t**. By default, *timerlat* tracer uses FIFO:95 for *timerlat* threads, |
| thus equilavent to **-P** *f:95*. |
| |
| **-p**, **--period** *us* |
| |
| Set the *timerlat* tracer period in microseconds. |
| |
| **-i**, **--irq** *us* |
| |
| Stop trace if the *IRQ* latency is higher than the argument in us. |
| |
| **-T**, **--thread** *us* |
| |
| Stop trace if the *Thread* latency is higher than the argument in us. |
| |
| **-s**, **--stack** *us* |
| |
| Save the stack trace at the *IRQ* if a *Thread* latency is higher than the |
| argument in us. |
| |
| **-t**, **--trace** \[*file*] |
| |
| Save the stopped trace to [*file|timerlat_trace.txt*]. |
| |
| **--dma-latency** *us* |
| Set the /dev/cpu_dma_latency to *us*, aiming to bound exit from idle latencies. |
| *cyclictest* sets this value to *0* by default, use **--dma-latency** *0* to have |
| similar results. |
| |
| **--deepest-idle-state** *n* |
| Disable idle states higher than *n* for cpus that are running timerlat threads to |
| reduce exit from idle latencies. If *n* is -1, all idle states are disabled. |
| On exit from timerlat, the idle state setting is restored to its original state |
| before running timerlat. |
| |
| Requires rtla to be built with libcpupower. |
| |
| **-k**, **--kernel-threads** |
| |
| Use timerlat kernel-space threads, in contrast of **-u**. |
| |
| **-u**, **--user-threads** |
| |
| Set timerlat to run without a workload, and then dispatches user-space workloads |
| to wait on the timerlat_fd. Once the workload is awakes, it goes to sleep again |
| adding so the measurement for the kernel-to-user and user-to-kernel to the tracer |
| output. **--user-threads** will be used unless the user specify **-k**. |
| |
| **-U**, **--user-load** |
| |
| Set timerlat to run without workload, waiting for the user to dispatch a per-cpu |
| task that waits for a new period on the tracing/osnoise/per_cpu/cpu$ID/timerlat_fd. |
| See linux/tools/rtla/sample/timerlat_load.py for an example of user-load code. |
| |
| **--on-threshold** *action* |
| |
| Defines an action to be executed when tracing is stopped on a latency threshold |
| specified by **-i/--irq** or **-T/--thread**. |
| |
| Multiple --on-threshold actions may be specified, and they will be executed in |
| the order they are provided. If any action fails, subsequent actions in the list |
| will not be executed. |
| |
| Supported actions are: |
| |
| - *trace[,file=<filename>]* |
| |
| Saves trace output, optionally taking a filename. Alternative to -t/--trace. |
| Note that nlike -t/--trace, specifying this multiple times will result in |
| the trace being saved multiple times. |
| |
| - *signal,num=<sig>,pid=<pid>* |
| |
| Sends signal to process. "parent" might be specified in place of pid to target |
| the parent process of rtla. |
| |
| - *shell,command=<command>* |
| |
| Execute shell command. |
| |
| - *continue* |
| |
| Continue tracing after actions are executed instead of stopping. |
| |
| Example: |
| |
| $ rtla timerlat -T 20 --on-threshold trace |
| --on-threshold shell,command="grep ipi_send timerlat_trace.txt" |
| --on-threshold signal,num=2,pid=parent |
| |
| This will save a trace with the default filename "timerlat_trace.txt", print its |
| lines that contain the text "ipi_send" on standard output, and send signal 2 |
| (SIGINT) to the parent process. |
| |
| Performance Considerations: |
| |
| For time-sensitive actions, it is recommended to run **rtla timerlat** with BPF |
| support and RT priority. Note that due to implementational limitations, actions |
| might be delayed up to one second after tracing is stopped if BPF mode is not |
| available or disabled. |
| |
| **--on-end** *action* |
| |
| Defines an action to be executed at the end of **rtla timerlat** tracing. |
| |
| Multiple --on-end actions can be specified, and they will be executed in the order |
| they are provided. If any action fails, subsequent actions in the list will not be |
| executed. |
| |
| See the documentation for **--on-threshold** for the list of supported actions, with |
| the exception that *continue* has no effect. |
| |
| Example: |
| |
| $ rtla timerlat -d 5s --on-end trace |
| |
| This runs rtla timerlat with default options and save trace output at the end. |