Enum glommio::Shares[][src]

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

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

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

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.