Bug 1133642 - Setting "Other OS" is default 32bit instead of 64bit and causes incorrect RAM size limit of 16GB for 64bit OS.
Summary: Setting "Other OS" is default 32bit instead of 64bit and causes incorrect RAM...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Virtualization Manager
Classification: Red Hat
Component: ovirt-engine
Version: 3.4.0
Hardware: x86_64
OS: Linux
high
low
Target Milestone: ovirt-3.6.0-rc
: 3.6.0
Assignee: Eli Mesika
QA Contact: sefi litmanovich
URL:
Whiteboard:
Depends On:
Blocks: 1218531
TreeView+ depends on / blocked
 
Reported: 2014-08-25 16:51 UTC by Sachin Raje
Modified: 2019-10-10 09:23 UTC (History)
20 users (show)

Fixed In Version: ovirt-3.6.0-alpha1
Doc Type: Bug Fix
Doc Text:
Previously, if you created a virtual machine and selected 'Other OS' for the Operating System field, the operation system type defaulted to 32 bit. As a result, when installing a 64 bit operating system not present in the list of operation systems, the virtual machine can use only up to 20 GB of RAM, which is the limit for 32 bit operation systems. With this update, the "Other OS" option now defaults to 64 bit. Any operating system installed in the virtual machine is allowed to use up to 4TB of memory if it is capable for it. 32 bit operating systems are still limited to 20 GB of RAM.
Clone Of:
: 1218531 (view as bug list)
Environment:
Last Closed: 2016-03-09 20:37:22 UTC
oVirt Team: Virt
Target Upstream Version:
sherold: Triaged+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Knowledge Base (Solution) 1162773 0 None None None Never
Red Hat Product Errata RHEA-2016:0376 0 normal SHIPPED_LIVE Red Hat Enterprise Virtualization Manager 3.6.0 2016-03-10 01:20:52 UTC
oVirt gerrit 35579 0 master ABANDONED osinfo: Add 64-bit versions of linux systems. Never
oVirt gerrit 38280 0 master MERGED core: change other OS to 64bit Never

Description Sachin Raje 2014-08-25 16:51:58 UTC
Description of problem:
When a guest created with more than 16GB memory or try to extend VM memory more than 16GB, VM is failed to start with following error:

"Cannot run VM. Memory size exceeds supported limit for given cluster version."


Version-Release number of selected component (if applicable):
rhevm-3.4.1-0.31.el6ev.noarch

How reproducible:
always


Steps to Reproduce:
1. Create new VM or edit existing VM Memory Size to "32768 MB" from RHEVM GUI.
2. Ensure that the installed VM OS is 64-bit so that it support more than 16 GB memory.
3. Now, Start the VM.


Actual results:
VM failed to start with following error, 
"Cannot run VM. Memory size exceeds supported limit for given cluster version."


Expected results:
VM should start without any error.


Additional info:
In RHEVM GUI portal, if we select Operating System to "Red hat Enterprise Linux 6.x x64" in guest general properties, it allows VM to start with 32 GB memory.

Comment 2 Omer Frenkel 2014-08-26 07:46:49 UTC
the OS "Ubuntu Precise Pangolin LTS" derives from other which is defined to be 32bit, in that case, engine has limit for 20gb:
$ engine-config --get VM32BitMaxMemorySizeInMB
VM32BitMaxMemorySizeInMB: 20480 version: general

for 64bit, the value change according to cluster version:
$ engine-config --get VM64BitMaxMemorySizeInMB
VM64BitMaxMemorySizeInMB: 524288 version: 3.0
VM64BitMaxMemorySizeInMB: 2097152 version: 3.1
VM64BitMaxMemorySizeInMB: 2097152 version: 3.2
VM64BitMaxMemorySizeInMB: 2097152 version: 3.3
VM64BitMaxMemorySizeInMB: 4096000 version: 3.4
VM64BitMaxMemorySizeInMB: 4096000 version: 3.5

not sure if Ubuntu should be 32 or 64bit?

also, there is a bug in the code that will prevent changing the config value for VM32BitMaxMemorySizeInMB to be used, using the engine-config.

