The following structures provide execution statistics about STM entities such as Runnables, Hyperepochs, Epochs, Resources, and Clients.
RunInformationFull is a container for information obtained during execution of an STM entity (e.g. a runnable, a hyperepoch). It contains all start and end times of the entity in addition to its aggregate run statistics.
It has the following fields:
Field | Type | Description |
---|---|---|
start_times | numpy.ndarray | A numpy ndarray containing the times at which the associated STM entity began execution. One array entry exists for each frame. |
end_times | numpy.ndarray | A numpy ndarray containing the times at which the associated STM entity ended execution. One array entry exists for each frame. |
duration | numpy.ndarray | A numpy ndarray containing the per-frame durations of the associated STM entity. This attribute is equivalent to 'end_times - start_times '. One array entry exists for each frame. A value of 0 (zero) indicates that the given frame was skipped. |
overruns | numpy.ndarray | A numpy ndarray containing the indices into start_times , end_times , and duration in which a frame overrun occurred. |
skipped_frames | numpy.ndarray | A numpy ndarray containing the indices into start_times , end_times , and duration in which a frame skip occurred. |
missing_frames | numpy.ndarray | A numpy ndarray containing the indices into start_times , end_times , and duration in which one or more markers were missing. In this case, we consider the entire frame skipped. |
duration_stats | StatisticsWithOverruns | Aggregate statistics describing run durations |
overrun_stats | Statistics | Duration distribution of the runnables which have overrun. This is different from the overrun info within the duration_stats variable above. This shows the duration distribution for only the frames which have overrun, while the prior includes statistics for both overrunning and non-overrunning frames. |
start_time_jitter_stats | Statistics | A Statistics object describing the jitter in the start times of an STM entity |
can_intentionally_skip | bool | A boolean indicating whether this run info can have some runs intentionally skipped; because of round robin execution, etc. |
A container for the statistics describing the data obtained during a runtime instance of an STM entity (e.g. a runnable, a hyperepoch). It has the following fields:
Field | Type | Description |
---|---|---|
num_frames_executed | int | The number of frames that were executed during the run (frame skips not counted) |
mean_duration | float | The mean of the frame durations. |
std_duration | float | The standard deviation of the frame durations. |
percentile_99_duration | float | The 99th percentile of frame durations. |
max_duration | int | The maximum frame duration. |
min_duration | int | The minimum frame duration. |
A container for the statistics describing the data obtained during a runtime instance of an STM entity (e.g. a runnable, a hyperepoch). Expands upon Statistics
by including overrun-related statistics.
It has the following fields, in addition to the fields described under Statistics
:
Field | Type | Description |
---|---|---|
num_overruns | int | The number of overruns which occurred. |
overrun_fraction | float | The fraction of frames which overrun as a float between 0 and 1. |
mean_overprovision | float | The mean in nanoseconds of the discrepancy between scheduled duration and actual duration (scheduled time / how long the runnable actually took). Note that this value can be negative as overruns occur. |
mean_overprovision_frac | float | The mean as a fraction of the discrepancy between scheduled duration and actual duration (mean_overprovision / scheduled duration). Note that this value can be negative as overruns occur. |
CriticalPathInfo is a container for the critical path information obtained from the STM Schedule and runtime log for a particular Hyperepoch.
It has the following fields:
Field | Type | Description |
---|---|---|
path_metrics | list(CriticalRunnableMetrics) | A list of metrics per runnable in the critical path(s). |
scheduled_path_length | int | Length of the scheduled critical path in ns |
mean_exec_path_length | float | Mean of observed critical path length in ns (includes overhead) |
overhead_fraction | float | Fraction of the critical path contributed by overhead (0 <= overhead_fraction <= 1 ) |
resource_utilization | dict(str->float) | A Dictionary containing the resource type and the fraction of critical path operating on that resource type |
A container for the following runnable metrics:
Field | Type | Description |
---|---|---|
runnable_id | str | A string indicating the runnable ID |
start_time | int | The scheduled start time of the runnable in ns |
wcet | int | The WCET specified in the YAML input to the STM compiler |
mean_exec_time | int | The mean of measured execution times in ns for this runnable |
mean_exec_time_with_overhead | int | The mean of measured execution times for this runnable, including STM overhead for scheduling and logging in ns |
mean_overhead | int | The mean of STM overhead seen for this runnable, in ns. |
resource_type | str | The type of hardware resource used by this runnable |