all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues
@ 2023-03-09  8:52 Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 1/6] add virtio-scsi && virtio-scsi-single tests Alexandre Derumier
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

Hi,

This patch series add support for virtio-blk num-queues.
It's was already implemented for virtio-scsi.

It's also enable numqueue to maxcpus for qemu 8.0.
Redhat already was enabled by default in rhev in 2011,
so it's pretty stable.
https://bugzilla.redhat.com/show_bug.cgi?id=1827722

It's improve performance for fast storage like nvme,optane
by around 20%.
My fio bench have jump from 200k to 240k iops with 4 block

I don't have seen perf regression (running them for 1month),
but user is still able to override queues and set it to 1.


Alexandre Derumier (6):
  add virtio-scsi && virtio-scsi-single tests
  virtio-blk: add queues option
  cpuconfig: add get_cpu_topology helper
  fix #4295 : virtio-(blk|scsi): enable multiqueue by default
  drive: allow minimum queues = 1
  add virtio-blk|scsi default multiqueue tests

 PVE/QemuServer.pm                             | 36 ++++++++++++-------
 PVE/QemuServer/CPUConfig.pm                   | 11 ++++++
 PVE/QemuServer/Drive.pm                       |  3 +-
 test/cfg2cmd/simple-virtio-blk-8.0.conf       | 13 +++++++
 test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd   | 31 ++++++++++++++++
 .../simple-virtio-scsi-single-8.0.conf        | 14 ++++++++
 .../simple-virtio-scsi-single-8.0.conf.cmd    | 33 +++++++++++++++++
 test/cfg2cmd/simple-virtio-scsi-single.conf   | 14 ++++++++
 .../simple-virtio-scsi-single.conf.cmd        | 33 +++++++++++++++++
 test/cfg2cmd/simple-virtio-scsi.conf          | 14 ++++++++
 test/cfg2cmd/simple-virtio-scsi.conf.cmd      | 31 ++++++++++++++++
 11 files changed, 219 insertions(+), 14 deletions(-)
 create mode 100644 test/cfg2cmd/simple-virtio-blk-8.0.conf
 create mode 100644 test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single-8.0.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single-8.0.conf.cmd
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single.conf.cmd
 create mode 100644 test/cfg2cmd/simple-virtio-scsi.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi.conf.cmd

-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 1/6] add virtio-scsi && virtio-scsi-single tests
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 2/6] virtio-blk: add queues option Alexandre Derumier
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 test/cfg2cmd/simple-virtio-scsi-single.conf   | 14 ++++++++
 .../simple-virtio-scsi-single.conf.cmd        | 33 +++++++++++++++++++
 test/cfg2cmd/simple-virtio-scsi.conf          | 14 ++++++++
 test/cfg2cmd/simple-virtio-scsi.conf.cmd      | 31 +++++++++++++++++
 4 files changed, 92 insertions(+)
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single.conf.cmd
 create mode 100644 test/cfg2cmd/simple-virtio-scsi.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi.conf.cmd

diff --git a/test/cfg2cmd/simple-virtio-scsi-single.conf b/test/cfg2cmd/simple-virtio-scsi-single.conf
new file mode 100644
index 0000000..982702d
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi-single.conf
@@ -0,0 +1,14 @@
+# TEST: Test for a basic configuration with a virtio-scsi-single IOThread disk
+# QEMU_VERSION: 5.0
+bootdisk: scsi0
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+numa: 0
+ostype: l26
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+scsihw: virtio-scsi-single
+scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
diff --git a/test/cfg2cmd/simple-virtio-scsi-single.conf.cmd b/test/cfg2cmd/simple-virtio-scsi-single.conf.cmd
new file mode 100644
index 0000000..374bd96
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi-single.conf.cmd
@@ -0,0 +1,33 @@
+/usr/bin/kvm \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+  -m 768 \
+  -object 'iothread,id=iothread-virtioscsi0' \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+  -device 'pci-bridge,id=pci.3,chassis_nr=3,bus=pci.0,addr=0x5' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+  -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \
+  -device 'VGA,id=vga,bus=pci.0,addr=0x2' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' \
+  -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \
+  -device 'virtio-scsi-pci,id=virtioscsi0,bus=pci.3,addr=0x1,iothread=iothread-virtioscsi0' \
+  -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=native,detect-zeroes=unmap' \
+  -device 'scsi-hd,bus=virtioscsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \
+  -machine 'type=pc+pve0'
diff --git a/test/cfg2cmd/simple-virtio-scsi.conf b/test/cfg2cmd/simple-virtio-scsi.conf
new file mode 100644
index 0000000..b32a3df
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi.conf
@@ -0,0 +1,14 @@
+# TEST: Test for a basic configuration with a virtio-scsi disk
+# QEMU_VERSION: 5.0
+bootdisk: scsi0
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+numa: 0
+ostype: l26
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+scsihw: virtio-scsi
+scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
diff --git a/test/cfg2cmd/simple-virtio-scsi.conf.cmd b/test/cfg2cmd/simple-virtio-scsi.conf.cmd
new file mode 100644
index 0000000..c25eed9
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi.conf.cmd
@@ -0,0 +1,31 @@
+/usr/bin/kvm \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+  -m 768 \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+  -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \
+  -device 'VGA,id=vga,bus=pci.0,addr=0x2' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -drive 'if=none,id=drive-ide2,media=cdrom,aio=threads' \
+  -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \
+  -device 'virtio-scsi,id=scsihw0,bus=pci.0,addr=0x5' \
+  -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=native,detect-zeroes=unmap' \
+  -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \
+  -machine 'type=pc+pve0'
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 2/6] virtio-blk: add queues option
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 1/6] add virtio-scsi && virtio-scsi-single tests Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 3/6] cpuconfig: add get_cpu_topology helper Alexandre Derumier
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

