This is an automated email from the ASF dual-hosted git repository.

gabriel pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/master by this push:
     new c565db2  kvm: Set amount of queues for Virtio SCSI driver to vCPU of 
Instance (#3101)
c565db2 is described below

commit c565db2cf2ab5fdbd2fba65409928dfa7c5f2d25
Author: Wido den Hollander <w...@widodh.nl>
AuthorDate: Tue Jan 8 10:39:21 2019 +0100

    kvm: Set amount of queues for Virtio SCSI driver to vCPU of Instance (#3101)
    
    The additional queues can enhance the performance of the VirtIO SCSI disk
    and it is recommended to set this to the amount of vCPUs a Instance is 
assigned.
    
      The optional queues attribute specifies the number of queues for the
      controller. For best performance, it's recommended to specify a value 
matching
      the number of vCPUs. Since 1.0.5 (QEMU and KVM only)
    
    Source: https://libvirt.org/formatdomain.html#elementsVirtio
    
    Signed-off-by: Wido den Hollander <w...@widodh.nl>
---
 .../cloud/hypervisor/kvm/resource/LibvirtComputingResource.java  | 2 +-
 .../java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java     | 9 +++++++--
 .../java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java | 3 ++-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index ac92f37..ced37c9 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -2214,7 +2214,7 @@ public class LibvirtComputingResource extends 
ServerResourceBase implements Serv
 
         // If we're using virtio scsi, then we need to add a virtual scsi 
controller
         if (busT == DiskDef.DiskBus.SCSI) {
-            final SCSIDef sd = new SCSIDef((short)0, 0, 0, 9, 0);
+            final SCSIDef sd = new SCSIDef((short)0, 0, 0, 9, 0, vcpus);
             devices.addDevice(sd);
         }
 
diff --git 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index e0089dc..1f1c3a0 100644
--- 
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ 
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -1501,13 +1501,15 @@ public class LibvirtVMDef {
         private int bus = 0;
         private int slot = 9;
         private int function = 0;
+        private int queues = 0;
 
-        public SCSIDef(short index, int domain, int bus, int slot, int 
function) {
+        public SCSIDef(short index, int domain, int bus, int slot, int 
function, int queues) {
             this.index = index;
             this.domain = domain;
             this.bus = bus;
             this.slot = slot;
             this.function = function;
+            this.queues = queues;
         }
 
         public SCSIDef() {
@@ -1518,9 +1520,12 @@ public class LibvirtVMDef {
         public String toString() {
             StringBuilder scsiBuilder = new StringBuilder();
 
-            scsiBuilder.append(String.format("<controller type='scsi' 
index='%d' model='virtio-scsi'>\n", this.index ));
+            scsiBuilder.append(String.format("<controller type='scsi' 
index='%d' model='virtio-scsi'>\n", this.index));
             scsiBuilder.append(String.format("<address type='pci' 
domain='0x%04X' bus='0x%02X' slot='0x%02X' function='0x%01X'/>\n",
                     this.domain, this.bus, this.slot, this.function ) );
+            if (this.queues > 0) {
+                scsiBuilder.append(String.format("<driver queues='%d'/>\n", 
this.queues));
+            }
             scsiBuilder.append("</controller>\n");
             return scsiBuilder.toString();
         }
diff --git 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
index 32effb4..e127ed3 100644
--- 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
+++ 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java
@@ -196,10 +196,11 @@ public class LibvirtVMDefTest extends TestCase {
     }
 
     public void testSCSIDef() {
-        SCSIDef def = new SCSIDef();
+        SCSIDef def = new SCSIDef((short)0, 0, 0, 9, 0, 4);
         String str = def.toString();
         String expected = "<controller type='scsi' index='0' 
model='virtio-scsi'>\n" +
                 "<address type='pci' domain='0x0000' bus='0x00' slot='0x09' 
function='0x0'/>\n" +
+                "<driver queues='4'/>\n" +
                 "</controller>\n";
         assertEquals(str, expected);
     }

Reply via email to