Analyzed Graph Primitives#

The following structures provide execution statistics about STM entities such as Runnables, Hyperepochs, Epochs, Resources, and Clients.

RunInformationFull#

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.

Statistics#

A container for the statistics describing the data obtained during a runtime instance of an STM entity (for example a runnable or 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 ninety-ninth percentile of frame durations.

max_duration

int

The maximum frame duration.

min_duration

int

The minimum frame duration.

StatisticsWithOverruns#

A container for the statistics describing the data obtained during a runtime instance of an STM entity (for example a runnable or 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#

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.

CriticalRunnableMetrics#

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.