public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vladislav Bolkhovitin <vst@vlnb.net>
To: Bart Van Assche <bart.vanassche@gmail.com>
Cc: iscsitarget-devel@lists.sourceforge.net,
	scst-devel <scst-devel@lists.sourceforge.net>,
	linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
	stgt@vger.kernel.org
Subject: Re: [Scst-devel] ISCSI-SCST performance (with also IET and STGT	data)
Date: Tue, 31 Mar 2009 21:37:40 +0400	[thread overview]
Message-ID: <49D254E4.8050806@vlnb.net> (raw)
In-Reply-To: <e2e108260903301153x38e86097vd29c47507da2879f@mail.gmail.com>

Bart Van Assche, on 03/30/2009 10:53 PM wrote:
> On Mon, Mar 30, 2009 at 8:33 PM, Vladislav Bolkhovitin <vst@vlnb.net> wrote:
>> Bart Van Assche, on 03/30/2009 10:06 PM wrote:
>>> These are indeed interesting results. There are some aspects of the
>>> test setup I do not understand however:
>>> * All tests have been run with buffered I/O instead of direct I/O
>>> (iflag=direct / oflag=direct). My experience is that the results of
>>> tests with direct I/O are easier to reproduce (less variation between
>>> runs). So I have been wondering why the tests have been run with
>>> buffered I/O instead ?
>> Real applications use buffered I/O, hence it should be used in tests. It
>>  evaluates all the storage stack on both initiator and target as a whole.
>> The results are very reproducible, variation is about 10%.
> 
> Most applications do indeed use buffered I/O. Database software
> however often uses direct I/O. It might be interesting to publish
> performance results for both buffered I/O and direct I/O.

Yes, sure

> A quote from
> the paper "Asynchronous I/O Support in Linux 2.5" by Bhattacharya e.a.
> (Linux Symposium, Ottawa, 2003):
> 
> Direct I/O (raw and O_DIRECT) transfers data between a user buffer and
> a device without copying the data through the kernel’s buffer cache.
> This mechanism can boost performance if the data is unlikely to be
> used again in the short term (during a disk backup, for example), or
> for applications such as large database management systems that
> perform their own caching.

Please don't misread phrase "unlikely to be used again in the short 
term". If you have read-ahead, all your cached data is *likely* to be 
used "again" in the near future after they were read from storage, 
although only once in the first read by application. The same is true 
for write-back caching, where data written to the cache once for each 
command. Both read-ahead and write back are very important for good 
performance and O_DIRECT throws them away. All the modern HDDs have a 
memory buffer (cache) at least 2MB big on the cheapest ones. This cache 
is essential for performance, although how can it make any difference if 
the host computer has, say, 1000 times more memory?

Thus, to work effectively with O_DIRECT an application has to be very 
smart to workaround the lack of read-ahead and write back.

I personally consider O_DIRECT (as well as BLOCKIO) as nothing more than 
a workaround for possible flaws in the storage subsystem. If O_DIRECT 
works better, then in 99+% cases there is something in the storage 
subsystem, which should be fixed to perform better.

To be complete, there is one case where O_DIRECT and BLOCKIO have an 
advantage: both of them transfer data zero-copy. So they are good if 
your memory is too slow comparing to storage (InfiniBand case, for 
instance) and additional data copy hurts performance noticeably.

> Bart.
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> Scst-devel mailing list
> Scst-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scst-devel
> 


  reply	other threads:[~2009-03-31 17:37 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-30 17:33 ISCSI-SCST performance (with also IET and STGT data) Vladislav Bolkhovitin
     [not found] ` <e2e108260903301106y2b750c23kfab978567f3de3a0@mail.gmail.com>
2009-03-30 18:33   ` [Scst-devel] " Vladislav Bolkhovitin
2009-03-30 18:53     ` Bart Van Assche
2009-03-31 17:37       ` Vladislav Bolkhovitin [this message]
2009-03-31 18:43         ` [Iscsitarget-devel] [Scst-devel] ISCSI-SCST performance (withalso " Ross S. W. Walker
2009-04-01  6:29           ` Bart Van Assche
2009-04-01 12:20             ` Ross Walker
2009-04-01 20:23               ` James Bottomley
2009-04-02  7:38                 ` [Scst-devel] [Iscsitarget-devel] ISCSI-SCST performance (with also " Vladislav Bolkhovitin
2009-04-02  9:02                   ` Vladislav Bolkhovitin
2009-04-02 14:06                     ` Ross S. W. Walker
2009-04-02 14:14                       ` Ross S. W. Walker
2009-04-02 15:36                       ` Vladislav Bolkhovitin
2009-04-02 17:19                         ` Ross S. W. Walker
2009-04-01 20:14 ` Bart Van Assche
2009-04-02 17:16   ` [Scst-devel] " Vladislav Bolkhovitin
2009-04-03 17:08     ` Bart Van Assche
2009-04-03 17:13       ` [Scst-devel] ISCSI-SCST performance (with also IET and STGTdata) Sufficool, Stanley
2009-04-03 17:52         ` Bart Van Assche
2009-04-04  8:04     ` [Scst-devel] ISCSI-SCST performance (with also IET and STGT data) Bart Van Assche
2009-04-17 18:11       ` Vladislav Bolkhovitin

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=49D254E4.8050806@vlnb.net \
    --to=vst@vlnb.net \
    --cc=bart.vanassche@gmail.com \
    --cc=iscsitarget-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=scst-devel@lists.sourceforge.net \
    --cc=stgt@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox