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
TaskQueue
s 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
Auto Trait Implementations
impl !RefUnwindSafe for Shares
impl !RefUnwindSafe for Shares
impl !UnwindSafe for Shares
impl !UnwindSafe for Shares