cfq-iosched: Do group share accounting in IOPS when slice_idle=0
authorVivek Goyal <vgoyal@redhat.com>
Mon, 23 Aug 2010 10:23:53 +0000 (12:23 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Mon, 23 Aug 2010 10:23:53 +0000 (12:23 +0200)
commit02b35081fc98f681411586d3acf9eaad8b8f6e07
tree66cc8c375205a5b032859cdcb0b9b82f04f97443
parentb6508c1618e7aab085f191efb41b7b019a94ea38
cfq-iosched: Do group share accounting in IOPS when slice_idle=0

o Implement another CFQ mode where we charge group in terms of number
  of requests dispatched instead of measuring the time. Measuring in terms
  of time is not possible when we are driving deeper queue depths and there
  are requests from multiple cfq queues in the request queue.

o This mode currently gets activated if one sets slice_idle=0 and associated
  disk supports NCQ. Again the idea is that on an NCQ disk with idling disabled
  most of the queues will dispatch 1 or more requests and then cfq queue
  expiry happens and we don't have a way to measure time. So start providing
  fairness in terms of IOPS.

o Currently IOPS mode works only with cfq group scheduling. CFQ is following
  different scheduling algorithms for queue and group scheduling. These IOPS
  stats are used only for group scheduling hence in non-croup mode nothing
  should change.

o For CFQ group scheduling one can disable slice idling so that we don't idle
  on queue and drive deeper request queue depths (achieving better throughput),
  at the same time group idle is enabled so one should get service
  differentiation among groups.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
block/cfq-iosched.c