From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JmsB6-0006ki-88 for qemu-devel@nongnu.org; Fri, 18 Apr 2008 11:07:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JmsB5-0006kW-Ji for qemu-devel@nongnu.org; Fri, 18 Apr 2008 11:07:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JmsB5-0006kT-EJ for qemu-devel@nongnu.org; Fri, 18 Apr 2008 11:07:03 -0400 Received: from mx1.redhat.com ([66.187.233.31]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JmsB5-000573-Gb for qemu-devel@nongnu.org; Fri, 18 Apr 2008 11:07:03 -0400 Date: Fri, 18 Apr 2008 12:09:56 -0300 From: Marcelo Tosatti Message-ID: <20080418150956.GB19341@dmt> References: <1208460412-27567-1-git-send-email-aliguori@us.ibm.com> <1208460412-27567-3-git-send-email-aliguori@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1208460412-27567-3-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] Re: [PATCH 3/3] Implement linux-aio backend Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: kvm-devel@lists.sourceforge.net, qemu-devel@nongnu.org On Thu, Apr 17, 2008 at 02:26:52PM -0500, Anthony Liguori wrote: > This patch introduces a Linux-aio backend that is disabled by default. To > use this backend effectively, the user should disable caching and select > it with the appropriate -aio option. For instance: > > qemu-system-x86_64 -drive foo.img,cache=off -aio linux > > There's no universal way to asynchronous wait with linux-aio. At some point, > signals were added to signal completion. More recently, and eventfd interface > was added. This patch relies on the later. > > We try hard to detect whether the right support is available in configure to > avoid compile failures. > + do { > + err = io_submit(aio_ctxt_id, 1, iocbs); > + } while (err == -1 && errno == EINTR); > + > + if (err != 1) { > + fprintf(stderr, "failed to submit aio request: %m\n"); > + exit(1); > + } > + > + outstanding_requests++; > + > + return &aiocb->common; > +} > + > +static void la_wait(void) > +{ > + main_loop_wait(10); > +} Sleeping in the context of vcpu's is extremely bad (eg virtio-block blocks in write() throttling which kills performance). It should wait on IO completions instead (qemu-kvm.c creates a pthread "waitqueue" to resolve that issue). Other than that looks fine to me, will give it a try.