BlindRetryScenario
Agents scenarios · Implementation: mlsysim/engine/scenario_definitions/agents.py.
Construct this scenario with keyword inputs. The fields below show the types and defaults declared by this class.
Mutating calls retried once after any timeout, with independent request and reply loss.
Notes
Equation: Calls=workers*calls_per_worker; duplicate and timeout expectations come from BlindRetryModel.
Assumptions: Independent request/reply losses and one blind retry; cost properties treat the workload as daily.
Excludes: Correlated loss, idempotency safeguards, and distributions of duplicate harm.
References
Implementation reference: mlsysim.solvers.BlindRetryModel.solve documents the composed equation and its sources.
Examples
The named registry scenario supplies the stated inputs; this is a modeled calculation, not a new measurement.
>>> from mlsysim import Scenarios
>>> scenario = Scenarios.BlindRetryTwoPercentLoss
>>> scenario.calls
200000Attributes
| Name | Description |
|---|---|
| calls | Total mutating call count over the scenario’s accounting period: workers times calls per worker. |
| calls_per_worker | |
| duplicate_cost | |
| duplicate_cost_per_day | Expected duplicate-side-effect cost in USD for the declared daily workload; uses result.duplicates and supplied cost per duplicate. |
| lookup_cost_per_day | Status-lookup cost in USD when every modeled timeout triggers one lookup. |
| lost_request_share | Fraction of timeouts attributable to request loss under the solver’s independent request/reply-loss model; undefined when no timeout is possible. |
| reply_loss | |
| request_loss | |
| result | Return mlsysim.solvers.BlindRetryModel.solve for this scenario; output fields retain the units and feasibility semantics specified by that solver. |
| status_lookup_cost | |
| unapplied_closures | Expected calls whose first request never arrived: call count times request-loss probability. |
| workers |
request_loss
Type: float.
Declared default: required.
reply_loss
Type: float.
Declared default: required.
workers
Type: int.
Declared default: required.
calls_per_worker
Type: int.
Declared default: required.
duplicate_cost
Type: Optional[Quantity].
Declared default: None.
status_lookup_cost
Type: Optional[Quantity].
Declared default: None.
calls
engine.scenario_types.BlindRetryScenario.calls
Total mutating call count over the scenario’s accounting period: workers times calls per worker.
Equation: self.workers * self.calls_per_worker
result
engine.scenario_types.BlindRetryScenario.result
Return mlsysim.solvers.BlindRetryModel.solve for this scenario; output fields retain the units and feasibility semantics specified by that solver.
Equation: mlsysim.solvers.BlindRetryModel.solve (scenario fields).
unapplied_closures
engine.scenario_types.BlindRetryScenario.unapplied_closures
Expected calls whose first request never arrived: call count times request-loss probability.
Equation: self.calls * self.request_loss
duplicate_cost_per_day
engine.scenario_types.BlindRetryScenario.duplicate_cost_per_day
Expected duplicate-side-effect cost in USD for the declared daily workload; uses result.duplicates and supplied cost per duplicate.
Equation: (self.result.duplicates * self.duplicate_cost).to(‘USD’)
lookup_cost_per_day
engine.scenario_types.BlindRetryScenario.lookup_cost_per_day
Status-lookup cost in USD when every modeled timeout triggers one lookup.
Equation: (self.result.timeouts * self.status_lookup_cost).to(‘USD’)