pub enum SchedulerProfile {
Default,
RealtimeFifo {
priority: u8,
},
RealtimeRoundRobin {
priority: u8,
},
Deadline {
runtime_ns: u64,
deadline_ns: u64,
period_ns: u64,
},
}Expand description
Scheduler-Policy. Linux-spezifisch (siehe sched(7)).
Variants§
Default
Linux SCHED_OTHER (CFS) — der Default fuer alle Threads.
RealtimeFifo
Linux SCHED_FIFO — strikt prioritaets-basiert, kein Quantum.
priority ist der Wert von sched_priority (1..=99, hoeher
schlaegt niedriger; 0 ist nicht erlaubt fuer FIFO/RR mit
nicht-leeren Queues, wird vom Kernel akzeptiert aber als
SCHED_OTHER-Fallback behandelt).
Privilegien: CAP_SYS_NICE ab Priority > 0; je nach
RLIMIT_RTPRIO auch fuer Priority 0.
RealtimeRoundRobin
Linux SCHED_RR — wie FIFO, aber mit Round-Robin-Quantum
pro Priority-Level.
Deadline
Linux SCHED_DEADLINE (CBS+EDF) — harte Garantien per
(runtime, deadline, period)-Triple in Nanosekunden.
Spec siehe sched_setattr(2). Bedingungen:
runtime <= deadline <= period- Kernel berechnet eine Bandbreitenreservierung. EBUSY wenn die globale Reservierung das Limit (default 95%) sprengt.
Privilegien: immer CAP_SYS_NICE. Forks duerfen nicht
vererben (sonst EBUSY).
Implementations§
Source§impl SchedulerProfile
impl SchedulerProfile
Sourcepub fn apply_to_current_thread(&self) -> Result<()>
pub fn apply_to_current_thread(&self) -> Result<()>
Wendet das Profil auf den aufrufenden Thread an.
§Errors
EPERM(PermissionDenied) wenn die Privilegien fehlen.EINVAL(InvalidInput) bei inkonsistenten Deadline-Werten.Unsupportedauf Nicht-Linux-Targets.
Trait Implementations§
Source§impl Clone for SchedulerProfile
impl Clone for SchedulerProfile
Source§fn clone(&self) -> SchedulerProfile
fn clone(&self) -> SchedulerProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SchedulerProfile
impl Debug for SchedulerProfile
Source§impl PartialEq for SchedulerProfile
impl PartialEq for SchedulerProfile
Source§fn eq(&self, other: &SchedulerProfile) -> bool
fn eq(&self, other: &SchedulerProfile) -> bool
self and other values to be equal, and is used by ==.