Re: BFQ: simple elevator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 23, 2013 at 7:38 AM, Matthias Brugger
<matthias.bgg@xxxxxxxxx> wrote:
> On 03/20/2013 10:41 PM, Raymond Jennings wrote:
>>
>> On Wed, Mar 20, 2013 at 2:03 PM,  <Valdis.Kletnieks@xxxxxx> wrote:
>>>
>>> On Thu, 21 Mar 2013 02:24:23 +0700, Mulyadi Santosa said:
>>>
>>>> pardon me for any possible sillyness, but what happen if there are
>>>> incoming I/O operation at very nearby sectors (or perhaps at the same
>>>> sector?)? I suppose, the elevator will prioritize them first over the
>>>> rest? (i.e starving will happen...)
>>
>> This is actually why I proposed to enforce forward progress by only
>> looking for further requests in one direction at a time.
>>
>> Suppose you have requests at sectors 1, 4, 5, and 6
>>
>> You dispatch sectors 1, 4, and 5, leaving the head parked at 5 and the
>> direction as ascending.
>>
>> But suddenly, just before you get a chance to dispatch for sector 6,
>> sector 4 gets busy again.
>>
>> I'm not proposing going back to sector 4.  It's behind us and (as you
>> indicated) we could starve sector 6 indefinitely.
>>
>> So instead, because sector 4 is on the wrong side of our present head
>> position, it is ignored and we keep marching forward, and then we hit
>> sector 6 and dispatch it.
>>
>> Once we hit sector 6 and dispatch it, we do a u-turn and start
>> descending.  That's when we pick up sector 4 again.
>>
>> When we're going up, we ignore what's below us, and when we're going
>> down we ignore what is above us.
>>
>> We only switch directions when there's nothing in front of us the way
>> we were going.  In theory, given that disk capacity is itself finite,
>> so too is the amount of time one has to wait before getting reached by
>> the elevator.
>>
>> Anyway, does this clarification answer your concerns about starvation?
>>
>>> And this, my friends, is why elevators aren't as easy to do as the
>>> average
>>> undergrad might hope - it's a lot harder to balance fairness and
>>> throughput
>>> across all the corner cases than you might think.  It gets really fun
>>> when you have (for example) a 'find' command moving the heads all over
>>> the disk while another process is trying to do large amounts of streaming
>>> I/O.  And then you'll get some idiot process that insists on doing the
>>> occasional fsync() or syncfs() call.  Yes, it's almost always *all*
>>> corner cases, it's very rare (unless you're an embedded system like a
>>> Tivo)
>>> that all your I/O is one flavor that is easily handled by a simple
>>> elevator.
>>
>> In my case I'm just concerned with raw total system throughput.
>>
>> I called it "BFQ" for a reason.
>
>
> It sounds to me like the LOOK disk scheduling algorithm from 1970? Or do I
> miss something?

Your guess is as good as mine.  I've never even heard of it.

My description was very much made up on the fly.

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux