Enum glommio::Shares[][src]

pub enum Shares {
    Static(usize),
    Dynamic(Rc<dyn SharesManager>),
}

Represents how many shares a TaskQueue should receive.

Glommio’s scheduler doesn’t work with priorities, but rather shares. That means that if there is only one active task queue in the system, it will always receive 100 % of the resources.

As soon as two or more task queues are active, resources will be split between them proportionally to their shares: a queue with more shares will receive more resources.

Be careful when trying to reason about percentages of utilization as they will depend on the active task queues: The percentage of resources assigned to a task queue should be close to shares(i) / sum(shares(i) for i in t).

For example, if all task queues have 1000 shares (the default), when two of them are active they will have each 50% of the resources. As soon as a third one activates, each now has 33%.

This can be far off if there are other heavy processes competing for resources with your application in a way that glommio can’t see. For best results you should consider dedicating CPUs and storage devices to your application.

Shares are enforced by the system to be between 1 and 1000. So if all TaskQueues want maximum resources they should all get similar fractions. It is not possible for a TaskQueue to say it wants to use more than the others: it is only possible for the other task queues to say they are okay with using less (by reducing their shares)

Variants

Static(usize)

Static shares never change over the course of a lifetime of the application, therefore they never have to be recomputed

Dynamic(Rc<dyn SharesManager>)

Dynamic shares can change and are periodically recomputed.

Trait Implementations

impl Clone for Shares[src]

impl Debug for Shares[src]

impl Default for Shares[src]

Auto Trait Implementations

impl !RefUnwindSafe for Shares

impl !Send for Shares

impl !Sync for Shares

impl Unpin for Shares

impl !UnwindSafe for Shares

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> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[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.