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
Runs the RTLA Timerlat data collection and then processes the results into a machine-readable format
Type: | scope | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Root object: | TimerlatInputParams | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Properties | bucket-size (
|
Name: | histogram bucket size |
---|---|
Description: | Set the histogram bucket size (default 1) |
Required: | No |
Type: | int |
cpus (list[int
]
)
int
]Name: | cpus | ||
---|---|---|---|
Description: | Run the tracer only on the given cpus | ||
Required: | No | ||
Type: | list[ | ||
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: | int |
Minimum: | 10 |
Maximum: | 9999999 |
house-keeping (list[int
]
)
int
]Name: | house-keeping cpus | ||
---|---|---|---|
Description: | Run rtla control threads only on the given cpus | ||
Required: | No | ||
Type: | list[ | ||
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: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | bucket-size (
|
Name: | histogram bucket size |
---|---|
Description: | Set the histogram bucket size (default 1) |
Required: | No |
Type: | int |
cpus (list[int
]
)
int
]Name: | cpus | ||
---|---|---|---|
Description: | Run the tracer only on the given cpus | ||
Required: | No | ||
Type: | list[ | ||
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: | int |
Minimum: | 10 |
Maximum: | 9999999 |
house-keeping (list[int
]
)
int
]Name: | house-keeping cpus | ||
---|---|---|---|
Description: | Run rtla control threads only on the given cpus | ||
Required: | No | ||
Type: | list[ | ||
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: | scope | ||||||||
---|---|---|---|---|---|---|---|---|---|
Root object: | ErrorOutput | ||||||||
Properties | error (
|
Required: | Yes |
---|---|
Type: | string |
Objects
ErrorOutput (object
)
Type: | object | ||||
---|---|---|---|---|---|
Properties | error (
|
Required: | Yes |
---|---|
Type: | string |
Type: | scope | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Root object: | TimerlatOutput | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Properties | latency_hist (
map[ ] |
Name: | latency histogram | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Description: | Histogram of latencies | ||||||||||
Required: | No | ||||||||||
Type: | list[ | ||||||||||
List items
|
stats_per_col (list[map[string
,any
]
]
)
map[string
,any
]
]Name: | statistics per column | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Description: | Latency statistics per captured column | ||||||||||
Required: | No | ||||||||||
Type: | list[ | ||||||||||
List items
|
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 (
|
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 (
map[ ] |
Name: | latency histogram | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Description: | Histogram of latencies | ||||||||||
Required: | No | ||||||||||
Type: | list[ | ||||||||||
List items
|
stats_per_col (list[map[string
,any
]
]
)
map[string
,any
]
]Name: | statistics per column | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Description: | Latency statistics per captured column | ||||||||||
Required: | No | ||||||||||
Type: | list[ | ||||||||||
List items
|
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 |