Skip to main content

Sizing

Struct Sizing 

Source
pub struct Sizing {
    pub since: u64,
    pub until: u64,
    pub margin: u32,
    pub sample_interval: u64,
    pub min_jobs: u32,
    pub memory_max: Option<u64>,
    pub admission: AdmissionPolicy,
    pub profiles: Vec<ProfileSizing>,
    pub auto: bool,
    pub changes: Vec<SizingChange>,
    pub auto_plan: Option<AutoPlan>,
}
Expand description

GET /v1/sizing: what the job history says each configured profile needs.

Fields§

§since: u64

The start of the history read: since, or the first runner recorded after it.

§until: u64

When it was computed.

§margin: u32

The percent added to a sampled peak, [sizing] margin: peaks are sampled every sample_interval seconds, so a shorter spike between two samples goes unseen.

§sample_interval: u64

Seconds between two samples of a job’s container.

§min_jobs: u32

The fewest jobs a profile or job needs before its percentiles become advice, [sizing] min_jobs.

§memory_max: Option<u64>

The slice’s MemoryMax; None when it is unlimited.

§admission: AdmissionPolicy

[host] admission, which the advice budgets MemoryMax by.

§profiles: Vec<ProfileSizing>

Every configured profile, by name.

§auto: bool

Whether the daemon applies advice itself, [sizing] auto.

§changes: Vec<SizingChange>

The changes auto sizing made since since, oldest first.

§auto_plan: Option<AutoPlan>

Under auto sizing, what it does next and when. None while it is off, and from a daemon before it said.

Implementations§

Source§

impl Sizing

Source

pub fn need(&self, peaks: &Peaks, advice: Advice) -> Need

What peaks need: the advice’s memory, or with too few jobs for advice, what it would size for.

Source

pub fn method_line(&self) -> String

How the advice is made, as every client explains it: peaks are sampled every 2 s, so a shorter spike goes unseen: advice sizes for the largest + 15%, at least 1G for page cache, rounded up to 256M, once a profile ran 10 jobs.

Source

pub fn method_parts(&self) -> Vec<String>

Sizing::method_line in short parts for a heading, the sampling caveat first: peaks sampled every 2 s, +15%, at least 1G, in 256M steps and advice after 10 jobs.

Source

pub fn covered(&self) -> u64

The history it was computed from: since to when it was computed, however long ago that was.

Source

pub fn doctor_check(&self) -> Check

Doctor’s check of it: a warning while a profile needs more memory than its cap, else the profiles whose advice changes something, or that all fit.

Source§

impl Sizing

Source

pub fn advice_line(&self, profile: &ProfileSizing) -> String

One line on what to do with a profile and why, as runnerctl sizing, the dashboard and runnerd doctor say it, such as lower memory to 2.5G from 7G, its largest peak + 15%; 5 slots fit in the same 14G. Under measured admission, when jobs wanted more slots, it adds that slots is not bought with caps there, or with auto sizing on, that it adds them.

Trait Implementations§

Source§

impl Clone for Sizing

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Sizing

Source§

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

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

impl<'de> Deserialize<'de> for Sizing

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Sizing

Source§

impl PartialEq for Sizing

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Sizing

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Sizing

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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