Skip to main content

GornaArbitrator

Struct GornaArbitrator 

Source
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

Source

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.

Source

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.

Source

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.

Source

pub fn adaptation_mode(&self, agent_id: AgentId) -> AdaptationMode

Returns the [AdaptationMode] configured for an agent (default Learning).

Source

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 the HeuristicEngine.
  • 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: When Some, issue the recorded strategy per agent instead of the negotiated fit (deterministic replay — bypasses budget fitting and the per-agent AdaptationMode). None for normal live arbitration.
  • hints: Per-agent developer [AgentHints] accumulated by the DCC. Prioritize biases the negotiation priority (which agents the fit upgrades first); Cap clamps the issued strategy to a time ceiling. Advisory only — replay and a Manual pin both override a hint.

Returns the [TickDecisions] actually issued this tick (agent → strategy), so the DCC can record them for later replay.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AppLifecycle for T
where T: ?Sized,

§

fn on_start(&mut self, ctx: &mut dyn AppContext)

Called once after the backend is up but before the first update. Apps install their theme / fonts here.
§

fn on_exit(&mut self)

Called once when the window is closing. Persist state here.
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

Returns a reference to the inner value as &dyn Any.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.