All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: Bill Davidsen <davidsen@tmr.com>
Cc: "Chen, Kenneth W" <kenneth.w.chen@intel.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [patch] new fifo I/O elevator that really does nothing at all
Date: Wed, 30 Mar 2005 09:13:57 +0200	[thread overview]
Message-ID: <20050330071357.GB16636@suse.de> (raw)
In-Reply-To: <4249D4C7.90808@tmr.com>

On Tue, Mar 29 2005, Bill Davidsen wrote:
> Jens Axboe wrote:
> >On Mon, Mar 28 2005, Chen, Kenneth W wrote:
> >
> >>The noop elevator is still too fat for db transaction processing
> >>workload.  Since the db application already merged all blocks before
> >>sending it down, the I/O presented to the elevator are actually not
> >>merge-able anymore. Since I/O are also random, we don't want to sort
> >>them either.  However the noop elevator is still doing a linear search
> >>on the entire list of requests in the queue.  A noop elevator after
> >>all isn't really noop.
> >>
> >>We are proposing a true no-op elevator algorithm, no merge, no
> >>nothing. Just do first in and first out list management for the I/O
> >>request.  The best name I can come up with is "FIFO".  I also piggy
> >>backed the code onto noop-iosched.c.  I can easily pull those code
> >>into a separate file if people object.  Though, I hope Jens is OK with
> >>it.
> >
> >
> >It's not quite ok, because you don't honor the insertion point in
> >fifo_add_request. The only 'fat' part of the noop io scheduler is the
> >merge stuff, the original plan was to move that to a hash table lookup
> >instead like the other io schedulers do. So I would suggest just
> >changing noop to hash the request on the end point for back merges and
> >forget about front merges, since they are rare anyways. Hmm actually,
> >the last merge hint should catch most of the merges at almost zero cost.
> 
> Making the noop faster is clearly a good thing, but some database 
> software may depend on transaction order as provided by a true fifo 
> process. It would be nice to have both.

Just look at the code. It does FIFO for any request that _isn't_
specified as ELEVATOR_INSERT_FRONT - which means any fs request, or any
plain pc request. There is no specific reordering going on.

Drivers expect to be able to add a request back at the head, for eg
retrying it after a QUEUE_BUSY or similar condition.

-- 
Jens Axboe


  reply	other threads:[~2005-03-30  7:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-29  1:48 [patch] new fifo I/O elevator that really does nothing at all Chen, Kenneth W
2005-03-29  8:06 ` Jens Axboe
2005-03-29 18:50   ` Chen, Kenneth W
2005-03-29 20:04     ` Jens Axboe
2005-03-29 20:07       ` Chen, Kenneth W
2005-04-05 14:54         ` Jens Axboe
2005-04-06  0:12           ` Chen, Kenneth W
2005-03-29 22:20   ` Bill Davidsen
2005-03-30  7:13     ` Jens Axboe [this message]
     [not found] <7A4826DE8867D411BAB8009027AE9EB91DB47626@scsmsx401.amr.corp.intel.com>
2005-04-12 17:58 ` Chen, Kenneth W
2005-04-13  7:45   ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050330071357.GB16636@suse.de \
    --to=axboe@suse.de \
    --cc=davidsen@tmr.com \
    --cc=kenneth.w.chen@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.