CLOUDSTACK-8678: Reserve RAM for KVM host OS

Use host.reserved.ram.mb agent property to modify total system RAM
before reporting to management server.

Remove dom0ram variable and its min/max calculation. Just reserve a
default of 1GB, unless overridden by host.reserved.mem.mb property.
This commit is contained in:
Kevin McCormick 2015-08-31 11:11:17 -07:00
parent dd9ba48efa
commit 99d20234d4

View File

@ -263,7 +263,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
private String _updateHostPasswdPath;
private int _dom0MinMem;
private long _dom0MinMem;
protected boolean _disconnected = true;
protected int _cmdsTimeout;
@ -791,7 +791,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
_videoRam = NumbersUtil.parseInt(value, 0);
value = (String)params.get("host.reserved.mem.mb");
_dom0MinMem = NumbersUtil.parseInt(value, 0) * 1024 * 1024;
// Reserve 1GB unless admin overrides
_dom0MinMem = NumbersUtil.parseInt(value, 1024) * 1024 * 1024L;
value = (String) params.get("kvmclock.disable");
if (Boolean.parseBoolean(value)) {
@ -2605,16 +2606,13 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
info.add((int)cpus);
info.add(speed);
// Report system's RAM as actual RAM minus host OS reserved RAM
ram = ram - _dom0MinMem;
info.add(ram);
info.add(cap);
long dom0ram = Math.min(ram / 10, 768 * 1024 * 1024L);// save a maximum
// of 10% of
// system ram or
// 768M
dom0ram = Math.max(dom0ram, _dom0MinMem);
info.add(dom0ram);
info.add(_dom0MinMem);
info.add(cpuSockets);
s_logger.debug("cpus=" + cpus + ", speed=" + speed + ", ram=" + ram + ", dom0ram=" + dom0ram + ", cpu sockets=" + cpuSockets);
s_logger.debug("cpus=" + cpus + ", speed=" + speed + ", ram=" + ram + ", _dom0MinMem=" + _dom0MinMem + ", cpu sockets=" + cpuSockets);
return info;
}