← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1750319] [NEW] libvirt.driver doesn't make <iotune> when using extra_specs of flavor

 

Public bug reported:

Description
===========
I use pike release.

I tried to use extra_specs of flavors to limit instance's disk io and network bandwidth by using "Disk tuning" and "Bandwidth I/O".
But "Disk tuning" was not worked and only "Bandwidth I/O" worked.

I turned debug=on, and found nova.virt.libvirt.driver makes only
<bandwith> in _get_guest_xml, without <iotune>.

And I tried to use volume-type qos with image property to limit disk
bandwith and iops, it works well as I expected.

Steps to reproduce
==================
# make flavor with extra_specs
openstack flavor create medium --vcpus 2 --ram 4096 --disk 40 \
--property quota:vif_outbound_average=$(( 300 *  125 )) \
--property quota:vif_outbound_peak=$(( 300 * 375 )) \
--property quota:vif_outbound_burst=$(( 300 * 375 )) \
--property quota:vif_inbound_average=$(( 300 *  125 )) \
--property quota:vif_inbound_peak=$(( 300 * 375 )) \
--property quota:vif_inbound_burst=$(( 300 * 375 )) \
--property quota:disk_total_iops_sec=800 \
--property quota:disk_total_bytes_sec=$(( 70 * 1048576 ))

# server create
openstack server create --image ubuntu --network test-net --flavor medium test-ubuntu

# perform tests
$ iperf3 -c "ip_address_of_iperf3_server"
$ dd if=/dev/zero of=1GB bs=64k count=16k conv=fdatasync
$ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=1000M --readwrite=randrw --rwmixread=75

Expected result
===============
Network bandwidh will be limited under 300Mbps.
Disk iops will be limited under 800.
Disk bandwidh will be limited under 70MBps.

Actual result
=============
Network bandwidh was limited under 300Mbps.
Disk iops was unlimited.
Disk bandwidth was unlimited.

Environment
===========
1. Nova's version
(nova-compute)[nova@comp01 /]$ rpm -qa | grep nova
python2-novaclient-9.1.1-1.el7.noarch
openstack-nova-compute-16.0.3-2.el7.noarch
python-nova-16.0.3-2.el7.noarch
openstack-nova-common-16.0.3-2.el7.noarch

2. hypervisor
(nova-libvirt)[root@comp01 /]# rpm -qa | grep kvm
qemu-kvm-common-ev-2.9.0-16.el7_4.13.1.x86_64
libvirt-daemon-kvm-3.2.0-14.el7_4.7.x86_64
qemu-kvm-ev-2.9.0-16.el7_4.13.1.x86_64

2. Storage
(ceph-osd-0)[root@stor01 /]# ceph --version
ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)

3. Networking
Neutron with OpenVSwitch

Logs & Configs
==============
Please see following paste:
http://paste.openstack.org/show/677319/

** Affects: nova
     Importance: Undecided
         Status: New

** Description changed:

  Description
  ===========
  I use pike release.
  
  I tried to use extra_specs of flavors to limit instance's disk io and network bandwidth by using "Disk tuning" and "Bandwidth I/O".
  But "Disk tuning" was not worked and only "Bandwidth I/O" worked.
  
  I turned debug=on, and found nova.virt.libvirt.driver makes only
  <bandwith> in _get_guest_xml, without <iotune>.
  
  And I tried to use volume-type qos with image property to limit disk
  bandwith and iops, it works well as I expected.
- 
  
  Steps to reproduce
  ==================
  # make flavor with extra_specs
  openstack flavor create medium --vcpus 2 --ram 4096 --disk 40 \
  --property quota:vif_outbound_average=$(( 300 *  125 )) \
  --property quota:vif_outbound_peak=$(( 300 * 375 )) \
  --property quota:vif_outbound_burst=$(( 300 * 375 )) \
  --property quota:vif_inbound_average=$(( 300 *  125 )) \
  --property quota:vif_inbound_peak=$(( 300 * 375 )) \
  --property quota:vif_inbound_burst=$(( 300 * 375 )) \
  --property quota:disk_total_iops_sec=800 \
  --property quota:disk_total_bytes_sec=$(( 70 * 1048576 ))
  
  # server create
  openstack server create --image ubuntu --network test-net --flavor medium test-ubuntu
  
  # perform tests
  $ iperf3 -c "ip_address_of_iperf3_server"
  $ dd if=/dev/zero of=1GB bs=64k count=16k conv=fdatasync
  $ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=1000M --readwrite=randrw --rwmixread=75
  
