Realtime Linux Analysis (RTLA) Plugin
This plugin runs the rtla timerlat hist tool to collect CPU latency data from the
target system and then generates a structured output of the results.
Note
Unless a duration input value is provided, this plugin runs indefinitely until
explicitly cancelled. When used as a stand-alone plugin outside of an Arcaflow
workflow, the data collection can be stopped with Ctrl-c. When used in an Arcaflow
workflow, the stop_if option should be used to send the cancel signal to the
plugin based on the status of another plugin.
Note
This plugin requires privilege escalation and a bind mount of the /sys/kernel/debug
directory in order to collect data.
Get a maintained build from
quay.io/arcalot/arcaflow-plugin-rtla ,
or build the container locally:
podman build . -t arcaflow-plugin-rtla
Run with the provided example input:
podman run -i --rm --privileged -v /sys/kernel/debug:/sys/kernel/debug arcaflow-plugin-rtla -f - < configs/timerlat_example.yaml
Autogenerated Input/Output Documentation by Arcaflow-Docsgen Below
Run RTLA Timerlat (run-timerlat)
Runs the RTLA Timerlat data collection and then processes the results into a machine-readable format
Type: scopeRoot object: TimerlatInputParams
Properties bucket-size (int)
Name: histogram bucket size Description: Set the histogram bucket size (default 1) Required: No Type: int
cpus (list[int])
Name: cpus Description: Run the tracer only on the given cpus Required: No Type: list[int]
List items
duration (int)
Name: timerlat duration seconds Description: Duration of the session in seconds Required: No Type: int
entries (int)
Name: histogram entries Description: Set the number of entries of the histogram (default 256) Required: No Type: intMinimum: 10 Maximum: 9999999
house-keeping (list[int])
Name: house-keeping cpus Description: Run rtla control threads only on the given cpus Required: No Type: list[int]
List items
nano (bool)
Name: display nanoseconds Description: Display data in nanoseconds Required: No Type: bool
period (int)
Name: timerlat period Description: Timerlat period in μs Required: No Type: int
user-threads (bool)
Name: use user threads Description: Use rtla user-space threads instead of kernel-space timerlat threads Required: No Type: bool
Objects TimerlatInputParams (object)
Type: objectProperties bucket-size (int)
Name: histogram bucket size Description: Set the histogram bucket size (default 1) Required: No Type: int
cpus (list[int])
Name: cpus Description: Run the tracer only on the given cpus Required: No Type: list[int]
List items
duration (int)
Name: timerlat duration seconds Description: Duration of the session in seconds Required: No Type: int
entries (int)
Name: histogram entries Description: Set the number of entries of the histogram (default 256) Required: No Type: intMinimum: 10 Maximum: 9999999
house-keeping (list[int])
Name: house-keeping cpus Description: Run rtla control threads only on the given cpus Required: No Type: list[int]
List items
nano (bool)
Name: display nanoseconds Description: Display data in nanoseconds Required: No Type: bool
period (int)
Name: timerlat period Description: Timerlat period in μs Required: No Type: int
user-threads (bool)
Name: use user threads Description: Use rtla user-space threads instead of kernel-space timerlat threads Required: No Type: bool
Type: scopeRoot object: ErrorOutput
Properties error (string)
Objects ErrorOutput (object)
Type: objectProperties error (string)
Type: scopeRoot object: TimerlatOutput
Properties latency_hist (list[map[string,int]])
Name: latency histogram Description: Histogram of latencies Required: No Type: list[map[string,int]]
List items
Type: map[string,int]
Key type
Value type
stats_per_col (list[map[string,any]])
Name: statistics per column Description: Latency statistics per captured column Required: No Type: list[map[string,any]]
List items
Type: map[string,any]
Key type
Value type
time_unit (string)
Name: latency unit Description: Time unit for latency values Required: No Type: string
total_irq_latency (reference[LatencyStats])
Name: total irq latency Description: Total IRQ latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats
total_thr_latency (reference[LatencyStats])
Name: total thread latency Description: Total thread latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats
total_usr_latency (reference[LatencyStats])
Name: total usr latency Description: Total user latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats
Objects LatencyStats (object)
Type: objectProperties avg (int)
Name: average latency Description: Average latency value Required: No Type: int
count (int)
Name: number of measurements Description: Number of latency measurements Required: No Type: int
max (int)
Name: maximum latency Description: Maximum latency value Required: No Type: int
min (int)
Name: minimum latency Description: Minimum latency value Required: No Type: int
TimerlatOutput (object)
Type: objectProperties latency_hist (list[map[string,int]])
Name: latency histogram Description: Histogram of latencies Required: No Type: list[map[string,int]]
List items
Type: map[string,int]
Key type
Value type
stats_per_col (list[map[string,any]])
Name: statistics per column Description: Latency statistics per captured column Required: No Type: list[map[string,any]]
List items
Type: map[string,any]
Key type
Value type
time_unit (string)
Name: latency unit Description: Time unit for latency values Required: No Type: string
total_irq_latency (reference[LatencyStats])
Name: total irq latency Description: Total IRQ latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats
total_thr_latency (reference[LatencyStats])
Name: total thread latency Description: Total thread latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats
total_usr_latency (reference[LatencyStats])
Name: total usr latency Description: Total user latency Required: No Type: reference[LatencyStats]Referenced object: LatencyStats