Scheduler (also see Process Management) | Linux | Windows |
basic scheduling unit | task | thread |
Scheduler (features) | Linux | Windows |
reentrant | Y | Y |
preemptible user mode | Y | Y |
preemptible kernel mode | Y | Y |
Scheduler (default) - also see alternative | Linux | Windows |
default discipline | RR, multilevel feedback queue | RR, multilevel queue + boost |
O(1) scheduler | Y | Y |
priority based | Y | Y |
Real-Time class can be %CPU capped | N (default)
Y (RSDL) |
Y (MMCSS) |
pre-sorted queues | Y | Y |
Scheduler (alternative) | Linux | Windows |
alternative disciplines available | Y | N |
boot time selection | N | N |
Scheduler (available disciplines) | ||
Borrowed-Virtual-Time (BVT) | N
Y (patch) |
N |
Completely Fair Scheduler (CFS) | N
Y (patch) |
N |
Deadline-Monotonic Scheduling (DMS) | N
Y (patch) |
N |
Deficit Round Robin (DRR) | N
Y (patch) |
N |
Distributed Weighted Round Robin (DWRR) | N
Y (patch) |
N |
Earliest Deadline First (EDF) | N
Y (patch) |
N |
Elastic Round Robin (ERR) | N | N |
fair-share (FSS) | N
Y (patch) |
N |
First In, First Out (FIFO) (or First Come First Served (FCFS)) | Y | Y |
genetic anticipatory | N
Y (patch) |
N |
Highest Response Ratio Next (HRRN or HRN) | N | N |
Last In, First Out (LIFO) (or Last Come First Served LCFS) | N | N |
Least Slack Time (LST) | N | N |
lottery | N
Y (patch) |
N |
multilevel feedback queue Round Robin | Y | N |
multilevel queue + boost Round Robin | N | Y |
proportional share | N
Y (patch) |
N |
Random Scheduling (RSS) | N | N |
Rate Monotonic Scheduling (RMS) | N
Y (patch) |
N |
Really Fair Scheduler (RFS) | N
Y (patch) |
N |
Rotating Staircase Deadline (RSDL) | N
Y (patch) |
N |
Round-Robin (RR) | Y | N |
Shortest Job Next (SJN) (or Shortest Process Next SPN) | N | N |
Shortest Remaining Time (SRT) | N | N |
Staircase (e.g. Cpusched, Nicksched, Zaphod, Spa_ws, EBS) | N
Y (patch) |
N |
Staircase Deadline (SD) | N
Y (patch) |
N |
Statistical Rate Monotonic Scheduling (SRMS) | N
Y (patch) |
N |
two-level | N
Y (patch) |
N |
Scheduler (classes) | Linux | Windows |
scheduling classes | 4 | 2 |
1. Normal (dynamic) priorities | 39 "100-139" | 15 "1-15" |
2. Real-Time FIFO (fixed) priorities | 100 "0-99" | 16 "16-31" |
3. Real-Time Round Robin (fixed) priorities | 100 "0-99" | 0 |
4. Batch (IDLEPRIO) (fixed) | 39 "100-139" | 0 |
Normal (dynamic) priority - default | "120" | "7" (foreground)
"9" (background) |
scheduling priorities ranked most favoured->least | Low->High | High->Low |
Scheduler (priority dynamism) | Linux | Windows |
priority dynamism - raising priority | process does not use up timeslice23 | on wakeups |
priority dynamism - lowering priority | process uses up timeslice23 | never |
Scheduler (timeslice dynamism) | ||
timeslice vary - automatic (entire range - priority, interactivity) | Y | N |
timeslice vary - manual (user setting, window boost) | N | Y |
timeslice vary - automatic (window boost) | N | Y |
Scheduler (prioritising tweaks) | ||
priority interactive boost/CPU bound cut | -5 to +5
+5 (batch) |
- |
focused window process boost | N | Y' |
focused window process boost - timeslice change | - | 3x' |
i.e. Interactive Process boost | Y | Y |
Scheduler (timeslice) | Linux | Windows |
timeslice configurable default | Y (compiled) | Y' |
timeslice configurable default range | unlimited (compiled) | "Server" or "Client"' |
timeslice runtime configurable default | N (compiled) | Y' |
Scheduler - Uniprocessor (timeslice) | Linux | Windows |
timeslice - range | 10ms-200ms' | 10ms-120ms (Client)
120ms (Server)' |
timeslice - default | 100ms' | 20ms, 40ms, 60ms (Client)
120ms (Server)' |
i.e. process minimum CPU17 | 4.8%
0% (Batch) |
7.7% |
Scheduler - Multiprocessor (timeslice) | Linux | Windows |
timeslice - range | 10ms-200ms' | 15ms-180ms (Client)
180ms (Server') |
timeslice - default | 100ms' | 30ms, 60ms, 90ms (Client)
180ms (Server)' |
Scheduling (Multiprocessor scalability) | Linux | Windows |
queue per processor | Y | Y |
Scheduler (Multiprocessor) | ||
Gang scheduling | N
Y (partial Cell) |
N |
'take' scheduling | N | N |
CPU Partitioning | ||
cpusets | Y | N |
Scheduler - Multiprocessor/Core (affinity) | Linux | Windows |
scheduler SMP processor affinity | Y | Y |
scheduler NUMA node affinity | Y | Y |
scheduler Core affinity | Y | Y |
scheduler Hyperthread (SMT) affinity | Y | Y |
Scheduler - Multiprocessor/Core (priority) | ||
scheduler favours physical CPU over Hyperthread | Y | Y |
scheduler favours physical CPU over Multicore | Y | Y |
Scheduler - Multiprocessor/Core (load balancing) | ||
scheduler load balancing - initial | Y | Y |
scheduler load balancing - re-balance | Y | N |
scheduler load balancing - priority based (smpnice) | Y | N |
scheduler load balancing period | 200ms' | - |
Scheduler (performance) | Linux | Windows |
scheduling latency (average) | 0.009mS' | 2mS10' |
scheduling latency (worse) | 0.3mS' | 16mS10' |
<-Prev|Next->
Johnathon Weare © Johnny Weare 2009