Skip to main content

SchedulingSnapshotScenario

Serving scenarios · Implementation: mlsysim/engine/scenario_definitions/serving.py.

Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.

One snapshot of a shared pool’s in-service capacity, read at the scheduling boundary.

Capacity assigned to jobs includes gangs still waiting for members; only complete allocations can run a synchronous step, so scheduling goodput is the assigned share less the incomplete-gang share. Capacity in complete allocations waiting for input crosses this boundary and is a runtime loss.

Notes

Equation: scheduling goodput = assigned share - incomplete-gang share; executing share subtracts input waits.

Assumptions: Shares use offered capacity as the same denominator and incomplete gangs cannot perform a synchronous step.

Excludes: A time-integrated scheduler trace, queueing predictions, and removal of runtime loss by a scheduling-only change.

References

Derivation: scheduling goodput = assigned share - incomplete-gang share; executing share subtracts input waits. The individual properties state units and intermediate accounting; this class introduces no fitted coefficient.

Examples

The named scenario supplies illustrative inputs; the output is calculated.

>>> from mlsysim import Scenarios
>>> case = Scenarios.SharedPoolSchedulingSnapshot
>>> round(float(case.scheduling_goodput), 3)
0.65

Attributes

Name Description
assigned_share
executing_share Fraction of offered capacity executing after removing input waits from complete
incomplete_gang_share
input_wait_of_held Input-wait fraction normalized by complete-allocation held capacity.
input_wait_share
partial_hold_ceiling Scheduling-goodput ceiling if incomplete gangs become complete allocations without
scheduling_goodput Fraction of offered devices in complete allocations, assigned share minus
scheduling_loss Fraction of offered capacity outside complete allocations.
unassigned_share Fraction of offered devices assigned to no job.

assigned_share

Type: float.

Declared default: required.

incomplete_gang_share

Type: float.

Declared default: required.

input_wait_share

Type: float.

Declared default: required.

scheduling_goodput

engine.scenario_types.SchedulingSnapshotScenario.scheduling_goodput

Fraction of offered devices in complete allocations, assigned share minus incomplete gangs.

Equation: return assigned_share - incomplete_gang_share.

scheduling_loss

engine.scenario_types.SchedulingSnapshotScenario.scheduling_loss

Fraction of offered capacity outside complete allocations.

Equation: return 1 - scheduling_goodput.

unassigned_share

engine.scenario_types.SchedulingSnapshotScenario.unassigned_share

Fraction of offered devices assigned to no job.

Equation: return 1 - assigned_share.

executing_share

engine.scenario_types.SchedulingSnapshotScenario.executing_share

Fraction of offered capacity executing after removing input waits from complete allocations.

Equation: return scheduling_goodput - input_wait_share.

input_wait_of_held

engine.scenario_types.SchedulingSnapshotScenario.input_wait_of_held

Input-wait fraction normalized by complete-allocation held capacity.

Equation: return input_wait_share / scheduling_goodput.

partial_hold_ceiling

engine.scenario_types.SchedulingSnapshotScenario.partial_hold_ceiling

Scheduling-goodput ceiling if incomplete gangs become complete allocations without other changes.

Equation: return scheduling_goodput + incomplete_gang_share.

Back to top