Re: [PATCH 1/3] cfq-iosched: Improve time slice charging logic

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Vivek Goyal
Date: Monday, July 19, 2010 - 3:05 pm

On Mon, Jul 19, 2010 at 11:19:21PM +0200, Corrado Zoccolo wrote:

I am always wondering that in practice, what is the difference between
slice_idle=0 and rotational=0. I think the only difference is NCQ queue
detection. slice_idle=0 will always not idle, irrespective of the fact
whether queue is NCQ or not and rotational=0 will disable idling only
if device supports NCQ.

If that's the case, then we can probably internally switch the
slice_idle=0 once we have detected that an SSD supports NCQ and we can
get rid of this confusion.

Well looking more closely, there seems to be one more difference. With
SSD, and NCQ, we still idle on sync-noidle tree. This seemingly, will
provide us protection from WRITES. Not sure if this is true for good
SSDs also. I am assuming they should be giving priority to reads and
balancing things out. cfq_should_idle() is interesting though, that
we disable idling for sync-idle tree. So we idle on sync-noidle tree
but do not provide any protection to sequential readers. Anyway, that's
a minor detail....

In fact we can switch to IOPS model for NCQ SSD also.


Yes this is fixable.


This is the biggest problem. How to get right estimate of time when
a request queue can have requests from multiple processes at the same
time.


Agreed that IOPS is a simplified model.


Once we start dispatching requests from multiple cfq queues at a time,
notion of sequentiality is lost (at least on the device).


size is an interesting factor though. Again we can only come up with
some kind of approximation only as this cost will vary from device to
device

I think we can begin with something simple (IOPS) and if it works fine,
then we can take into account additional factors (especially size of
request) and factor that into the cost.

The only thing to keep in mind is that group scheduling will benefit
most from it. The notion of ioprio is fairly weak currently in CFQ
(especially on SSD and with slice_idle=0).

Thanks
Vivek

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC PATCH] cfq-iosched: Implement group idle V2, Vivek Goyal, (Mon Jul 19, 10:20 am)
Re: [PATCH 1/3] cfq-iosched: Improve time slice charging logic, Vivek Goyal, (Mon Jul 19, 3:05 pm)