Hi,
About half a year ago I installed a stock CentOS 6.0/64bit onto an Intel server to virtualize our Linux fileserver and four WinXP boxes with rdp each.
Since recent times I didn't do any upgrades of the server's OS. Now I have CentOS 6.2.
After an upgrade I noticed that all virtual cpu name changed to QEMU Virtual CPU version (cpu64-rhel6)
The new features were 1) The ability to specify cpu type and even exact capabilities 2) The ability to set the topology. It's good because before this ability appears WinXP guests won't use more than two cores.
I got problem with both of these features.
First, I can't manually specify cpu type 'qemu64' - virtmanager says my physical CPU doesn't have some abilities. But if no CPU is specified, it is reported as 64bit
Second, a killer app on one of WinXP servers stopped working since upgrade. It's a russian proprietary accounting app named 1C ver. 8.1 (1cv8.exe). It would just hang loading single virtual CPU to 100%. I traced by trial-and-error that the problem is related to virtual CPU identification. Following solution would help: <cpu match='exact'> <model>Penryn</model> <vendor>Intel</vendor> <feature policy='require' name='tm2'/> <feature policy='require' name='est'/> <feature policy='require' name='monitor'/> <feature policy='require' name='ds'/> <feature policy='require' name='ss'/> <feature policy='require' name='vme'/> <feature policy='require' name='ht'/> <feature policy='require' name='dca'/> <feature policy='require' name='pbe'/> <feature policy='require' name='tm'/> <feature policy='require' name='vmx'/> <feature policy='require' name='ds_cpl'/> <feature policy='require' name='xtpr'/> <feature policy='require' name='acpi'/> <feature policy='disable' name='nx'/> <feature policy='disable' name='pae'/> </cpu> It wasn't working before I disabled PAE and NX. Double checked. If I delete <cpu> part and thus leave it 'default', the application won't work.
Third, initially I couldn't use more than two cores with single instance of WinXP because every core was identified as a whole CPU and WinXP is limited to two CPU's. So the idea is to allocate 4 cores and specify topology as 2 cpu, 2 cores, 1 thead. But if I specify ANY cpu topology manually, WinXP uses 100% of all physical CPU cores assigned to them even if guest OS's load is zero. By the way, I got this behaviour from the very beginning if ACPI was turned off for guest OS (which was default). So I rolled back to NOT specifying CPU topology and allocating only two cores to WinXP. Bad... BUT it started working properly after I did the aforementioned 'optimisation' for tnat WinXP instance. Now I have it with 4 cores assigned. Mystery!
Help me please, what did I do wrong way?
Best regards, Dmitry Mikhailov
Server configuration: 2x Intel(R) Xeon(R) CPU E5420 @ 2.50GHz 2x 2GB DDR-II FBDIMM Intel motherboard with 5000P Chipset
Server's Mission: virtualization host system. Virtualized OS's: 1xFile server on CentOS 5.5/32bit 4xWinXP machines for rdesktop each.
Software versions: Before: The kernel was 2.6.32-71.el6.x86_64 I'm sorry I don't have any data on software versions before upgrade. But it was stock CentOS 6.0. I didn't use CR. After: kernel-2.6.32-220.4.1.el6.x86_64 libvirt-0.9.4-23.el6_2.4.x86_64 qemu-kvm-0.12.1.2-2.209.el6_2.4.x86_64
On Thu, February 16, 2012 1:24 pm, Dmitry E. Mikhailov wrote:
Hi,
About half a year ago I installed a stock CentOS 6.0/64bit onto an Intel server to virtualize our Linux fileserver and four WinXP boxes with rdp each.
Since recent times I didn't do any upgrades of the server's OS. Now I have CentOS 6.2.
After an upgrade I noticed that all virtual cpu name changed to QEMU Virtual CPU version (cpu64-rhel6)
Second, a killer app on one of WinXP servers stopped working since upgrade. It's a russian proprietary accounting app named 1C ver. 8.1 (1cv8.exe). It would just hang loading single virtual CPU to 100%. I traced by trial-and-error that the problem is related to virtual CPU identification. Following solution would help:
<cpu match='exact'> <model>Penryn</model> <vendor>Intel</vendor> <feature policy='require' name='tm2'/> <feature policy='require' name='est'/> <feature policy='require' name='monitor'/> <feature policy='require' name='ds'/> <feature policy='require' name='ss'/> <feature policy='require' name='vme'/> <feature policy='require' name='ht'/> <feature policy='require' name='dca'/> <feature policy='require' name='pbe'/> <feature policy='require' name='tm'/> <feature policy='require' name='vmx'/> <feature policy='require' name='ds_cpl'/> <feature policy='require' name='xtpr'/> <feature policy='require' name='acpi'/> <feature policy='disable' name='nx'/> <feature policy='disable' name='pae'/> </cpu> It wasn't working before I disabled PAE and NX. Double checked. If I delete <cpu> part and thus leave it 'default', the application won't work.
Dmitry,
I'd like to thank you for this post. I was having the same issue as your number 2. For me, it was an application running on windows 7, but the description of it loading at 100% was exact. I too went down the path of the virtual cpu change and setting the cpu type. I never managed to solve it until i say your post. I had the exact same require settings, but no disable settings. For my app, all I had to do was disable NX. I still have PAE enabled. Rather I have the generic feature enabled instead of tied to a CPU.
Up until now, I had marked it down as bios issue, since I believe the bios had changed from centos 5.7 to 6.2.
I had put the issue on a back burner since it wasn't a critical app and I was able to run in on a physical windows 7 box.
Have you checked /usr/share/qemu-kvm/cpu-model/cpu-x86_64.conf to see what has changed from 6.0 to 6.2? The equivalent doesn't exist on my centos 5.7 box, so I'm having trouble determining the defaults from 5.7.
Brad -- Bradley Leonard EMail: bradley at stygianresearch.com
Rob - "The hills are alive with the..the..sound of monkeys?" Bucky - "It's in the key of delicious."
Life is simple. Humans make it complicated.