- 
  Expected result
  ===============
  Network bandwidh will be limited under 300Mbps.
  Disk iops will be limited under 800.
  Disk bandwidh will be limited under 70MBps.
  
- 
  Actual result
  =============
  Network bandwidh was limited under 300Mbps.
  Disk iops was unlimited.
  Disk bandwidth was unlimited.
- 
  
  Environment
  ===========
  1. Nova's version
  nova-compute)[nova@comp01 /]$ rpm -qa | grep openstack-nova
  openstack-nova-compute-16.0.3-2.el7.noarch
  openstack-nova-common-16.0.3-2.el7.noarch
  
  2. hypervisor
- (nova-compute)[nova@comp01 /]$ rpm -qa | grep kvm
+ (nova-libvirt)[root@comp01 /]# rpm -qa | grep kvm
  qemu-kvm-common-ev-2.9.0-16.el7_4.13.1.x86_64
+ libvirt-daemon-kvm-3.2.0-14.el7_4.7.x86_64
  qemu-kvm-ev-2.9.0-16.el7_4.13.1.x86_64
- libvirt-daemon-kvm-3.2.0-14.el7_4.7.x86_6
  
  2. Storage
  (ceph-osd-0)[root@stor01 /]# ceph --version
  ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)
  
  3. Networking
  Neutron with OpenVSwitch
  
- 
  Logs & Configs
  ==============
  Please see following paste:
  http://paste.openstack.org/show/677319/

** Description changed:

  Description
  ===========
  I use pike release.
  
  I tried to use extra_specs of flavors to limit instance's disk io and network bandwidth by using "Disk tuning" and "Bandwidth I/O".
  But "Disk tuning" was not worked and only "Bandwidth I/O" worked.
  
  I turned debug=on, and found nova.virt.libvirt.driver makes only
  <bandwith> in _get_guest_xml, without <iotune>.
  
  And I tried to use volume-type qos with image property to limit disk
  bandwith and iops, it works well as I expected.
  
  Steps to reproduce
  ==================
  # make flavor with extra_specs
  openstack flavor create medium --vcpus 2 --ram 4096 --disk 40 \
  --property quota:vif_outbound_average=$(( 300 *  125 )) \
  --property quota:vif_outbound_peak=$(( 300 * 375 )) \
  --property quota:vif_outbound_burst=$(( 300 * 375 )) \
  --property quota:vif_inbound_average=$(( 300 *  125 )) \
  --property quota:vif_inbound_peak=$(( 300 * 375 )) \
  --property quota:vif_inbound_burst=$(( 300 * 375 )) \
  --property quota:disk_total_iops_sec=800 \
  --property quota:disk_total_bytes_sec=$(( 70 * 1048576 ))
  
  # server create
  openstack server create --image ubuntu --network test-net --flavor medium test-ubuntu
  
  # perform tests
  $ iperf3 -c "ip_address_of_iperf3_server"
  $ dd if=/dev/zero of=1GB bs=64k count=16k conv=fdatasync
  $ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=1000M --readwrite=randrw --rwmixread=75
  
  Expected result
  ===============
  Network bandwidh will be limited under 300Mbps.
  Disk iops will be limited under 800.
  Disk bandwidh will be limited under 70MBps.
  
  Actual result
  =============
  Network bandwidh was limited under 300Mbps.
  Disk iops was unlimited.
  Disk bandwidth was unlimited.
  
  Environment
  ===========
  1. Nova's version
