Enum timely::worker::ProgressMode

source ·
pub enum ProgressMode {
    Eager,
    Demand,
}
Expand description

Different ways in which timely’s progress tracking can work.

These options drive some buffering and accumulation that timely can do to try and trade volume of progress traffic against latency. By accumulating updates longer, a smaller total volume of messages are sent.

The ProgressMode::Demand variant is the most robust, and least likely to lead to catastrophic performance. The Eager variant is useful for getting the smallest latencies on systems with few workers, but does risk saturating the system with progress messages and should be used with care, or not at all.

If you are not certain which option to use, prefer Demand, and perhaps monitor the progress messages through timely’s logging infrastructure to see if their volume is surprisingly high.

Variants§

§

Eager

Eagerly transmit all progress updates produced by a worker.

Progress messages are transmitted without consideration for the possibility that they may unblock other workers. This can result in a substantial volume of messages that do not result in a change to the lower bound of outstanding work.

§

Demand

Delay transmission of progress updates until any could advance the global frontier of timestamps.

As timely executes, the progress messages inform each worker of the outstanding work remaining in the system. As workers work, they produce changes to this outstanding work. This option delays the communication of those changes until they might possibly cause a change in the lower bound of all outstanding work.

The most common case this remedies is when one worker transmits messages to other workers, that worker holds a capability for the operator and timestamp. Other workers will receive messages, and with this option will not immediately acknowledge receiving the messages, because the held capability is strictly prior to what the messages can affect. Once the capability is released, the progress messages are unblocked and transmitted, in accumulated form.

Trait Implementations§

source§

impl Clone for ProgressMode

source§

fn clone(&self) -> ProgressMode

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for ProgressMode

source§

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

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

impl Default for ProgressMode

source§

fn default() -> ProgressMode

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

impl FromStr for ProgressMode

§

type Err = String

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<ProgressMode, String>

Parses a string s to return a value of this type. Read more
source§

impl PartialEq for ProgressMode

source§

fn eq(&self, other: &ProgressMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for ProgressMode

source§

impl Eq for ProgressMode

source§

impl StructuralPartialEq for ProgressMode

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> CopyAs<T> for T

source§

fn copy_as(self) -> T

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ProgressEventTimestamp for T
where T: Data + Debug + Any,

source§

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

Upcasts this ProgressEventTimestamp to Any. Read more
source§

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

Returns the name of the concrete type of this object. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

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>,

§

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>,

§

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> Data for T
where T: Clone + 'static,