[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/13] vhost-user-blk-pci: default num_queues to -smp N
From: |
Michael S. Tsirkin |
Subject: |
[PULL 11/13] vhost-user-blk-pci: default num_queues to -smp N |
Date: |
Thu, 27 Aug 2020 09:40:53 -0400 |
From: Stefan Hajnoczi <stefanha@redhat.com>
Automatically size the number of request virtqueues to match the number
of vCPUs. This ensures that completion interrupts are handled on the
same vCPU that submitted the request. No IPI is necessary to complete
an I/O request and performance is improved. The maximum number of MSI-X
vectors and virtqueues limit are respected.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20200818143348.310613-8-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/virtio/vhost-user-blk.h | 2 ++
hw/block/vhost-user-blk.c | 6 +++++-
hw/core/machine.c | 1 +
hw/virtio/vhost-user-blk-pci.c | 4 ++++
4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/include/hw/virtio/vhost-user-blk.h
b/include/hw/virtio/vhost-user-blk.h
index 34ad6f0c0e..292d17147c 100644
--- a/include/hw/virtio/vhost-user-blk.h
+++ b/include/hw/virtio/vhost-user-blk.h
@@ -25,6 +25,8 @@
#define VHOST_USER_BLK(obj) \
OBJECT_CHECK(VHostUserBlk, (obj), TYPE_VHOST_USER_BLK)
+#define VHOST_USER_BLK_AUTO_NUM_QUEUES UINT16_MAX
+
typedef struct VHostUserBlk {
VirtIODevice parent_obj;
CharBackend chardev;
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index a00b854736..39aec42dae 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -420,6 +420,9 @@ static void vhost_user_blk_device_realize(DeviceState *dev,
Error **errp)
return;
}
+ if (s->num_queues == VHOST_USER_BLK_AUTO_NUM_QUEUES) {
+ s->num_queues = 1;
+ }
if (!s->num_queues || s->num_queues > VIRTIO_QUEUE_MAX) {
error_setg(errp, "vhost-user-blk: invalid number of IO queues");
return;
@@ -531,7 +534,8 @@ static const VMStateDescription vmstate_vhost_user_blk = {
static Property vhost_user_blk_properties[] = {
DEFINE_PROP_CHR("chardev", VHostUserBlk, chardev),
- DEFINE_PROP_UINT16("num-queues", VHostUserBlk, num_queues, 1),
+ DEFINE_PROP_UINT16("num-queues", VHostUserBlk, num_queues,
+ VHOST_USER_BLK_AUTO_NUM_QUEUES),
DEFINE_PROP_UINT32("queue-size", VHostUserBlk, queue_size, 128),
DEFINE_PROP_BIT("config-wce", VHostUserBlk, config_wce, 0, true),
DEFINE_PROP_END_OF_LIST(),
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 7f65fa8743..ea26d61237 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -30,6 +30,7 @@
GlobalProperty hw_compat_5_1[] = {
{ "vhost-scsi", "num_queues", "1"},
+ { "vhost-user-blk", "num-queues", "1"},
{ "vhost-user-scsi", "num_queues", "1"},
{ "virtio-blk-device", "num-queues", "1"},
{ "virtio-scsi-device", "num_queues", "1"},
diff --git a/hw/virtio/vhost-user-blk-pci.c b/hw/virtio/vhost-user-blk-pci.c
index 4f5d5cbf44..a62a71e067 100644
--- a/hw/virtio/vhost-user-blk-pci.c
+++ b/hw/virtio/vhost-user-blk-pci.c
@@ -54,6 +54,10 @@ static void vhost_user_blk_pci_realize(VirtIOPCIProxy
*vpci_dev, Error **errp)
VHostUserBlkPCI *dev = VHOST_USER_BLK_PCI(vpci_dev);
DeviceState *vdev = DEVICE(&dev->vdev);
+ if (dev->vdev.num_queues == VHOST_USER_BLK_AUTO_NUM_QUEUES) {
+ dev->vdev.num_queues = virtio_pci_optimal_num_queues(0);
+ }
+
if (vpci_dev->nvectors == DEV_NVECTORS_UNSPECIFIED) {
vpci_dev->nvectors = dev->vdev.num_queues + 1;
}
--
MST
- [PULL 03/13] arm/acpi: fix an out of spec _UID for PCI root, (continued)
- [PULL 03/13] arm/acpi: fix an out of spec _UID for PCI root, Michael S. Tsirkin, 2020/08/27
- [PULL 04/13] disassemble-aml: -o actually works, Michael S. Tsirkin, 2020/08/27
- [PULL 05/13] acpi: update expected DSDT files with _UID changes, Michael S. Tsirkin, 2020/08/27
- [PULL 06/13] Introduce a new flag for i440fx to disable PCI hotplug on the root bus, Michael S. Tsirkin, 2020/08/27
- [PULL 07/13] virtio-pci: add virtio_pci_optimal_num_queues() helper, Michael S. Tsirkin, 2020/08/27
- [PULL 08/13] virtio-scsi: introduce a constant for fixed virtqueues, Michael S. Tsirkin, 2020/08/27
- [PULL 09/13] virtio-scsi-pci: default num_queues to -smp N, Michael S. Tsirkin, 2020/08/27
- [PULL 10/13] virtio-blk-pci: default num_queues to -smp N, Michael S. Tsirkin, 2020/08/27
- [PULL 11/13] vhost-user-blk-pci: default num_queues to -smp N,
Michael S. Tsirkin <=
- [PULL 13/13] tests/bios-tables-test: add smbios cpu speed test, Michael S. Tsirkin, 2020/08/27
- [PULL 12/13] hw/smbios: add options for type 4 max-speed and current-speed, Michael S. Tsirkin, 2020/08/27
- Re: [PULL 00/13] virtio,pc,acpi: features, fixes, Peter Maydell, 2020/08/27