You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ni...@apache.org on 2013/12/16 20:14:09 UTC
git commit: updated refs/heads/4.3 to 2724db6
Updated Branches:
refs/heads/4.3 307e05869 -> 2724db67f
Cloudstack-5077: reserve cpu and memory only when
vmware.reserve.cpu/mem are set to true. Insted of setting
the ovecommit values to one on upgrade, we popultate them
from the global values.
Signed off by : nitin mehta<ni...@citrix.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2724db67
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2724db67
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2724db67
Branch: refs/heads/4.3
Commit: 2724db67f637f146511e629a3d06136708242f5c
Parents: 307e058
Author: Bharat Kumar <bh...@citrix.com>
Authored: Mon Dec 16 11:13:23 2013 -0800
Committer: Nitin Mehta <ni...@citrix.com>
Committed: Mon Dec 16 11:13:51 2013 -0800
----------------------------------------------------------------------
.../com/cloud/upgrade/dao/Upgrade410to420.java | 2 +-
.../com/cloud/upgrade/dao/Upgrade420to421.java | 69 +++++++++++++++-----
.../vmware/resource/VmwareResource.java | 20 ++----
setup/db/db/schema-420to421.sql | 3 +-
4 files changed, 62 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index c2630b0..0b57a0c 100755
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@ -893,7 +893,7 @@ public class Upgrade410to420 implements DbUpgrade {
}else {
//update cluster_details table with the default overcommit ratios.
pstmt1.setLong(1,id);
- pstmt1.setString(2,"1");
+ pstmt1.setString(2,global_cpu_overprovisioning_factor);
pstmt1.execute();
pstmt2.setLong(1,id);
pstmt2.setString(2,"1");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
index d7eccc1..eb2327a 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
@@ -23,6 +23,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import com.cloud.hypervisor.Hypervisor;
import org.apache.log4j.Logger;
import com.cloud.utils.exception.CloudRuntimeException;
@@ -68,6 +69,8 @@ public class Upgrade420to421 implements DbUpgrade {
updateCpuOverprovisioning(conn);
}
+
+
private void updateCpuOverprovisioning(Connection conn) {
PreparedStatement pstmt1 = null;
PreparedStatement pstmt2 = null;
@@ -80,27 +83,49 @@ public class Upgrade420to421 implements DbUpgrade {
try {
pstmt1 = conn.prepareStatement("select value from `cloud`.`configuration` where name='cpu.overprovisioning.factor'");
result1 = pstmt1.executeQuery();
- String overprov = "1";
+ String cpuoverprov = "1";
+ if(result1.next()){
+ cpuoverprov = result1.getString(1);
+ }
+ pstmt1 = conn.prepareStatement("select value from `cloud`.`configuration` where name='mem.overprovisioning.factor'");
+ result1 = pstmt1.executeQuery();
+ String memoverprov = "1";
if(result1.next()){
- overprov = result1.getString(1);
+ memoverprov = result1.getString(1);
}
+
// Need to populate only when overprovisioning factor doesn't pre exist.
s_logger.debug("Starting updating user_vm_details with cpu/memory overprovisioning factors");
- pstmt2 = conn.prepareStatement("select id from `cloud`.`vm_instance` where removed is null and id not in (select vm_id from `cloud`.`user_vm_details` where name='cpuOvercommitRatio')");
+ pstmt2 = conn.prepareStatement("select id, hypervisor_type from `cloud`.`vm_instance` where removed is null and id not in (select vm_id from `cloud`.`user_vm_details` where name='cpuOvercommitRatio')");
pstmt3 = conn.prepareStatement("INSERT IGNORE INTO cloud.user_vm_details (vm_id, name, value) VALUES (?, ?, ?)");
result2 = pstmt2.executeQuery();
while (result2.next()) {
- //For cpu
- pstmt3.setLong(1, result2.getLong(1));
- pstmt3.setString(2, "cpuOvercommitRatio");
- pstmt3.setString(3, overprov);
- pstmt3.executeUpdate();
+ String hypervisor_type = result2.getString(2);
+ if (hypervisor_type.equalsIgnoreCase(Hypervisor.HypervisorType.VMware.name())) {
+ //For cpu
+ pstmt3.setLong(1, result2.getLong(1));
+ pstmt3.setString(2, "cpuOvercommitRatio");
+ pstmt3.setString(3, cpuoverprov);
+ pstmt3.executeUpdate();
+
+ // For memory
+ pstmt3.setLong(1, result2.getLong(1));
+ pstmt3.setString(2, "memoryOvercommitRatio");
+ pstmt3.setString(3, memoverprov); // memory overprovisioning was used to reserve memory in case of VMware.
+ pstmt3.executeUpdate();
+ } else {
+ //For cpu
+ pstmt3.setLong(1, result2.getLong(1));
+ pstmt3.setString(2, "cpuOvercommitRatio");
+ pstmt3.setString(3, cpuoverprov);
+ pstmt3.executeUpdate();
- // For memory
- pstmt3.setLong(1, result2.getLong(1));
- pstmt3.setString(2, "memoryOvercommitRatio");
- pstmt3.setString(3, "1"); // memory overprovisioning didn't exist earlier.
- pstmt3.executeUpdate();
+ // For memory
+ pstmt3.setLong(1, result2.getLong(1));
+ pstmt3.setString(2, "memoryOvercommitRatio");
+ pstmt3.setString(3, "1"); // memory overprovisioning didn't exist earlier.
+ pstmt3.executeUpdate();
+ }
}
s_logger.debug("Done updating user_vm_details with cpu/memory overprovisioning factors");
@@ -109,13 +134,23 @@ public class Upgrade420to421 implements DbUpgrade {
throw new CloudRuntimeException("Unable to update cpu/memory overprovisioning factors", e);
} finally {
try {
- if (pstmt1 != null)
+ if (pstmt1 != null && !pstmt1.isClosed()) {
pstmt1.close();
- if (pstmt2 != null)
+ }
+ if (pstmt2 != null && !pstmt2.isClosed()) {
pstmt2.close();
- if (pstmt3 != null)
+ }
+ if (pstmt3 != null && !pstmt3.isClosed()) {
pstmt3.close();
- } catch (SQLException e) {
+ }
+ if (result1 != null) {
+ result1.close();
+ }
+ if (result2 != null) {
+ result2.close();
+ }
+ }catch (SQLException e){
+
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index d5f3035..46d0e3e 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -2997,24 +2997,18 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
int getReservedMemoryMb(VirtualMachineTO vmSpec) {
if (vmSpec.getDetails().get(Config.VmwareReserveMem.key()).equalsIgnoreCase("true")) {
- return (int) (vmSpec.getMinRam() / (1024 * 1024));
- }else if (vmSpec.getMinRam() != vmSpec.getMaxRam()) {
- s_logger.warn("memory overprovisioning factor is set to "+ (vmSpec.getMaxRam()/vmSpec.getMinRam())+" ignoring the flag vmware.reserve.mem");
- return (int) (vmSpec.getMinRam() / (1024 * 1024));
+ return (int) (vmSpec.getMinRam() / (1024 * 1024));
}
return 0;
}
int getReservedCpuMHZ(VirtualMachineTO vmSpec) {
- if (vmSpec.getDetails().get(Config.VmwareReserveCpu.key()).equalsIgnoreCase("true")) {
- return vmSpec.getMinSpeed();
- }else if (vmSpec.getMinSpeed().intValue() != vmSpec.getMaxSpeed().intValue()) {
- s_logger.warn("cpu overprovisioning factor is set to "+ (vmSpec.getMaxSpeed().intValue()/vmSpec.getMinSpeed().intValue())+" ignoring the flag vmware.reserve.cpu");
- return vmSpec.getMinSpeed();
- }
- return 0;
- }
-
+ if (vmSpec.getDetails().get(Config.VmwareReserveCpu.key()).equalsIgnoreCase("true")) {
+ return vmSpec.getMinSpeed();
+ }
+ return 0;
+ }
+
// return the finalized disk chain for startup, from top to bottom
private String[] syncDiskChain(DatacenterMO dcMo, VirtualMachineMO vmMo, VirtualMachineTO vmSpec,
DiskTO vol, VirtualMachineDiskInfo diskInfo,
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/setup/db/db/schema-420to421.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-420to421.sql b/setup/db/db/schema-420to421.sql
index 302d44a..c09a1bb 100644
--- a/setup/db/db/schema-420to421.sql
+++ b/setup/db/db/schema-420to421.sql
@@ -24,7 +24,8 @@ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'manag
'The maximum size limit for S3 single part upload API(in GB). If it is set to 0, then it means always use multi-part upload to upload object to S3. If it is set to -1, then it means always use single-part upload to upload object to S3.');
INSERT IGNORE INTO `cloud`.`configuration` VALUES ("Storage", 'DEFAULT', 'management-server', "enable.ha.storage.migration", "true", "Enable/disable storage migration across primary storage during HA");
-
+UPDATE `cloud`.`configuration` SET description="Specify whether or not to reserve CPU based on CPU overprovisioning factor" where name="vmware.reserve.cpu";
+UPDATE `cloud`.`configuration` SET description="Specify whether or not to reserve memory based on memory overprovisioning factor" where name="vmware.reserve.mem";
-- Remove Windows Server 8 from guest_os_type dropdown to use Windows Server 2012
DELETE FROM `cloud`.`guest_os_hypervisor` where guest_os_id=168;
DELETE FROM `cloud`.`guest_os` where id=168;