[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v1] block/NVMe: introduce a new vhost NVMe host de
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC v1] block/NVMe: introduce a new vhost NVMe host device to QEMU |
Date: |
Tue, 16 Jan 2018 18:06:56 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 |
On 15/01/2018 09:01, Changpeng Liu wrote:
> NVMe 1.3 specification introduces a new NVMe ADMIN command:
> doorbell buffer config, which can write shadow doorbell buffer
> instead of MMIO registers, so it can improve the Guest performance
> a lot for emulated NVMe devices inside VM.
>
> Similar with existing vhost-user-scsi solution, this commit builds a
> new vhost_user_nvme host device to VM and the I/O is processed at
> the slave I/O target, so users can implement a user space NVMe driver
> in the slave I/O target.
>
> Users can start QEMU with: -chardev socket,id=char0,path=/path/vhost.0 \
> -device vhost-user-nvme,chardev=char0,num_io_queues=2.
Hi Changpeng,
I have two comments on this series.
First, the new command in NVMe 1.3 is great. However, please first add
support for the doorbell buffer config in hw/block/nvme.c. There is no
need to tie support for the new command to a completely new external
server architecture. Emulated NVMe can be enhanced to use iothreads and
(when the doorbell buffer is configured) ioeventfd, and that should come
before enhancements for external vhost-like servers.
Second, virtio-based vhost-user remains QEMU's preferred method for
high-performance I/O in guests. Discard support is missing and that is
important for SSDs; that should be fixed in the virtio spec. Are there
any other features where virtio-blk is lagging behind NVMe?
Thanks,
Paolo