We already added support for virtio-scsi some years ago,
but forget to add it for virtio-blk

Note that qemu attribute in "num-queues" for virtio-blk,

instaed "num_queues"  for virtio-scsi

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 PVE/QemuServer.pm       | 1 +
 PVE/QemuServer/Drive.pm | 1 +
 2 files changed, 2 insertions(+)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 40be44d..deb7faf 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -1505,6 +1505,7 @@ sub print_drivedevice_full {
 	my $pciaddr = print_pci_addr("$drive_id", $bridges, $arch, $machine_type);
 	$device = "virtio-blk-pci,drive=drive-$drive_id,id=${drive_id}${pciaddr}";
 	$device .= ",iothread=iothread-$drive_id" if $drive->{iothread};
+	$device .= ",num-queues=$drive->{queues}" if $drive->{queues};
     } elsif ($drive->{interface} eq 'scsi') {
 
 	my ($maxdev, $controller, $controller_prefix) = scsihw_infos($conf, $drive);
diff --git a/PVE/QemuServer/Drive.pm b/PVE/QemuServer/Drive.pm
index b0e0a96..cd2823a 100644
--- a/PVE/QemuServer/Drive.pm
+++ b/PVE/QemuServer/Drive.pm
@@ -304,6 +304,7 @@ PVE::JSONSchema::register_standard_option("pve-qm-sata", $satadesc);
 my $virtio_fmt = {
     %drivedesc_base,
     %iothread_fmt,
+    %queues_fmt,
     %readonly_fmt,
 };
 my $virtiodesc = {
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 3/6] cpuconfig: add get_cpu_topology helper
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 1/6] add virtio-scsi && virtio-scsi-single tests Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 2/6] virtio-blk: add queues option Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 4/6] fix #4295 : virtio-(blk|scsi): enable multiqueue by default Alexandre Derumier
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 PVE/QemuServer.pm           | 16 +++-------------
 PVE/QemuServer/CPUConfig.pm | 11 +++++++++++
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index deb7faf..b49b59b 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -50,7 +50,7 @@ use PVE::QemuConfig;
 use PVE::QemuServer::Helpers qw(min_version config_aware_timeout windows_version);
 use PVE::QemuServer::Cloudinit;
 use PVE::QemuServer::CGroup;
-use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options);
+use PVE::QemuServer::CPUConfig qw(print_cpu_device get_cpu_options get_cpu_topology);
 use PVE::QemuServer::Drive qw(is_valid_drivename drive_is_cloudinit drive_is_cdrom drive_is_read_only parse_drive print_drive);
 use PVE::QemuServer::Machine;
 use PVE::QemuServer::Memory;
