Skip to main content

HostResourceLimits

Struct HostResourceLimits 

Source
pub struct HostResourceLimits {
    pub max_processes: u64,
    pub max_open_files: u64,
    pub max_file_size_bytes: u64,
    pub cpu_seconds: Option<u64>,
    pub memory_bytes: u64,
    pub cgroup_memory_bytes: u64,
    pub cgroup_pids_max: u64,
    pub cgroup_cpu_percent: Option<u32>,
    pub cgroup_io_bytes_per_sec: u64,
    pub workdir_max_bytes: u64,
}
Expand description

Fully-resolved host-process limits for one session: the manifest’s capabilities.resources block with every omitted field replaced by its DEFAULT_*, except the two CPU fields, which stay None when omitted.

Fields§

§max_processes: u64

RLIMIT_NPROC headroom above the uid’s count at each spawn, applied only to a spawn with no cgroup scope ([NprocBound::Headroom]) and counted in the unit that uid’s kernel enforces against ([uid_task_count]). A spawn that joins a scope is bounded by cgroup_pids_max instead and ignores this field.

§max_open_files: u64

RLIMIT_NOFILE hard ceiling.

§max_file_size_bytes: u64

RLIMIT_FSIZE hard ceiling, in bytes.

§cpu_seconds: Option<u64>

CPU time, in CPU-seconds, at which RLIMIT_CPU sends a spawned subprocess SIGXCPU, with SIGKILL one second later ([cpu_rlimit_slots]). None sets no RLIMIT_CPU: a subprocess keeps the one this process inherited.

§memory_bytes: u64

RLIMIT_AS on Linux, RLIMIT_DATA on macOS (which has no RLIMIT_AS), in bytes.

§cgroup_memory_bytes: u64

cgroup v2 memory.max, in bytes. Linux only.

§cgroup_pids_max: u64

cgroup v2 pids.max. Linux only.

§cgroup_cpu_percent: Option<u32>

cgroup v2 cpu.max quota as a percentage of one core. Linux only. None writes no cpu.max, so the scope keeps the kernel’s max.

§cgroup_io_bytes_per_sec: u64

cgroup v2 io.max rbps+wbps on the workdir’s backing device. Linux only, best-effort.

§workdir_max_bytes: u64

Ceiling on total workdir size, in bytes. Every platform.

Implementations§

Source§

impl HostResourceLimits

Source

pub fn resolve(declared: Option<&ResourceCapabilities>) -> Self

Resolve a manifest capabilities.resources block, substituting the default for each field the manifest left out (and for the whole block when it is absent). The CPU fields have no default and stay None when left out.

Trait Implementations§

Source§

impl Clone for HostResourceLimits

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 Copy for HostResourceLimits

Source§

impl Debug for HostResourceLimits

Source§

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

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

impl Default for HostResourceLimits

Source§

fn default() -> Self

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

impl Eq for HostResourceLimits

Source§

impl PartialEq for HostResourceLimits

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 StructuralPartialEq for HostResourceLimits

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

The type of the none-equivalent value that NoneValue::null_value produces.
Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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

Source§

type Output = T

Should always be Self
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