qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: qemu-devel@nongnu.org
Cc: Samuel Thibault <samuel.thibault@eu.citrix.com>
Subject: Re: [Qemu-devel] [PATCH 2/2 v2] Direct IDE I/O
Date: Mon, 03 Dec 2007 12:08:19 -0600	[thread overview]
Message-ID: <47544613.3050309@codemonkey.ws> (raw)
In-Reply-To: <20071203174931.GA13614@shareable.org>

Jamie Lokier wrote:
> Paul Brook wrote:
>   
>> On Monday 03 December 2007, Samuel Thibault wrote:
>>     
>>> Anthony Liguori, le Mon 03 Dec 2007 09:54:47 -0600, a écrit :
>>>       
>>>> Have you done any performance testing?  Buffered IO should absolutely
>>>> beat direct IO simply because buffered IO allows writes to complete
>>>> before they actually hit disk.
>>>>         
>>> Since qemu can use the aio interface, that shouldn't matter.
>>>       
>> Only if the emulated hardware and guest OS support multiple concurrent 
>> commands.  IDE supports async operation, but not concurrent commmands. In 
>> practice this means you only get full performance if you're using the SCSI 
>> emulation.
>>     
>
> With the IDE emulation, when the emulated "disk write cache" flag is
> on it may be reasonable to report a write as completed when the AIO is
> dispatched, without waiting for the AIO to complete. 
>
> An IDE flush cache command would wait for all outstanding write AIOs
> to complete, and then issue a flush cache (fdatasync) to the real
> device before reporting it has completed.
>
> That's roughly equivalent to what an IDE disk with write caching does,
> and it would provide exactly the guarantees for safe storage to the
> real physical medium that a journalling filesystem or database in the
> guest requires.
>
> If a guest doesn't use journalling with IDE write cache safely
> (e.g. 2.4 Linux and earler), it can simply turn off the IDE "disk
> write cache" flag, which is what it has to do on a real physical disk
> too.
>
> Terminating the qemu process abruptly might cancel some AIOs, but even
> that is ok, as it's equivalent to pulling the power on a real disk
> with uncommitted cached writes.
>   

Except that in an enterprise environment, you typically have battery 
backed disk cache.  It really doesn't matter though b/c in QEMU today, 
submitting the request blocks until it's completed anyway (which is 
nearly instant anyway since I/O is buffered).

Regards,

Anthony Liguori

> -- Jamie
>
>
>
>   

  reply	other threads:[~2007-12-03 18:08 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-03 10:09 [Qemu-devel] [PATCH 0/2 v2] Open disk images with O_DIRECT Laurent Vivier
2007-12-03 10:09 ` [Qemu-devel] [PATCH 1/2 v2] Add "cache" parameter to "-drive" Laurent Vivier
2007-12-03 10:09   ` [Qemu-devel] [PATCH 2/2 v2] Direct IDE I/O Laurent Vivier
2007-12-03 10:23     ` Fabrice Bellard
2007-12-03 10:30       ` Laurent Vivier
2007-12-03 11:40         ` Markus Hitter
2007-12-03 15:39           ` Paul Brook
2007-12-03 19:26             ` Samuel Thibault
2007-12-03 15:54         ` Anthony Liguori
2007-12-03 17:08           ` Samuel Thibault
2007-12-03 17:17             ` Paul Brook
2007-12-03 17:49               ` Jamie Lokier
2007-12-03 18:08                 ` Anthony Liguori [this message]
2007-12-03 18:40                   ` Jamie Lokier
2007-12-03 18:06             ` Anthony Liguori
2007-12-03 19:10               ` Laurent Vivier
2007-12-03 19:16                 ` Paul Brook
2007-12-03 21:36                   ` Anthony Liguori
2007-12-04 12:49                     ` Gerd Hoffmann
2007-12-04 13:02                       ` Laurent Vivier
2007-12-04  8:13                   ` Laurent Vivier
2007-12-03 21:13                 ` Gerd Hoffmann
2007-12-03 21:23                   ` Samuel Thibault
2007-12-03 21:38                   ` Anthony Liguori
2007-12-04 13:21                     ` Gerd Hoffmann
2007-12-04 15:03                       ` Anthony Liguori
2007-12-04 16:18                         ` Gerd Hoffmann
2007-12-05 14:47                           ` Anthony Liguori
2007-12-03 19:14               ` Paul Brook
2007-12-03 19:00           ` Laurent Vivier
2007-12-03 11:14       ` Johannes Schindelin

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=47544613.3050309@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=qemu-devel@nongnu.org \
    --cc=samuel.thibault@eu.citrix.com \
    /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).