IO


 

 

Kernel Comparison: Linux (2.6.28) versus Windows (Vista SP1)

 

 

I/O

I/O General

I/O Management (general) Linux Windows
centred around inode file object
layered I/O model N Y
generic file descriptors (pipes and network connections that act like files) Y N
wake-one socket semantics (#512, #512) Y Y

 

Default I/O Scheduler

I/O Scheduler (default) Linux Windows
default discipline CFQ SCAN?
i.e. I/O priority based Y Y

 

Alternative I/O Scheduler

I/O Scheduler (alternative) Linux Windows
alternative discipline available Y N
alternative discipline selected at boot Y N
alternative discipline selected at runtime Y N
alternative discipline assignable per device Y N
I/O Scheduler (available disciplines)
anticipatory Y N
Completely Fair Queuing (CFQ) Y N
Deadline Y N
Elevator algorithm (SCAN) N Y?
Elevator algorithm variants (C-SCAN, LOOK, C-LOOK, FSCAN) N N
First In, First Out (FIFO) (or First Come First Served (FCFS)) N N
Highest Response Ratio Next (HRRN) N N
Last In, First Out (LIFO) N N
N-Step-SCAN N N
Random Scheduling (RSS) N N
requested merge FIFO (NOOP) Y N
Shortest Seek / Service Time First (SSTF) (shortest seek first) N N
Stochastic Fair Queuing (SFQ) N N

 

I/O Performance

I/O Management (performance) Linux Windows
zero-copy file sending Y Y

 

Vectored I/O

I/O Management (vectored) Linux Windows
Scatter/Gather DMA Y Y
vectored I/O support (#501, #502) Y Y
asynchronous vectored I/O support (#501, #502) Y Y

 

Asynchronous I/O

I/O Management (asynchronous) Linux Windows
asynchronous I/O support (#502, #502) Y Y
asynchronous I/O support - general system (#512, #512) N Y
asynchronous I/O support - system (#512, #512) AIO (or epoll) completion ports
asynchronous I/O cancellation Y Y

 

I/O Priority

I/O Priority Linux Windows
I/O priority based on thread priority - default Y Y
I/O priority - user control (read, write) (#43, #44) Y Y

 

I/O Priority - read

I/O Priority - read Linux Windows
I/O priority (#43, #44) Y Y
I/O timeslice or packet (#43, #44) timeslice packet
I/O bandwidth reservation (#43, #44) N Y
I/O priority - scheduling class levels - realtime (IOPRIO_CLASS_RT, -) (#43, #44) 8 ("0-7") 0
I/O priority - scheduling class levels - best effort (IOPRIO_CLASS_BE, default) (#43, #44) 8 ("0-7") 5 (4 used) (5 "Critical",- "High",3 "Normal",2 "Low",1 "Very low")
I/O priority - scheduling class levels - idle (IOPRIO_CLASS_IDLE, -) (#43, #44) 1 0
I/O priority - best effort - default "0" 3 ("Normal")

 

I/O Priority - write

I/O Priority - write Linux Windows
I/O priority (#43, #44) N Y
I/O timeslice or packet (#43, #44) timeslice packet
I/O bandwidth reservation (#43, #44) N Y
I/O priority - scheduling class levels - realtime (IOPRIO_CLASS_RT, -) (#43, #44) 8 (0 used) ("0-7") 0
I/O priority - scheduling class levels - best effort (IOPRIO_CLASS_BE, default) (#43, #44) 8 (0 used) ("0-7") 5 (4 used) (5 "Critical",4 "High" (not used),3 "Normal",2 "Low",1 "Very low")
I/O priority - scheduling class levels - idle (IOPRIO_CLASS_IDLE, -) (#43, #44) 1 (0 used) 0
I/O priority - best effort - default "0" 3 ("Normal")

 

 

<-Prev|Next->

 

Johnathon Weare © Johnny Weare 2009