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