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 PartialOrd for NormalThreadSchedulePolicy
impl PartialOrd for NormalThreadSchedulePolicy
impl Copy for NormalThreadSchedulePolicy
impl Eq for NormalThreadSchedulePolicy
impl StructuralPartialEq for NormalThreadSchedulePolicy
Auto Trait Implementations§
impl Freeze for NormalThreadSchedulePolicy
impl RefUnwindSafe for NormalThreadSchedulePolicy
impl Send for NormalThreadSchedulePolicy
impl Sync for NormalThreadSchedulePolicy
impl Unpin for NormalThreadSchedulePolicy
impl UnwindSafe for NormalThreadSchedulePolicy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)