|
Scheduler
Page history
last edited
by widefox 14 years, 6 months ago
Kernel Comparison: Linux (2.6.28) versus Windows (Vista SP1)

Scheduler
Unit
Scheduler (also see Process Management) |
Linux |
Windows |
basic scheduling unit |
task |
thread |
Features
Scheduler (features) |
Linux |
Windows |
reentrant |
Y |
Y |
preemptible user mode |
Y |
Y |
preemptible kernel mode |
Y |
Y |
Default
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 |
Alternative
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 |
Classes
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 |
Details
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 |
Timeslice
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' |
Timeslice - Uniprocessor
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% |
Timeslice - Multiprocessor
Scheduler - Multiprocessor (timeslice) |
Linux |
Windows |
timeslice - range |
10ms-200ms' |
15ms-180ms (Client)
180ms (Server')
|
timeslice - default |
100ms' |
30ms, 60ms, 90ms (Client)
180ms (Server)'
|
Multiprocessor Scheduling
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 |
Details - Multiprocessor
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' |
- |
Performance
Scheduler (performance) |
Linux |
Windows |
scheduling latency (average) |
0.009mS' |
2mS10' |
scheduling latency (worse) |
0.3mS' |
16mS10' |
<-Prev|Next->
Johnathon Weare © Johnny Weare 2009
Scheduler
|
Tip: To turn text into a link, highlight the text, then click on a page or file from the list above.
|
|
|
Comments (0)
You don't have permission to comment on this page.