for now, you can manually set a different value for the specific cluster version in the db, or add osinfo file to change the specific ubuntu version you are using to 64 bit (i think the osinfo approach is sager, as changing the config will apply to ALL 32bit os)

Comment 7 Martin Betak 2014-09-04 13:33:46 UTC
If given OS doesn't have the x64 suffix it is taken to be 32bit and appropriate memory limits apply. If your selected system doesn't have 64 bit counterpart, please select any other 64 bit linux system, e.g. RHEL 6.x x64 if you want to run linux VMs with large memory.

In future we should add support for x64 versions of more linux systems.

Comment 11 Sven Kieske 2015-02-17 09:34:46 UTC
could this stuff get backported to 3.5.2 ? I think it's a really important and
common use case!

Comment 12 Omer Frenkel 2015-02-17 16:24:23 UTC
summing what we would like to have:
make "other OS" 32bit by default, this will cause all existing OSs to be 32bit
including all different linux OSs reported in this bug..
so need to make sure 32bit OSs (like winXp, rhel3, freeBSD..) stay this way.

Comment 13 Sven Kieske 2015-02-18 10:30:01 UTC
rhel3 should be no problem, it has a dedicated entry.
if this is derived from "other OS" I'd encourage the devs to fix this instead.

imho the default today is that you want 64 bit capabilities.

wanting "32bit only" needs special care when creating a vm.

I get no warning when I select "other OS/linux" that I can't use
more than a certain amount of ram.

you also get no warning when you specify an invalid amount of ram for this
selected os.

I really think this deserves a separate BZ, to block on RAM amounts
which are not supported by the selected OS type.

you should not generate weird engine.log errors but directly block at input
(the same is true for vm creation via rest).

I can not believe that in a modern product 32 bit is the default for anything
like this.

