Skip to content

arcalot/arcaflow-plugin-rtla

Repository files navigation

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.

Using the plugin

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

Input

Type:scope
Root 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
Type:int
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:int
Minimum: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
Type:int
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:object
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
Type:int
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:int
Minimum: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
Type:int
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

Outputs

error

Type:scope
Root object:ErrorOutput
Properties
error (string)
Required:Yes
Type:string
Objects
ErrorOutput (object)
Type:object
Properties
error (string)
Required:Yes
Type:string

success

Type:scope
Root 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
Type:string
Value type
Type:int
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
Type:string
Value type
Type:any
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:object
Properties
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:object
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
Type:string
Value type
Type:int
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
Type:string
Value type
Type:any
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