- nova-compute)[nova@comp01 /]$ rpm -qa | grep openstack-nova
+ (nova-compute)[nova@comp01 /]$ rpm -qa | grep nova
+ python2-novaclient-9.1.1-1.el7.noarch
  openstack-nova-compute-16.0.3-2.el7.noarch
+ python-nova-16.0.3-2.el7.noarch
  openstack-nova-common-16.0.3-2.el7.noarch
  
  2. hypervisor
  (nova-libvirt)[root@comp01 /]# rpm -qa | grep kvm
  qemu-kvm-common-ev-2.9.0-16.el7_4.13.1.x86_64
  libvirt-daemon-kvm-3.2.0-14.el7_4.7.x86_64
  qemu-kvm-ev-2.9.0-16.el7_4.13.1.x86_64
  
  2. Storage
  (ceph-osd-0)[root@stor01 /]# ceph --version
  ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)
  
  3. Networking
  Neutron with OpenVSwitch
  
  Logs & Configs
  ==============
  Please see following paste:
  http://paste.openstack.org/show/677319/

-- 
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/1750319

Title:
  libvirt.driver doesn't make <iotune> when using extra_specs of flavor

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========
  I use pike release.

  I tried to use extra_specs of flavors to limit instance's disk io and network bandwidth by using "Disk tuning" and "Bandwidth I/O".
  But "Disk tuning" was not worked and only "Bandwidth I/O" worked.

  I turned debug=on, and found nova.virt.libvirt.driver makes only
  <bandwith> in _get_guest_xml, without <iotune>.

  And I tried to use volume-type qos with image property to limit disk
  bandwith and iops, it works well as I expected.

  Steps to reproduce
  ==================
  # make flavor with extra_specs
  openstack flavor create medium --vcpus 2 --ram 4096 --disk 40 \
  --property quota:vif_outbound_average=$(( 300 *  125 )) \
  --property quota:vif_outbound_peak=$(( 300 * 375 )) \
  --property quota:vif_outbound_burst=$(( 300 * 375 )) \
  --property quota:vif_inbound_average=$(( 300 *  125 )) \
  --property quota:vif_inbound_peak=$(( 300 * 375 )) \
  --property quota:vif_inbound_burst=$(( 300 * 375 )) \
  --property quota:disk_total_iops_sec=800 \
  --property quota:disk_total_bytes_sec=$(( 70 * 1048576 ))

  # server create
  openstack server create --image ubuntu --network test-net --flavor medium test-ubuntu

  # perform tests
  $ iperf3 -c "ip_address_of_iperf3_server"
  $ dd if=/dev/zero of=1GB bs=64k count=16k conv=fdatasync
  $ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=1000M --readwrite=randrw --rwmixread=75

  Expected result
  ===============
  Network bandwidh will be limited under 300Mbps.
  Disk iops will be limited under 800.
  Disk bandwidh will be limited under 70MBps.

  Actual result
  =============
  Network bandwidh was limited under 300Mbps.
  Disk iops was unlimited.
  Disk bandwidth was unlimited.

  Environment
  ===========
  1. Nova's version
  (nova-compute)[nova@comp01 /]$ rpm -qa | grep nova
  python2-novaclient-9.1.1-1.el7.noarch
  openstack-nova-compute-16.0.3-2.el7.noarch
  python-nova-16.0.3-2.el7.noarch
  openstack-nova-common-16.0.3-2.el7.noarch

  2. hypervisor
  (nova-libvirt)[root@comp01 /]# rpm -qa | grep kvm
  qemu-kvm-common-ev-2.9.0-16.el7_4.13.1.x86_64
  libvirt-daemon-kvm-3.2.0-14.el7_4.7.x86_64
  qemu-kvm-ev-2.9.0-16.el7_4.13.1.x86_64

  2. Storage
  (ceph-osd-0)[root@stor01 /]# ceph --version
  ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)

  3. Networking
  Neutron with OpenVSwitch

  Logs & Configs
  ==============
  Please see following paste:
  http://paste.openstack.org/show/677319/

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


Follow ups