pub struct GornaArbitrator { /* private fields */ }Expand description
Arbitrates resource allocation between multiple ISAs.
The arbitrator implements a two-pass approach:
- Pass 1 (Negotiation): Collects strategy options from all agents.
- Pass 2 (Fitting): Selects the optimal strategy combination that fits within the global frame budget, respecting priorities and VRAM constraints.
Implementations§
Source§impl GornaArbitrator
impl GornaArbitrator
Sourcepub fn new(lock_timeout: Duration) -> Self
pub fn new(lock_timeout: Duration) -> Self
Creates a new arbitrator with the specified lock timeout.
The lock timeout determines how long to wait when acquiring locks on agents during negotiation and budget issuance. Agents that cannot be locked within this timeout are skipped.
Sourcepub fn set_wave_plan(&mut self, waves: &[Vec<AgentId>])
pub fn set_wave_plan(&mut self, waves: &[Vec<AgentId>])
Sets the scheduler’s latest wave plan (how agents are grouped for
concurrent execution). Budget fitting costs each wave by its critical
path (max of its members); an empty plan means serial execution, so
fitting falls back to summing per-agent costs — bit-identical to the
pre-parallel behaviour.
Sourcepub fn set_adaptation_mode(&mut self, agent_id: AgentId, mode: AdaptationMode)
pub fn set_adaptation_mode(&mut self, agent_id: AgentId, mode: AdaptationMode)
Sets the [AdaptationMode] for an agent — the developer-control surface.
Manual(strategy) pins the agent; Learning (default) lets GORNA negotiate.
Sourcepub fn adaptation_mode(&self, agent_id: AgentId) -> AdaptationMode
pub fn adaptation_mode(&self, agent_id: AgentId) -> AdaptationMode
Returns the [AdaptationMode] configured for an agent (default Learning).
Sourcepub fn arbitrate(
&self,
context: &Context,
report: &AnalysisReport,
agents: &mut [Arc<Mutex<dyn Agent>>],
measured_costs: &HashMap<AgentId, f64>,
replay: Option<&TickDecisions>,
hints: &HashMap<AgentId, AgentHints>,
) -> TickDecisions
pub fn arbitrate( &self, context: &Context, report: &AnalysisReport, agents: &mut [Arc<Mutex<dyn Agent>>], measured_costs: &HashMap<AgentId, f64>, replay: Option<&TickDecisions>, hints: &HashMap<AgentId, AgentHints>, ) -> TickDecisions
Performs a full GORNA arbitration round.
§Arguments
context: The current DCC situational model (phase, hardware, multiplier).report: The analysis report from theHeuristicEngine.agents: The registered ISA agents.measured_costs: Per-agent measured execution cost in milliseconds (from the DCC’s empirical cost models). Used to calibrate the agents’ self-quoted strategy estimates against reality; agents without a measurement keep their quotes as-is (cold start).replay: WhenSome, issue the recorded strategy per agent instead of the negotiated fit (deterministic replay — bypasses budget fitting and the per-agentAdaptationMode).Nonefor normal live arbitration.hints: Per-agent developer [AgentHints] accumulated by the DCC.Prioritizebiases the negotiation priority (which agents the fit upgrades first);Capclamps the issued strategy to a time ceiling. Advisory only —replayand aManualpin both override a hint.
Returns the [TickDecisions] actually issued this tick (agent → strategy),
so the DCC can record them for later replay.