[PATCH 1/1] qemu: add virtio-blk queue-size option
Peter Krempa
pkrempa at redhat.com
Mon Sep 6 06:24:47 UTC 2021
On Tue, Aug 31, 2021 at 18:51:07 +0900, Hiroki Narukawa wrote:
> The option "queue-size" in virtio-blk was added in qemu-2.12.0, and default value increased from qemu-5.0.0.
> However, increasing this value may lead to drop of random access performance.
> This is configurable value, so we want to use it via libvirt.
>
> Signed-off-by: Hiroki Narukawa <hnarukaw at yahoo-corp.jp>
> ---
> docs/schemas/domaincommon.rng | 5 +++
> src/conf/domain_conf.c | 6 ++++
> src/conf/domain_conf.h | 1 +
> src/qemu/qemu_capabilities.c | 5 +++
> src/qemu/qemu_capabilities.h | 1 +
> src/qemu/qemu_command.c | 3 ++
> src/qemu/qemu_validate.c | 7 ++++
> .../caps_2.12.0.aarch64.xml | 1 +
> .../caps_2.12.0.s390x.xml | 1 +
> .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 +
> .../caps_3.0.0.riscv32.xml | 1 +
> .../caps_3.0.0.riscv64.xml | 1 +
> .../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 +
> .../caps_3.0.0.x86_64.xml | 1 +
> .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 +
> .../caps_3.1.0.x86_64.xml | 1 +
> .../caps_4.0.0.aarch64.xml | 1 +
> .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 +
> .../caps_4.0.0.riscv32.xml | 1 +
> .../caps_4.0.0.riscv64.xml | 1 +
> .../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 +
> .../caps_4.0.0.x86_64.xml | 1 +
> .../caps_4.1.0.x86_64.xml | 1 +
> .../caps_4.2.0.aarch64.xml | 1 +
> .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 +
> .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 +
> .../caps_4.2.0.x86_64.xml | 1 +
> .../caps_5.0.0.aarch64.xml | 1 +
> .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 +
> .../caps_5.0.0.riscv64.xml | 1 +
> .../caps_5.0.0.x86_64.xml | 1 +
> .../qemucapabilitiesdata/caps_5.1.0.sparc.xml | 1 +
> .../caps_5.1.0.x86_64.xml | 1 +
> .../caps_5.2.0.aarch64.xml | 1 +
> .../qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 +
> .../caps_5.2.0.riscv64.xml | 1 +
> .../qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 +
> .../caps_5.2.0.x86_64.xml | 1 +
> .../caps_6.0.0.aarch64.xml | 1 +
> .../qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 +
> .../caps_6.0.0.x86_64.xml | 1 +
> .../caps_6.1.0.x86_64.xml | 1 +
> .../disk-virtio-queue-size.args | 29 +++++++++++++++
> .../disk-virtio-queue-size.xml | 35 +++++++++++++++++++
> tests/qemuxml2argvtest.c | 2 ++
> .../disk-virtio-queue-size.xml | 35 +++++++++++++++++++
> tests/qemuxml2xmltest.c | 1 +
> 47 files changed, 165 insertions(+)
> create mode 100644 tests/qemuxml2argvdata/disk-virtio-queue-size.args
> create mode 100644 tests/qemuxml2argvdata/disk-virtio-queue-size.xml
> create mode 100644 tests/qemuxml2xmloutdata/disk-virtio-queue-size.xml
You'll have to split this into multiple patches. Generally we split it
into following logical steps (note that after every single patch the
tree must build cleanly)
1) XML/public api changes
2) qemu capability probing changes
3) qemu implementation and test updates
[...]
> @@ -5053,6 +5054,10 @@ virQEMUCapsInitQMPBasicArch(virQEMUCaps *qemuCaps)
> static void
> virQEMUCapsInitQMPVersionCaps(virQEMUCaps *qemuCaps)
> {
> + /* virtio-blk queue-size is added on QEMU 2.12 */
> + if (qemuCaps->version >= 2012000)
> + virQEMUCapsSet(qemuCaps, QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE);
NACK to this hunk, there should be a reasonable way to detect this other
than version check by probing the properties of virtio-blk which we
should already be doing.
> +
> /* -enable-fips is deprecated in QEMU 5.2.0, and QEMU
> * should be built with gcrypt to achieve FIPS compliance
> * automatically / implicitly
[...]
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index b230314f7f..5c360b7c6f 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1738,6 +1738,9 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
> if (disk->queues) {
> virBufferAsprintf(&opt, ",num-queues=%u", disk->queues);
> }
> + if (disk->queue_size) {
Please use an explicit '> 0' check here since it's not a boolean.
> + virBufferAsprintf(&opt, ",queue-size=%u", disk->queue_size);
> + }
>
> qemuBuildVirtioOptionsStr(&opt, disk->virtio);
>
> diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
> index 8906aa52d9..c72aaa2163 100644
> --- a/src/qemu/qemu_validate.c
> +++ b/src/qemu/qemu_validate.c
> @@ -2822,6 +2822,13 @@ qemuValidateDomainDeviceDefDiskFrontend(const virDomainDiskDef *disk,
> "QEMU binary"));
> return -1;
> }
> + if (disk->queue_size &&
same as above.
> + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_BLK_QUEUE_SIZE)) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("queue-size property isn't supported by this "
> + "QEMU binary"));
Error messages on a single line please.
> + return -1;
> + }
> break;
>
More information about the libvir-list
mailing list