ResourceBasedTuner

Struct ResourceBasedTuner 

Source
pub struct ResourceBasedTuner<MI> { /* private fields */ }
Expand description

Implements WorkerTuner and attempts to maintain certain levels of resource usage when under load.

It does so by using two PID controllers, one for memory and one for CPU, which are fed the current usage levels of their respective resource as measurements. The user specifies a target threshold for each, and slots are handed out if the output of both PID controllers is above some defined threshold. See ResourceBasedSlotsOptions for the default PID controller settings.

Implementations§

Source§

impl ResourceBasedTuner<RealSysInfo>

Source

pub fn new(target_mem_usage: f64, target_cpu_usage: f64) -> Self

Create an instance attempting to target the provided memory and cpu thresholds as values between 0 and 1.

Source

pub fn new_from_options(options: ResourceBasedSlotsOptions) -> Self

Create an instance using the fully configurable set of PID controller options

Source§

impl<MI> ResourceBasedTuner<MI>

Source

pub fn with_workflow_slots_options( &mut self, opts: ResourceSlotOptions, ) -> &mut Self

Set workflow slot options

Source

pub fn with_activity_slots_options( &mut self, opts: ResourceSlotOptions, ) -> &mut Self

Set activity slot options

Source

pub fn with_local_activity_slots_options( &mut self, opts: ResourceSlotOptions, ) -> &mut Self

Set local activity slot options

Source

pub fn with_nexus_slots_options( &mut self, opts: ResourceSlotOptions, ) -> &mut Self

Set nexus slot options

Trait Implementations§

Source§

impl<MI: SystemResourceInfo + Sync + Send + 'static> WorkerTuner for ResourceBasedTuner<MI>

Source§

fn workflow_task_slot_supplier( &self, ) -> Arc<dyn SlotSupplier<SlotKind = WorkflowSlotKind> + Send + Sync>

Return a SlotSupplier for workflow tasks. Note that workflow task slot suppliers must be willing to hand out a minimum of one non-sticky slot and one sticky slot if workflow caching is enabled, otherwise the worker may fail to process new tasks.
Source§

fn activity_task_slot_supplier( &self, ) -> Arc<dyn SlotSupplier<SlotKind = ActivitySlotKind> + Send + Sync>

Return a SlotSupplier for activity tasks
Source§

fn local_activity_slot_supplier( &self, ) -> Arc<dyn SlotSupplier<SlotKind = LocalActivitySlotKind> + Send + Sync>

Return a SlotSupplier for local activities
Source§

fn nexus_task_slot_supplier( &self, ) -> Arc<dyn SlotSupplier<SlotKind = NexusSlotKind> + Send + Sync>

Return a SlotSupplier for nexus tasks

Auto Trait Implementations§

§

impl<MI> Freeze for ResourceBasedTuner<MI>

§

impl<MI> !RefUnwindSafe for ResourceBasedTuner<MI>

§

impl<MI> Send for ResourceBasedTuner<MI>
where MI: Sync + Send,

§

impl<MI> Sync for ResourceBasedTuner<MI>
where MI: Sync + Send,

§

impl<MI> Unpin for ResourceBasedTuner<MI>

§

impl<MI> !UnwindSafe for ResourceBasedTuner<MI>

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

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<T> ErasedDestructor for T
where T: 'static,