Enum glommio::Shares

source ·
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§

source§

impl Clone for Shares

source§

fn clone(&self) -> Shares

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 Shares

source§

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

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

impl Default for Shares

source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl Freeze for Shares

§

impl !RefUnwindSafe for Shares

§

impl !Send for Shares

§

impl !Sync for Shares

§

impl Unpin for Shares

§

impl !UnwindSafe for Shares

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more