pub enum NormalThreadSchedulePolicy {
Idle,
Batch,
Other,
}Expand description
Normal (non-realtime) schedule policies
For these schedule policies, niceness
is used.
Variants§
Idle
For running very low priority background jobs.
(Since Linux 2.6.23.) SCHED_IDLE can be used only at static priority 0;
the process nice value has no influence for this policy.
This policy is intended for running jobs at extremely low priority (lower even than a +19 nice value with the SCHED_OTHER or SCHED_BATCH policies).
Batch
For “batch” style execution of processes.
(Since Linux 2.6.16.) SCHED_BATCH can be used only at static priority 0.
This policy is similar to SCHED_OTHER in that it schedules the thread
according to its dynamic priority (based on the nice value). The difference is
that this policy will cause the scheduler to always assume that the thread is
CPU-intensive. Consequently, the scheduler will apply a small scheduling penalty
with respect to wakeup behavior, so that this thread is mildly disfavored in scheduling decisions.
This policy is useful for workloads that are noninteractive, but do not want to lower their nice value, and for workloads that want a deterministic scheduling policy without interactivity causing extra preemptions (between the workload’s tasks).
Other
The standard round-robin time-sharing policy, also sometimes referred to as “Normal”.
SCHED_OTHER can be used at only static priority 0 (i.e., threads under real-time policies
always have priority over SCHED_OTHER processes). SCHED_OTHER is the standard Linux
time-sharing scheduler that is intended for all threads that do not require the special
real-time mechanisms.
The thread to run is chosen from the static priority 0 list based on a dynamic priority that is determined only inside this list. The dynamic priority is based on the nice value (see below) and is increased for each time quantum the thread is ready to run, but denied to run by the scheduler.
This ensures fair progress among all SCHED_OTHER threads.
In the Linux kernel source code, the SCHED_OTHER policy is actually named SCHED_NORMAL.
Trait Implementations§
source§impl Clone for NormalThreadSchedulePolicy
impl Clone for NormalThreadSchedulePolicy
source§fn clone(&self) -> NormalThreadSchedulePolicy
fn clone(&self) -> NormalThreadSchedulePolicy
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for NormalThreadSchedulePolicy
impl Debug for NormalThreadSchedulePolicy
source§impl Hash for NormalThreadSchedulePolicy
impl Hash for NormalThreadSchedulePolicy
source§impl Ord for NormalThreadSchedulePolicy
impl Ord for NormalThreadSchedulePolicy
source§fn cmp(&self, other: &NormalThreadSchedulePolicy) -> Ordering
fn cmp(&self, other: &NormalThreadSchedulePolicy) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for NormalThreadSchedulePolicy
impl PartialEq for NormalThreadSchedulePolicy
source§fn eq(&self, other: &NormalThreadSchedulePolicy) -> bool
fn eq(&self, other: &NormalThreadSchedulePolicy) -> bool
self and other values to be equal, and is used
by ==.source§impl PartialOrd for NormalThreadSchedulePolicy
impl PartialOrd for NormalThreadSchedulePolicy
source§fn partial_cmp(&self, other: &NormalThreadSchedulePolicy) -> Option<Ordering>
fn partial_cmp(&self, other: &NormalThreadSchedulePolicy) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read more