Enum timely::worker::ProgressMode[][src]

pub enum ProgressMode {
    Eager,
    Demand,
}

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

impl Clone for ProgressMode[src]

impl Copy for ProgressMode[src]

impl Debug for ProgressMode[src]

impl Default for ProgressMode[src]

impl Eq for ProgressMode[src]

impl FromStr for ProgressMode[src]

type Err = String

The associated error which can be returned from parsing.

impl PartialEq<ProgressMode> for ProgressMode[src]

impl StructuralEq for ProgressMode[src]

impl StructuralPartialEq for ProgressMode[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Data for T where
    T: 'static + Clone
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ProgressEventTimestamp for T where
    T: Data + Any + Debug
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.