Comment 14 Omer Frenkel 2015-02-18 15:51:49 UTC
(In reply to Sven Kieske from comment #13)
> rhel3 should be no problem, it has a dedicated entry.
> if this is derived from "other OS" I'd encourage the devs to fix this
> instead.
> 
> imho the default today is that you want 64 bit capabilities.
> 

this is exactly what this RFE is for:
make the default to be 64bit, fix the specific 32bit

> wanting "32bit only" needs special care when creating a vm.
> 
> I get no warning when I select "other OS/linux" that I can't use
> more than a certain amount of ram.
> 
> you also get no warning when you specify an invalid amount of ram for this
> selected os.
> 
> I really think this deserves a separate BZ, to block on RAM amounts
> which are not supported by the selected OS type.
> 
> you should not generate weird engine.log errors but directly block at input
> (the same is true for vm creation via rest).
> 

you get error when trying to run the vm, not when entering the value, because it is cluster depended.

Comment 15 Sven Kieske 2015-03-11 13:43:10 UTC
will this get backported to 3.5.2?

I think this is a really important and much needed fix.
also it seems not very intrusive to me.

Comment 16 Michal Skrivanek 2015-03-16 08:50:56 UTC
on the other hand changing a default during the maintenance releases is not a good idea.
We need to confirm the behavior with CloudForms and Foreman as they use "Other" in their flows quite often

Comment 17 Yaniv Lavi 2015-03-16 11:17:15 UTC
(In reply to Michal Skrivanek from comment #16)
> on the other hand changing a default during the maintenance releases is not
> a good idea.
> We need to confirm the behavior with CloudForms and Foreman as they use
> "Other" in their flows quite often

I understand this doesn't affect anything other than memory limitation. Am i incorrect?

Comment 18 Michal Skrivanek 2015-03-16 11:31:46 UTC
I hope that's it, Roy?

Comment 22 sefi litmanovich 2015-07-23 10:50:39 UTC
Verified with ovirt-engine-3.6.0-0.0.master.20150627185750.git6f063c1.el6.noarch.

[root@user ~]# engine-config --get VM64BitMaxMemorySizeInMB
VM64BitMaxMemorySizeInMB: 524288 version: 3.0
VM64BitMaxMemorySizeInMB: 2097152 version: 3.1
VM64BitMaxMemorySizeInMB: 2097152 version: 3.2
VM64BitMaxMemorySizeInMB: 2097152 version: 3.3
VM64BitMaxMemorySizeInMB: 4096000 version: 3.4
VM64BitMaxMemorySizeInMB: 4096000 version: 3.5
VM64BitMaxMemorySizeInMB: 4194304 version: 3.6

[root@user ~]# grep -E 'derivedFrom' /usr/share/ovirt-engine/conf/osinfo-defaults.properties
#     Specify the 'derivedFrom' key and the os id to inherit all its values except id.
os.other_linux.derivedFrom.value = other
os.rhel_3.derivedFrom.value = other_linux
os.rhel_3x64.derivedFrom.value = other_linux
os.rhel_4.derivedFrom.value = rhel_3
os.rhel_4x64.derivedFrom.value = rhel_3x64
os.rhel_5.derivedFrom.value = rhel_4
os.rhel_5x64.derivedFrom.value = rhel_4x64
os.rhel_6.derivedFrom.value = rhel_5
os.rhel_6x64.derivedFrom.value = rhel_5x64
os.rhel_7x64.derivedFrom.value = rhel_6x64
os.windows_xp.derivedFrom.value = other
os.windows_2003.derivedFrom.value = windows_xp
os.windows_2008.derivedFrom.value = windows_2003
os.windows_2003x64.derivedFrom.value = windows_2003
os.windows_7.derivedFrom.value = windows_xp
os.windows_7x64.derivedFrom.value = windows_7
os.windows_2008x64.derivedFrom.value = windows_2003x64
# os.Windows2008R2x64.derivedFrom.value = windows2008
os.windows_2008R2x64.derivedFrom.value = windows_2008x64
os.windows_8.derivedFrom.value = windows_7
os.windows_8x64.derivedFrom.value = windows_7x64
os.windows_2012x64.derivedFrom.value = windows_2008x64
os.windows_2012R2x64.derivedFrom.value = windows_2012x64
os.sles_11.derivedFrom.value = other_linux
os.ubuntu_12_04.derivedFrom.value = other_linux
os.ubuntu_12_10.derivedFrom.value = ubuntu_12_04
os.ubuntu_13_04.derivedFrom.value = ubuntu_12_04
os.ubuntu_13_10.derivedFrom.value = ubuntu_13_04
os.ubuntu_14_04.derivedFrom.value = ubuntu_13_10
os.debian_7.derivedFrom.value = ubuntu_12_04
os.freebsd.derivedFrom.value = other
os.freebsdx64.derivedFrom.value = freebsd
os.other_ppc64.derivedFrom.value = other
os.other_linux_ppc64.derivedFrom.value = other_ppc64
os.rhel_6_ppc64.derivedFrom.value = other_linux_ppc64
os.sles_11_ppc64.derivedFrom.value = other_linux_ppc64
os.ubuntu_14_04_ppc64.derivedFrom.value = other_linux_ppc64
os.rhel_7_ppc64.derivedFrom.value = rhel_6_ppc64

[root@slitmano32 ~]# grep -E 'bus' /usr/share/ovirt-engine/conf/osinfo-defaults.properties
# CPU architecture (*not* the bus width 64/32 bit). Currently only x86_64 is supported
os.other.bus.value = 64
os.rhel_3.bus.value = 32
os.windows_xp.bus.value = 32
os.windows_2003x64.bus.value = 64
os.windows_7x64.bus.value = 64
os.freebsd.bus.value = 32
os.freebsdx64.bus.value = 64

Tried to start a vm with > 4TB (4194304MB). result:

Cannot run VM. Memory size exceeds supported limit for given cluster version.
as expected

Tried to start a vm with ~= 4TB (4000000MB). result:

Cannot run VM. There is no host that satisfies current scheduling constraints. See below for details:
The host monique-vds05.tlv.redhat.com did not satisfy internal filter Memory because has availabe 7252 MB memory. Insufficient free memory to run the VM.
as expected due to my host's ability.

Comment 25 errata-xmlrpc 2016-03-09 20:37:22 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.

https://rhn.redhat.com/errata/RHEA-2016-0376.html


Note You need to log in before you can comment on or make changes to this bug.