Bug 1051160

Summary: Provisioning on RHEL 7 VHost creates slow guests
Product: Red Hat Satellite 5 Reporter: Jan Hutař <jhutar>
Component: ProvisioningAssignee: Stephen Herr <sherr>
Status: CLOSED ERRATA QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 560CC: dyordano, lpramuk, sherr, tkasparek, xdmoon
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: cobbler-2.0.7-43 spacewalk-java-2.0.2-65 Doc Type: Bug Fix
Doc Text:
Cause: When provisioning virtual guests on a RHEL 7 host the koan package depends on cobbler telling it what the OS is so that it can enable the proper performance-enhancing settings. This information has not previously been correctly provided by Satellite's cobbler. Consequence: Guests provisioned by Satellite on a RHEL 7 host would be very slow because no performance-enhancing options were used. Fix: Cobbler and Satellite have been updated to correctly know and provide the OS version info that koan requires. Result: Guests of RHEL 7 hosts are now appropriately quick.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-05-26 12:19:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 924189    

Description Jan Hutař 2014-01-09 19:08:21 UTC
Description of problem:
Installation of RHEL7 KVM guest from Satellite webUI to RHEL7 KVM host is about 2 times slower than to RHEL6 host.


Version-Release number of selected component (if applicable):
KVM host is RHEL7:
  koan-2.0.7-41.el7sat.noarch
  spacewalk-koan-2.0.1-3.el7sat.noarch
Satellite 5.6.0


How reproducible:
always


Steps to Reproduce:
1. Use Satellite webUI to provision RHEL7 KVM guest on RHEL7 KVM host. This
   command is issued:
# rhn_check -vv
[...]
- ['virt-install', '--connect', 'qemu:///system', '--name', 'jhutar3', '--ram', '800', '--vcpus', '1', '--autostart', '--nographics', '--virt-type', 'kvm', '--machine', 'pc', '--extra-args=ks=http://<fqdn>/cblr/svc/op/ks/system/localhost.localdomain:1:jhutar3 ksdevice=link kssendmac lang= text ', '--location', 'http://<fqdn>/ty/P3uBiKwM/', '--os-variant', 'generic26', '--disk', 'path=/var/lib/libvirt/images/jhutar3,size=5', '--network', 'bridge=virbr0,mac=00:16:3e:5f:38:37', '--wait', '0', '--noautoconsole']
[...]


Actual results:
It took about 44 minutes to install the virtual machine (with 800MB RAM). When I have tried command above manually with "bus=virtio" added to "--disk" and "model=virtio" to "--network", it took about 22 minutes (but manual "Force Shutdown" was needed at the end, do not know why).

When I have reinstalled mine KVM host to RHEL6 and used that to provision RHEL7 KVM guest, it took about 15 minutes (though kickstart was slightly different but package number seems to +- match). Manual "Force Shutdown" was needed at the end as well.


Expected results:
RHEL7 KVM guest should install in similar time on RHEL7 and RHEL6 KVM host.


Additional info:
Maybe also "--os-variant" have impact?

I can not compare the command with RHEL6 as koan there uses python API, but this might help:

[...]
D: handle_action{'action': "<?xml version='1.0'?>\n<methodCall>\n<methodName>kickstart_guest.initiate</methodName>\n<params>\n<param>\n<value><string><fqdn></string></value>\n</param>\n<param>\n<value><string>localhost.localdomain:1:jhutar1-sherr-rhel-7</string></value>\n</param>\n<param>\n<value><string>qemu</string></value>\n</param>\n<param>\n<value><int>170</int></value>\n</param>\n<param>\n<value><string>jhutar1-sherr-rhel-7</string></value>\n</param>\n<param>\n<value><int>800</int></value>\n</param>\n<param>\n<value><int>1</int></value>\n</param>\n<param>\n<value><int>3</int></value>\n</param>\n<param>\n<value><string>virbr0</string></value>\n</param>\n<param>\n<value><string>/var/lib/libvirt/images/jhutar1-sherr-rhel-7</string></value>\n</param>\n<param>\n<value><string> </string></value>\n</param>\n</params>\n</methodCall>\n", 'version': 2, 'id': 6216}
D: handle_action actionid = 6216, version = 2
D: do_call kickstart_guest.initiate('<fqdn>', 'localhost.localdomain:1:jhutar1-sherr-rhel-7', 'qemu', 170, 'jhutar1-sherr-rhel-7', 800, 1, 3, 'virbr0', '/var/lib/libvirt/images/jhutar1-sherr-rhel-7', ' '){'cache_only': None}
[...]

Comment 1 Jan Hutař 2014-01-09 19:10:51 UTC
Most probably related to bug 1029493.

Comment 2 Lukas Pramuk 2014-02-10 19:37:57 UTC
--os-variant', 'generic26' causes libvirt to choose an IDE disk !!!

If we want to get kvm acceleration involved we need to be more specific about --os-variant, as generic26 is not enough.

Or we can try to omit "--os-variant generic26" and see if libvirt OS guessing steps in.

Comment 3 Stephen Herr 2014-04-09 13:46:04 UTC
Unless you're reporting something new that has not been discussed up till now, I believe it is highly misleading to day that it creates guests without kvm acceleration. "Kvm acceleration" without any other modifiers would refer to whether the CPU is using kvm or being fully emulated with qemu, and unless I'm very wrong the CPU is still using kvm acceleration on RHEL 7.

I will take another look at this today to see what we can do.

Comment 4 Stephen Herr 2014-04-09 13:47:04 UTC
s/day/say

Comment 6 Stephen Herr 2014-04-09 20:35:32 UTC
Okay, I have an update that will resolve this issue IF the update is applied before the kickstart distros are created / synced / updated. This should be fine for real-world use, since it is probable that customers will apply the update long before RHEL 7 GA. Basically we are updating Satellite / cobbler to know the real os_version, not just stick in a 'generic26'. This will allow libvirt to use all available accelerations, including using virtio drivers for network and disk by default on hosts where they are available.

If you want to update distros that were created / synced before the update was applied then you can find the RHEL 7 distros in the list:
sudo cobbler distro list

And update them to know that they are RHEL 7 distros:
sudo cobbler distro edit --os-version rhel7 --name <distro_name>

The above should not be necessary for any distro created or first synced after the update is applied.

Committed to Spacewalk master:
e47ee0029ed9e3ff8a655fd936d6873053007a2a

Comment 13 errata-xmlrpc 2014-05-26 12:19:20 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-0541.html