| |
Scheduler
Page history
last edited
by widefox 8 years, 10 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.