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.



Reply via email to