← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1399706] [NEW] QoS on Juno with RBD backend dont work for VM

 

Public bug reported:

Hi,
QoS for volume work with RBD but not for VM. So to solve this problem, you need to pass quota:disk_write_bytes_sec etc... extra parameters to VM.

At ligne 645/usr/lib/python2.7/site-
packages/nova/virt/libvirt/imagebackend.py add this at the end on the
«libvirt_info» method add this extra code :

Ex:
  def libvirt_info(self, disk_bus, disk_dev, device_type, cache_mode,
             extra_specs, hypervisor_version):
...
         if auth_enabled:
             info.auth_secret_type = 'ceph'
             info.auth_secret_uuid = CONF.libvirt.rbd_secret_uuid
+        tune_items = ['disk_read_bytes_sec', 'disk_read_iops_sec',
+            'disk_write_bytes_sec', 'disk_write_iops_sec',
+            'disk_total_bytes_sec', 'disk_total_iops_sec']
+        for key, value in extra_specs.iteritems():
+            scope = key.split(':')
+            if len(scope) > 1 and scope[0] == 'quota':
+                if scope[1] in tune_items:
+                    setattr(info, scope[1], value)
        return info

after this patch, if you «dumpxml VM ID» with virsh you got the missing
<iotune>...</iotune>

Ex:

virsh # dumpxml 2

...
   <disk type='network' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <auth username='cinder'>
        <secret type='ceph' uuid='9b576159-d403-4b1a-8aa2-f18cdcaf4f4b'/>
      </auth>
      <source protocol='rbd' name='vms/20c50d63-5af1-41a6-bc68-f0a6b9ffd715_disk'>
        <host name='192.168.76.120' port='6789'/>
        <host name='192.168.76.121' port='6789'/>
        <host name='192.168.76.122' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <iotune>
        <total_bytes_sec>83886080</total_bytes_sec>
        <total_iops_sec>15000</total_iops_sec>
      </iotune>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
...

Voilà...

Ivan

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1399706

Title:
  QoS on Juno with RBD backend dont work for VM

Status in OpenStack Compute (Nova):
  New

Bug description:
  Hi,
  QoS for volume work with RBD but not for VM. So to solve this problem, you need to pass quota:disk_write_bytes_sec etc... extra parameters to VM.

  At ligne 645/usr/lib/python2.7/site-
  packages/nova/virt/libvirt/imagebackend.py add this at the end on the
  «libvirt_info» method add this extra code :

  Ex:
    def libvirt_info(self, disk_bus, disk_dev, device_type, cache_mode,
               extra_specs, hypervisor_version):
  ...
           if auth_enabled:
               info.auth_secret_type = 'ceph'
               info.auth_secret_uuid = CONF.libvirt.rbd_secret_uuid
  +        tune_items = ['disk_read_bytes_sec', 'disk_read_iops_sec',
  +            'disk_write_bytes_sec', 'disk_write_iops_sec',
  +            'disk_total_bytes_sec', 'disk_total_iops_sec']
  +        for key, value in extra_specs.iteritems():
  +            scope = key.split(':')
  +            if len(scope) > 1 and scope[0] == 'quota':
  +                if scope[1] in tune_items:
  +                    setattr(info, scope[1], value)
          return info

  after this patch, if you «dumpxml VM ID» with virsh you got the
  missing <iotune>...</iotune>

  Ex:

  virsh # dumpxml 2

  ...
     <disk type='network' device='disk'>
        <driver name='qemu' type='raw' cache='writeback'/>
        <auth username='cinder'>
          <secret type='ceph' uuid='9b576159-d403-4b1a-8aa2-f18cdcaf4f4b'/>
        </auth>
        <source protocol='rbd' name='vms/20c50d63-5af1-41a6-bc68-f0a6b9ffd715_disk'>
          <host name='192.168.76.120' port='6789'/>
          <host name='192.168.76.121' port='6789'/>
          <host name='192.168.76.122' port='6789'/>
        </source>
        <target dev='vda' bus='virtio'/>
        <iotune>
          <total_bytes_sec>83886080</total_bytes_sec>
          <total_iops_sec>15000</total_iops_sec>
        </iotune>
        <alias name='virtio-disk0'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
      </disk>
  ...

  Voilà...

  Ivan

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1399706/+subscriptions


Follow ups

References