@@ -3818,13 +3818,7 @@ sub config_to_command {
 
     add_tpm_device($vmid, $devices, $conf);
 
-    my $sockets = 1;
-    $sockets = $conf->{smp} if $conf->{smp}; # old style - no longer iused
-    $sockets = $conf->{sockets} if  $conf->{sockets};
-
-    my $cores = $conf->{cores} || 1;
-
-    my $maxcpus = $sockets * $cores;
+    my ($sockets, $cores, $maxcpus) = get_cpu_topology($conf);
 
     my $vcpus = $conf->{vcpus} ? $conf->{vcpus} : $maxcpus;
 
@@ -4660,11 +4654,7 @@ sub qemu_cpu_hotplug {
 
     my $machine_type = PVE::QemuServer::Machine::get_current_qemu_machine($vmid);
 
-    my $sockets = 1;
-    $sockets = $conf->{smp} if $conf->{smp}; # old style - no longer iused
-    $sockets = $conf->{sockets} if  $conf->{sockets};
-    my $cores = $conf->{cores} || 1;
-    my $maxcpus = $sockets * $cores;
+    my ($sockets, $cores, $maxcpus) = get_cpu_topology($conf);
 
     $vcpus = $maxcpus if !$vcpus;
 
diff --git a/PVE/QemuServer/CPUConfig.pm b/PVE/QemuServer/CPUConfig.pm
index fb0861b..826e472 100644
--- a/PVE/QemuServer/CPUConfig.pm
+++ b/PVE/QemuServer/CPUConfig.pm
@@ -12,6 +12,7 @@ use base qw(PVE::SectionConfig Exporter);
 our @EXPORT_OK = qw(
 print_cpu_device
 get_cpu_options
+get_cpu_topology
 );
 
 # under certain race-conditions, this module might be loaded before pve-cluster
@@ -659,6 +660,16 @@ sub get_cpu_from_running_vm {
     return $1;
 }
 
+sub get_cpu_topology {
+    my ($conf) = @_;
+
+    my $sockets = $conf->{sockets} || 1;
+    my $cores = $conf->{cores} || 1;
+    my $maxcpus = $sockets * $cores;
+
+    return ($sockets, $cores, $maxcpus);
+}
+
 __PACKAGE__->register();
 __PACKAGE__->init();
 
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 4/6] fix #4295 : virtio-(blk|scsi): enable multiqueue by default
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
                   ` (2 preceding siblings ...)
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 3/6] cpuconfig: add get_cpu_topology helper Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 5/6] drive: allow minimum queues = 1 Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 6/6] add virtio-blk|scsi default multiqueue tests Alexandre Derumier
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

set num_queues = maxcpus for qemu 8.0

redhat already done it in rhev since 2021
https://bugzilla.redhat.com/show_bug.cgi?id=1827722#c11

The -device virtio-blk,num-queues= and -device virtio-scsi,num_queues= parameters control how many virtqueues are available to the guest. Allocating one virtqueue per vCPU improves performance as follows:
Interrupts are handled on the vCPU that submitted the request, avoiding IPIs
The I/O scheduler is automatically set to “none” by the Linux block layer

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 PVE/QemuServer.pm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index b49b59b..39d30e3 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -1505,7 +1505,14 @@ sub print_drivedevice_full {
 	my $pciaddr = print_pci_addr("$drive_id", $bridges, $arch, $machine_type);
 	$device = "virtio-blk-pci,drive=drive-$drive_id,id=${drive_id}${pciaddr}";
 	$device .= ",iothread=iothread-$drive_id" if $drive->{iothread};
+
+	my $machine_version = extract_version($machine_type, kvm_user_version());
+	if (min_version($machine_version, 8, 0)) {
+	    my ($sockets, $cores, $maxcpus) = get_cpu_topology($conf);
+	    $drive->{queues} = $maxcpus if !$drive->{queues};
+	}
 	$device .= ",num-queues=$drive->{queues}" if $drive->{queues};
+
     } elsif ($drive->{interface} eq 'scsi') {
 
 	my ($maxdev, $controller, $controller_prefix) = scsihw_infos($conf, $drive);
@@ -4043,6 +4050,12 @@ sub config_to_command {
 		);
 	    }
 
+	    if (min_version($machine_version, 8, 0)) {
+		my ($sockets, $cores, $maxcpus) = get_cpu_topology($conf);
+		$drive->{queues} = $maxcpus if !$drive->{queues};
+
+	    }
+
 	    my $queues = '';
 	    if($conf->{scsihw} && $conf->{scsihw} eq "virtio-scsi-single" && $drive->{queues}){
 		$queues = ",num_queues=$drive->{queues}";
@@ -4306,6 +4319,12 @@ sub vm_deviceplug {
 	    $devicefull .= ",iothread=iothread-$deviceid";
 	}
 
+	my $machine_version = PVE::QemuServer::Machine::extract_version($machine_type);
+	if (min_version($machine_version, 8, 0)) {
+	    my ($sockets, $cores, $maxcpus) = get_cpu_topology($conf);
+	    $device->{queues} = $maxcpus if !$device->{queues};
+	}
+
 	if($deviceid =~ m/^virtioscsi(\d+)$/ && $device->{queues}) {
 	    $devicefull .= ",num_queues=$device->{queues}";
 	}
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 5/6] drive: allow minimum queues = 1
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
                   ` (3 preceding siblings ...)
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 4/6] fix #4295 : virtio-(blk|scsi): enable multiqueue by default Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 6/6] add virtio-blk|scsi default multiqueue tests Alexandre Derumier
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

