Skip to main content

BrokerReport

Struct BrokerReport 

Source
pub struct BrokerReport {
Show 43 fields pub steady_state_policy: SteadyStatePolicy, pub monitoring_stopped_after_convergence: bool, pub controller_samples: u64, pub controller_elapsed: Duration, pub controller_cpu_nanos: Option<u64>, pub controller_cpu_accounting_failures: usize, pub steady_probe_interval: Duration, pub opening_bracket: OpeningBracketReport, pub consumer_trajectory: Vec<usize>, pub producer_trajectory: Vec<usize>, pub actual_consumer_trajectory: Vec<usize>, pub actual_producer_trajectory: Vec<usize>, pub trajectory_elapsed: Vec<Duration>, pub cap_trajectory: Vec<CapObservation>, pub throughput_trace: Vec<f64>, pub throughput_trace_dropped: usize, pub trace_samples_dropped: usize, pub moves: usize, pub reverts: usize, pub nonlinear_probes: usize, pub nonlinear_probe_improvements: usize, pub nonlinear_override: bool, pub inconclusive_ratifications: usize, pub resurveys: usize, pub rejected_windows: usize, pub flow_transient_windows: usize, pub source_bound_samples: usize, pub inelastic_samples: usize, pub pressure_vetoed_shrinks: usize, pub time_to_converge: Option<Duration>, pub final_consumer_threads: usize, pub final_producer_limit: usize, pub final_consumer_live: usize, pub final_producer_active: usize, pub peak_controlled_slots: usize, pub peak_auxiliary_threads: usize, pub producer_measurement: Option<ProducerMeasurementStats>, pub rejections: Vec<Rejection>, pub final_epoch: u64, pub final_phase: BrokerPhase, pub current_drift: Duration, pub terminal_error: Option<String>, pub final_model: Option<Model>,
}
Expand description

What the broker did, for logging and for tests.

Fields§

§steady_state_policy: SteadyStatePolicy

Configured behavior after the first stable split.

§monitoring_stopped_after_convergence: bool

True when the controller terminated itself at convergence instead of continuing to sample until the application called finish.

§controller_samples: u64

Number of controller wakeups, including startup warm-up windows.

§controller_elapsed: Duration

Wall time for which the controller remained alive.

§controller_cpu_nanos: Option<u64>

Controller thread CPU time across its complete lifetime. This is measured with only one thread-clock read at start and one at exit.

§controller_cpu_accounting_failures: usize

Controller thread-clock reads that failed.

§steady_probe_interval: Duration

Effective cadence between responsive steady-state probes.

§opening_bracket: OpeningBracketReport

Cost and result of the optional startup-only opening bracket.

§consumer_trajectory: Vec<usize>

Consumer threads at each decision, in order.

§producer_trajectory: Vec<usize>

Producer limit at each decision, in order.

§actual_consumer_trajectory: Vec<usize>

Actual live/active occupancy observed at every recorded sample.

§actual_producer_trajectory: Vec<usize>§trajectory_elapsed: Vec<Duration>

Controller elapsed time for each retained trajectory point.

§cap_trajectory: Vec<CapObservation>

Times at which the inferred producer ceiling or its evidence changed.

§throughput_trace: Vec<f64>

Real pipeline-throughput windows retained while a decision was open. Steady-state probes are excluded, so this remains bounded startup or resurvey evidence rather than recurring telemetry overhead.

§throughput_trace_dropped: usize§trace_samples_dropped: usize

Oldest samples discarded after reaching trace_capacity.

§moves: usize

Splits applied, including reverts.

§reverts: usize

Moves undone because throughput got worse.

§nonlinear_probes: usize

Guarded local candidates attempted after the opening rejected or could not distinguish the model’s differing answer.

§nonlinear_probe_improvements: usize

Probe targets retained because their throughput confidence interval was strictly better than the previous split.

§nonlinear_override: bool

Whether the final split is held by measured opening-bracket evidence rather than the allocation-independent cost model.

§inconclusive_ratifications: usize

Ratifications whose uncertainty interval could not establish a regression or a clear non-regression.

§resurveys: usize

Times a settled split was re-opened by a detected regime change.

§rejected_windows: usize

Windows discarded as carrying too little work to estimate a rate from.

§flow_transient_windows: usize

Otherwise-usable windows rejected because producer buffers filled or drained materially, so the two stages did not process equivalent work.

§source_bound_samples: usize

Samples where the run was source-bound rather than decode-bound.

§inelastic_samples: usize

Samples where the producer could not use more concurrency at all.

§pressure_vetoed_shrinks: usize

Model-requested producer shrinks vetoed because runnable producer work was still queued behind the current limit.

§time_to_converge: Option<Duration>

Time from the end of warm-up until the split stopped changing.

Measured to the last actual change of allocation, not to the moment the controller last stopped deliberating. Those differ: a settled split can be re-opened by drift, re-solved, and left exactly where it was. That is a decision being reconsidered, not an allocation moving, and reporting it as a fresh convergence is misleading in the direction that matters — it makes a stable run look unstable.

Measured on a 2.3 billion read Flex run at -t 64: the split reached 25 decode slots about two seconds in and never moved again for the remaining 111 seconds, while a single harmless resurvey made this field read 87 seconds.

§final_consumer_threads: usize

Final split.

§final_producer_limit: usize§final_consumer_live: usize

Actual controlled occupancy observed when the controller stopped. Under freeze-after-convergence this is earlier than application shutdown.

§final_producer_active: usize§peak_controlled_slots: usize

Largest observed sum of live consumer workers and active producer slots.

§peak_auxiliary_threads: usize

Peak live threads explicitly outside the controlled slot budget: the controller itself plus producer-reported coordinators/optional samplers.

§producer_measurement: Option<ProducerMeasurementStats>

Producer measurement diagnostics. Native cumulative counters report zero samples and observation time; sampled adapters also report their cadence and sampler CPU.

§rejections: Vec<Rejection>

Rejected targets and the workload epoch in which they failed.

§final_epoch: u64§final_phase: BrokerPhase§current_drift: Duration§terminal_error: Option<String>§final_model: Option<Model>

Last solved model, for diagnosing a split that looks wrong.

Implementations§

Source§

impl BrokerReport

Source

pub fn converged(&self) -> bool

Whether the broker settled and stayed settled.

Trait Implementations§

Source§

impl Clone for BrokerReport

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BrokerReport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BrokerReport

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Serialize for BrokerReport

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more