Enum timely::worker::ProgressMode [−][src]
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
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.
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]
fn clone(&self) -> ProgressMode
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for ProgressMode
[src]
impl Debug for ProgressMode
[src]
impl Default for ProgressMode
[src]
fn default() -> ProgressMode
[src]
impl Eq for ProgressMode
[src]
impl FromStr for ProgressMode
[src]
type Err = String
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<ProgressMode, String>
[src]
impl PartialEq<ProgressMode> for ProgressMode
[src]
fn eq(&self, other: &ProgressMode) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl StructuralEq for ProgressMode
[src]
impl StructuralPartialEq for ProgressMode
[src]
Auto Trait Implementations
impl RefUnwindSafe for ProgressMode
impl Send for ProgressMode
impl Sync for ProgressMode
impl Unpin for ProgressMode
impl UnwindSafe for ProgressMode
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Data for T where
T: 'static + Clone,
[src]
T: 'static + Clone,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ProgressEventTimestamp for T where
T: Data + Any + Debug,
[src]
T: Data + Any + Debug,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,