joel.bertr...@systella.fr (=?UTF-8?Q?BERTRAND_Jo=c3=abl?=) writes: > fcfs seems to be a trivial FIFO queue. A have found few informations >about priocscan strategy. But what is the difference between disksort >and priocscan ? And between priocscan and readprio ? Does prioscan works >in read and write and readprio only in read mode ?
fcfs is a simple FIFO disksort sorts requests by block address The queue is executed in ascending order (one-way). When it reaches the end, it continues at the start of the queue. readprio has two priorities 1. reads are queued in FIFO order 2. writes are sorted by block address like disksort. For reads there is a burst limit of 48 I/O request, then it will allow up to 16 write requests. priocscan has three priorities 1. "time critical" 2. "time limited" (the default) 3. "noncritical" the priority is chosen by the client. E.g. the filesystem will put synchronous metadata operations into "time critical", most other I/O into "time limited" and asynchronous data writes into "noncritical". Again each priority has a burst limit so that a queue cannot starve a lower priority queue. - "time critical" allows a burst of 4 I/Os, - "time limited" allows a burst of 16 I/Os, - "noncritical" allows a burst of 64 I/Os. For stacked device drivers (like dk,cgd,ccd or vnd), it's usually better to use simple FIFO on the upper layers and to choose the buffer strategy only for the lowest layer that actually talks to hardware. On the other hand, the upper layers rarely queue anything, so the difference is just how much CPU time is wasted in processing an expensive strategy on multiple layers. Modern disks queue many requests themselves, the strategy used by the kernel has little meaning then. Just like above, the stragey done by the lowest layer counts.