From: Asias He <asias@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-aio@kvack.org,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
virtualization@lists.linux-foundation.org,
Benjamin LaHaise <bcrl@kvack.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 0/5] Add vhost-blk support
Date: Tue, 17 Jul 2012 16:29:42 +0800 [thread overview]
Message-ID: <50052276.2080906@redhat.com> (raw)
In-Reply-To: <CAJSP0QWgmXns89se+xdGgM6i1_hsfVWPQ8caHua9d-dDA4CTDQ@mail.gmail.com>
On 07/16/2012 07:58 PM, Stefan Hajnoczi wrote:
> On Thu, Jul 12, 2012 at 4:35 PM, Asias He <asias@redhat.com> wrote:
>> This patchset adds vhost-blk support. vhost-blk is a in kernel virito-blk
>> device accelerator. Compared to userspace virtio-blk implementation, vhost-blk
>> gives about 5% to 15% performance improvement.
>
> Why is it 5-15% faster? vhost-blk and the userspace virtio-blk you
> benchmarked should be doing basically the same thing:
>
> 1. An eventfd file descriptor is signalled when the vring has new
> requests available from the guest.
> 2. A thread wakes up and processes the virtqueue.
> 3. Linux AIO is used to issue host I/O.
> 4. An interrupt is injected into the guest.
Yes. This is how both of them work. Though, there are some differences
in details. e.g.
In vhost-blk, we use the vhost's work infrastructure to handle the
requests. In kvm tool, we use a dedicated thread.
In vhost-blk, we use irqfd to inject interrupts. In kvm tool, we use
ioctl to inject interrupts.
> Does the vhost-blk implementation do anything fundamentally different
> from userspace? Where is the overhead that userspace virtio-blk has?
Currently, no. But we could play with bio directly in vhost-blk as
Christoph suggested which could make the IO path from guest to host's
real storage even shorter in vhost-blk.
I've been trying my best to reduce the overhead of virtio-blk at kvm
tool side. I do not see any significant overhead out there. Compared to
vhost-blk, the overhead we have in userspace virito-blk is syscalls. In
each IO request, we have
epoll_wait() & read(): wait for the eventfd which guest notifies us
io_submit(): submit the aio
read(): read the aio complete eventfd
io_getevents(): reap the aio complete result
ioctl(): trigger the interrupt
So, vhost-blk at least saves ~6 syscalls for us in each request.
> I'm asking because it would be beneficial to fix the overhead
> (especially it that could speed up all userspace applications) instead
> of adding a special-purpose kernel module to work around the overhead.
I guess you mean qemu here. Yes, in theory, qemu's block layer can be
improved to achieve similar performance as vhost-blk or kvm tool's
userspace virito-blk has. But I think it makes no sense to prevent one
solution becase there is another in theory solution called: we can do
similar in qemu.
What do you mean by specail-purpose here, we need general-purpose kernel
module? Is vhost-net a special purpose kernel module? Is xen-blkback a
special-purpose kernel module? And I think vhost-blk is beneficial to
qemu too, as well as any other kvm host side implementation.
--
Asias
--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to majordomo@kvack.org. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
WARNING: multiple messages have this Message-ID (diff)
From: Asias He <asias@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-aio@kvack.org,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
virtualization@lists.linux-foundation.org,
Benjamin LaHaise <bcrl@kvack.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 0/5] Add vhost-blk support
Date: Tue, 17 Jul 2012 16:29:42 +0800 [thread overview]
Message-ID: <50052276.2080906@redhat.com> (raw)
In-Reply-To: <CAJSP0QWgmXns89se+xdGgM6i1_hsfVWPQ8caHua9d-dDA4CTDQ@mail.gmail.com>
On 07/16/2012 07:58 PM, Stefan Hajnoczi wrote:
> On Thu, Jul 12, 2012 at 4:35 PM, Asias He <asias@redhat.com> wrote:
>> This patchset adds vhost-blk support. vhost-blk is a in kernel virito-blk
>> device accelerator. Compared to userspace virtio-blk implementation, vhost-blk
>> gives about 5% to 15% performance improvement.
>
> Why is it 5-15% faster? vhost-blk and the userspace virtio-blk you
> benchmarked should be doing basically the same thing:
>
> 1. An eventfd file descriptor is signalled when the vring has new
> requests available from the guest.
> 2. A thread wakes up and processes the virtqueue.
> 3. Linux AIO is used to issue host I/O.
> 4. An interrupt is injected into the guest.
Yes. This is how both of them work. Though, there are some differences
in details. e.g.
In vhost-blk, we use the vhost's work infrastructure to handle the
requests. In kvm tool, we use a dedicated thread.
In vhost-blk, we use irqfd to inject interrupts. In kvm tool, we use
ioctl to inject interrupts.
> Does the vhost-blk implementation do anything fundamentally different
> from userspace? Where is the overhead that userspace virtio-blk has?
Currently, no. But we could play with bio directly in vhost-blk as
Christoph suggested which could make the IO path from guest to host's
real storage even shorter in vhost-blk.
I've been trying my best to reduce the overhead of virtio-blk at kvm
tool side. I do not see any significant overhead out there. Compared to
vhost-blk, the overhead we have in userspace virito-blk is syscalls. In
each IO request, we have
epoll_wait() & read(): wait for the eventfd which guest notifies us
io_submit(): submit the aio
read(): read the aio complete eventfd
io_getevents(): reap the aio complete result
ioctl(): trigger the interrupt
So, vhost-blk at least saves ~6 syscalls for us in each request.
> I'm asking because it would be beneficial to fix the overhead
> (especially it that could speed up all userspace applications) instead
> of adding a special-purpose kernel module to work around the overhead.
I guess you mean qemu here. Yes, in theory, qemu's block layer can be
improved to achieve similar performance as vhost-blk or kvm tool's
userspace virito-blk has. But I think it makes no sense to prevent one
solution becase there is another in theory solution called: we can do
similar in qemu.
What do you mean by specail-purpose here, we need general-purpose kernel
module? Is vhost-net a special purpose kernel module? Is xen-blkback a
special-purpose kernel module? And I think vhost-blk is beneficial to
qemu too, as well as any other kvm host side implementation.
--
Asias
next prev parent reply other threads:[~2012-07-17 8:29 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-12 15:35 [PATCH 0/5] Add vhost-blk support Asias He
2012-07-12 15:35 ` Asias He
2012-07-12 15:35 ` [PATCH 1/5] aio: Export symbols and struct kiocb_batch for in kernel aio usage Asias He
2012-07-12 15:35 ` Asias He
2012-07-12 17:50 ` James Bottomley
2012-07-13 1:40 ` Asias He
2012-07-13 1:40 ` Asias He
2012-07-13 1:40 ` Asias He
2012-07-12 15:35 ` Asias He
2012-07-12 16:06 ` [PATCH 0/5] Add vhost-blk support Jeff Moyer
2012-07-12 16:06 ` Jeff Moyer
2012-07-13 1:19 ` Asias He
2012-07-13 1:19 ` Asias He
2012-07-13 1:19 ` Asias He
2012-07-12 16:06 ` Jeff Moyer
2012-07-16 11:58 ` Stefan Hajnoczi
2012-07-16 11:58 ` Stefan Hajnoczi
2012-07-16 11:58 ` Stefan Hajnoczi
2012-07-17 8:29 ` Asias He [this message]
2012-07-17 8:29 ` Asias He
2012-07-17 8:52 ` Paolo Bonzini
2012-07-17 8:52 ` Paolo Bonzini
2012-07-17 8:52 ` Paolo Bonzini
2012-07-17 9:21 ` Asias He
2012-07-17 9:21 ` Asias He
2012-07-17 9:32 ` Paolo Bonzini
2012-07-17 9:32 ` Paolo Bonzini
2012-07-17 9:32 ` Paolo Bonzini
2012-07-17 9:51 ` Michael S. Tsirkin
2012-07-17 9:51 ` Michael S. Tsirkin
2012-07-17 9:51 ` Michael S. Tsirkin
2012-07-17 11:11 ` Stefan Hajnoczi
2012-07-17 11:11 ` Stefan Hajnoczi
2012-07-17 11:11 ` Stefan Hajnoczi
2012-07-17 11:26 ` Michael S. Tsirkin
2012-07-17 11:26 ` Michael S. Tsirkin
2012-07-17 11:42 ` Stefan Hajnoczi
2012-07-17 11:42 ` Stefan Hajnoczi
2012-07-17 11:51 ` Stefan Hajnoczi
2012-07-17 11:51 ` Stefan Hajnoczi
2012-07-17 11:54 ` Michael S. Tsirkin
2012-07-17 11:54 ` Michael S. Tsirkin
2012-07-17 11:54 ` Michael S. Tsirkin
2012-07-17 12:03 ` Stefan Hajnoczi
2012-07-17 12:03 ` Stefan Hajnoczi
2012-07-17 12:48 ` Michael S. Tsirkin
2012-07-17 12:48 ` Michael S. Tsirkin
2012-07-17 13:02 ` Paolo Bonzini
2012-07-17 13:02 ` Paolo Bonzini
2012-07-17 13:26 ` Michael S. Tsirkin
2012-07-17 13:26 ` Michael S. Tsirkin
2012-07-18 8:47 ` Asias He
2012-07-18 8:47 ` Asias He
2012-07-18 8:47 ` Asias He
2012-07-17 12:48 ` Michael S. Tsirkin
2012-07-17 11:26 ` Michael S. Tsirkin
2012-07-18 8:12 ` Asias He
2012-07-18 8:12 ` Asias He
2012-07-18 8:12 ` Asias He
2012-07-18 8:26 ` Stefan Hajnoczi
2012-07-18 8:26 ` Stefan Hajnoczi
2012-07-18 9:46 ` Ronen Hod
2012-07-18 9:46 ` Ronen Hod
2012-07-18 9:46 ` Ronen Hod
2012-07-17 9:21 ` Asias He
2012-07-17 9:45 ` Michael S. Tsirkin
2012-07-17 9:45 ` Michael S. Tsirkin
2012-07-17 9:45 ` Michael S. Tsirkin
2012-07-17 10:14 ` Paolo Bonzini
2012-07-17 10:14 ` Paolo Bonzini
2012-07-17 10:49 ` Michael S. Tsirkin
2012-07-17 10:49 ` Michael S. Tsirkin
2012-07-17 10:56 ` Paolo Bonzini
2012-07-17 10:56 ` Paolo Bonzini
2012-07-17 11:09 ` Michael S. Tsirkin
2012-07-17 11:09 ` Michael S. Tsirkin
2012-07-17 11:09 ` Michael S. Tsirkin
2012-07-17 11:36 ` Stefan Hajnoczi
2012-07-17 11:36 ` Stefan Hajnoczi
2012-07-17 11:36 ` Stefan Hajnoczi
2012-07-17 8:29 ` Asias He
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=50052276.2080906@redhat.com \
--to=asias@redhat.com \
--cc=bcrl@kvack.org \
--cc=kvm@vger.kernel.org \
--cc=linux-aio@kvack.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=stefanha@gmail.com \
--cc=viro@zeniv.linux.org.uk \
--cc=virtualization@lists.linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.