linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Matthew Wilcox <matthew@wil.cx>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
	linux-ide@vger.kernel.org, linux-scsi@vger.kernel.org
Subject: Re: libata / scsi separation
Date: Wed, 10 Dec 2008 10:54:25 +0900	[thread overview]
Message-ID: <493F2151.6010702@gmail.com> (raw)
In-Reply-To: <20081209222113.GU25548@parisc-linux.org>

(cc'ing Jens)
Hello,

Matthew Wilcox wrote:
> On Sun, Dec 07, 2008 at 09:04:58AM -0600, James Bottomley wrote:
>> Originally I'd been promised that libata would be out of SCSI within a
>> year (that was when it went in).  The slight problem is that having all
>> the features it needed, SCSI became a very comfortable host. Getting
>> libata out of SCSI was also made difficult by the fact that few people
>> cared enough to help.  The only significant external problem is the size
>> of the stack and the slight performance penalty for SATA disks going
>> over SAT.  Unfortunately for the latter, slight turns out to be pretty
>> unmeasurable, so the only hope became people who cared about
>> footprint ... and there don't seem to be any of those.
> 
> The performance penalty is certainly measurable.  It's about 1 microsecond
> per request extra to go from userspace -> scsi -> libata -> driver
> than it is to go from userspace -> scsi -> driver.  If you issue 400
> commands per second (as you might do with a 15k RPM SCSI drive), that's
> 400 microseconds.  If you issue 10,000 commands per second (as you might
> do with an SSD), that's 10ms of additional CPU time spent in the kernel
> per second (or 1%).
>
> So it's insignificant overhead ... unless you have an SSD.  I have asked
> Tejun if there's anything he wants help with to move the libata-scsi
> separation along, but he's not come up with anything yet.

I'm working on it and will keep one or two patchsets in flight toward
Jens' direction (one is already in Jens' mailbox, I'm working on
another one and yet another got nacked and waiting for update).
Making libata independent of SCSI basically means move non-SCSI
specific parts of SCSI midlayer into block layer and make libata a
direct customer of block layer once everything is in place.  It's a
slow process (for me, especially with upcoming SLES11 release) but
we're getting there bit by bit.

It's kind of difficult for me to say which direction we should go at
this point as the decision doesn't really fall on me and I doubt
anyone has complete picture of it either, so anything which moves
stuff from SCSI midlayer to block layer will be helpful like the
recent timeout changes.

> Right now, I'm investigating a technique that may significantly
> increase the number of requests we can do per second without
> rewriting the whole thing.

Is the command issue rate really the bottleneck?  It seem a bit
unlikely unless you're issuing lots of really small IOs but then again
those new SSDs are pretty fast.

> (OK, I haven't measured the overhead of the *SCSI* layer, I've measured
> the overhead of the *libata* layer.  I think the point here is that you
> can't measure the difference at a macro level unless you're sending a
> lot of commands.)

How did you measure it?  The issue path isn't thick at all although
command allocation logic there is a bit brain damaged and should use
block layer tag management.  All it does is - allocate qc, interpret
SCSI command to ATA command and write it to qc, map dma and build dma
table and pass it over to the low level issue function.  The only
extra step there is the translation part and I don't think that can
take a full microsecond on modern processors.

Thanks.

-- 
tejun

  parent reply	other threads:[~2008-12-10  1:54 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-03  1:38 [PATCH] remove ide-scsi FUJITA Tomonori
2008-12-03 10:06 ` Christoph Hellwig
2008-12-03 13:31   ` Willem Riede
2008-12-03 13:55     ` Matthew Wilcox
2008-12-03 14:02       ` Alan Cox
2008-12-03 15:09   ` James Bottomley
2008-12-06  6:12     ` Pete Zaitcev
2008-12-06 14:06       ` Bartlomiej Zolnierkiewicz
2008-12-06 14:51     ` Bartlomiej Zolnierkiewicz
2008-12-06 15:06       ` Alan Cox
2008-12-06 16:29         ` Bartlomiej Zolnierkiewicz
2008-12-06 15:25       ` Willem Riede
2008-12-06 15:59         ` Bartlomiej Zolnierkiewicz
2008-12-06 17:00       ` Dan Noé
2008-12-06 21:41         ` Bartlomiej Zolnierkiewicz
2008-12-06 22:24           ` Alan Cox
2008-12-06 22:52             ` Sergei Shtylyov
2008-12-06 23:02               ` Alan Cox
2008-12-06 23:19                 ` Sergei Shtylyov
2008-12-06 23:32                   ` Alan Cox
2008-12-07  0:08                     ` Sergei Shtylyov
2008-12-07 11:40                       ` Alan Cox
2008-12-07 14:46                         ` Sergei Shtylyov
2008-12-07 15:04                   ` James Bottomley
2008-12-07 15:21                     ` Sergei Shtylyov
2008-12-09 22:21                     ` libata / scsi separation Matthew Wilcox
2008-12-09 22:38                       ` James Bottomley
2008-12-10  3:37                         ` Matthew Wilcox
2008-12-10  1:54                       ` Tejun Heo [this message]
2008-12-10  2:29                         ` Grant Grundler
2008-12-10  2:47                           ` Tejun Heo
2008-12-10  3:23                             ` Grant Grundler
2008-12-10  3:44                               ` Tejun Heo
2008-12-10 15:24                                 ` Matthew Wilcox
2008-12-10 15:33                                   ` Tejun Heo
2008-12-10 16:01                                     ` Matthew Wilcox
2008-12-10 17:11                                     ` Grant Grundler
2008-12-10 17:21                                   ` Grant Grundler
2008-12-07  0:19                 ` [PATCH] remove ide-scsi Sergei Shtylyov
2008-12-07  9:59                   ` Sergei Shtylyov
2008-12-07 10:41                 ` Sergei Shtylyov
2008-12-09 21:41                 ` Matthew Wilcox
2008-12-10 17:46                   ` Sergei Shtylyov
2008-12-06 23:28               ` Jeff Garzik
2008-12-06 23:42                 ` Sergei Shtylyov
2008-12-06 23:48                   ` Jeff Garzik
2008-12-07  3:36                     ` Yinghai Lu
2008-12-07  4:17                       ` Jeff Garzik
2008-12-07  5:07                         ` Yinghai Lu
2008-12-07 11:00                           ` Sergei Shtylyov
2008-12-09 19:59                         ` Mark Lord
2008-12-09 20:07                           ` Jeff Garzik
2008-12-09 21:04                             ` James Bottomley
2008-12-06 23:45                 ` Bartlomiej Zolnierkiewicz
2008-12-06 23:50                   ` Jeff Garzik
2008-12-06 23:40             ` Bartlomiej Zolnierkiewicz
2008-12-06 23:51               ` Alan Cox
2008-12-07  0:56                 ` Bartlomiej Zolnierkiewicz
2008-12-07  1:14                   ` Alan Cox
2008-12-07 10:32                     ` Sergei Shtylyov
2008-12-06 23:51               ` Jeff Garzik
2008-12-06 22:33           ` Al Viro
2008-12-06 23:13             ` Bartlomiej Zolnierkiewicz
2008-12-06 23:17             ` Willem Riede
2008-12-07  0:09               ` Al Viro

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=493F2151.6010702@gmail.com \
    --to=htejun@gmail.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=matthew@wil.cx \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).