If user want to disable new default multiqueue

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 PVE/QemuServer/Drive.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/PVE/QemuServer/Drive.pm b/PVE/QemuServer/Drive.pm
index cd2823a..546977d 100644
--- a/PVE/QemuServer/Drive.pm
+++ b/PVE/QemuServer/Drive.pm
@@ -174,7 +174,7 @@ my %queues_fmt = (
     queues => {
 	type => 'integer',
 	description => "Number of queues.",
-	minimum => 2,
+	minimum => 1,
 	optional => 1
     }
 );
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH qemu-server 6/6] add virtio-blk|scsi default multiqueue tests
  2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
                   ` (4 preceding siblings ...)
  2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 5/6] drive: allow minimum queues = 1 Alexandre Derumier
@ 2023-03-09  8:52 ` Alexandre Derumier
  5 siblings, 0 replies; 7+ messages in thread
From: Alexandre Derumier @ 2023-03-09  8:52 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 test/cfg2cmd/simple-virtio-blk-8.0.conf       | 13 ++++++++
 test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd   | 31 +++++++++++++++++
 .../simple-virtio-scsi-single-8.0.conf        | 14 ++++++++
 .../simple-virtio-scsi-single-8.0.conf.cmd    | 33 +++++++++++++++++++
 4 files changed, 91 insertions(+)
 create mode 100644 test/cfg2cmd/simple-virtio-blk-8.0.conf
 create mode 100644 test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single-8.0.conf
 create mode 100644 test/cfg2cmd/simple-virtio-scsi-single-8.0.conf.cmd

diff --git a/test/cfg2cmd/simple-virtio-blk-8.0.conf b/test/cfg2cmd/simple-virtio-blk-8.0.conf
new file mode 100644
index 0000000..7f7ad57
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-blk-8.0.conf
@@ -0,0 +1,13 @@
+# TEST: Test for a basic configuration with a VirtIO Block IOThread disk
+# QEMU_VERSION: 8.0
+bootdisk: virtio0
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+numa: 0
+ostype: l26
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+virtio0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
diff --git a/test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd b/test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd
new file mode 100644
index 0000000..0a89928
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-blk-8.0.conf.cmd
@@ -0,0 +1,31 @@
+/usr/bin/kvm \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+  -m 768 \
+  -object 'iothread,id=iothread-virtio0' \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+  -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \
+  -device 'VGA,id=vga,bus=pci.0,addr=0x2' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \
+  -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \
+  -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-virtio0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \
+  -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,iothread=iothread-virtio0,num-queues=3,bootindex=100' \
+  -machine 'type=pc+pve0'
diff --git a/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf b/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf
new file mode 100644
index 0000000..b836b8a
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf
@@ -0,0 +1,14 @@
+# TEST: Test for a basic configuration with a virtio-scsi-single IOThread disk
+# QEMU_VERSION: 8.0
+bootdisk: scsi0
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+numa: 0
+ostype: l26
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+scsihw: virtio-scsi-single
+scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,iothread=1,size=104858K
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
diff --git a/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf.cmd b/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf.cmd
new file mode 100644
index 0000000..364f4be
--- /dev/null
+++ b/test/cfg2cmd/simple-virtio-scsi-single-8.0.conf.cmd
@@ -0,0 +1,33 @@
+/usr/bin/kvm \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
+  -m 768 \
+  -object 'iothread,id=iothread-virtioscsi0' \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
+  -device 'pci-bridge,id=pci.3,chassis_nr=3,bus=pci.0,addr=0x5' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
+  -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \
+  -device 'VGA,id=vga,bus=pci.0,addr=0x2' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \
+  -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \
+  -device 'virtio-scsi-pci,id=virtioscsi0,bus=pci.3,addr=0x1,iothread=iothread-virtioscsi0,num_queues=3' \
+  -drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \
+  -device 'scsi-hd,bus=virtioscsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \
+  -machine 'type=pc+pve0'
-- 
2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-03-09  8:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-09  8:52 [pve-devel] [PATCH qemu-server 0/6] improve virtio drive multiqueues Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 1/6] add virtio-scsi && virtio-scsi-single tests Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 2/6] virtio-blk: add queues option Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 3/6] cpuconfig: add get_cpu_topology helper Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 4/6] fix #4295 : virtio-(blk|scsi): enable multiqueue by default Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 5/6] drive: allow minimum queues = 1 Alexandre Derumier
2023-03-09  8:52 ` [pve-devel] [PATCH qemu-server 6/6] add virtio-blk|scsi default multiqueue tests Alexandre Derumier

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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal