[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH 3/3] Implement linux-aio backend

From: Anthony Liguori
Subject: [Qemu-devel] Re: [PATCH 3/3] Implement linux-aio backend
Date: Fri, 18 Apr 2008 10:18:33 -0500
User-agent: Thunderbird (X11/20080227)

Marcelo Tosatti wrote:
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.

FWIW, I'm not getting wonderful results in KVM. It's hard to tell though because time seems wildly inaccurate (even with kvm clock in the guest). The time issue appears unrelated to this set of patches.


Anthony Liguori

reply via email to

[Prev in Thread] Current Thread [Next in Thread]