You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2021/03/30 08:36:14 UTC
[cloudstack] branch 4.15 updated: server: Set free memory to zero
if greater than total memory (#4571)
This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.15
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.15 by this push:
new 03ad702 server: Set free memory to zero if greater than total memory (#4571)
03ad702 is described below
commit 03ad702c1be3466b982099ec8764a045411cf3bf
Author: davidjumani <dj...@gmail.com>
AuthorDate: Tue Mar 30 14:05:46 2021 +0530
server: Set free memory to zero if greater than total memory (#4571)
Fixes https://github.com/apache/cloudstack/issues/4566
Sets `memoryintfreekbs` to zero if it is greater than `memorykbs`. Caused by KVM returning the RSS memory of the process running the VM rather than the free memory inside the VM.
Co-authored-by: dahn <da...@gmail.com>
---
.../java/org/apache/cloudstack/api/response/UserVmResponse.java | 2 +-
.../src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java
index 44eaba7..ea5300e 100644
--- a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java
@@ -209,7 +209,7 @@ public class UserVmResponse extends BaseResponseWithTagInformation implements Co
private Long memoryKBs;
@SerializedName("memoryintfreekbs")
- @Param(description = "the internal memory thats free in vm")
+ @Param(description = "the internal memory that's free in vm or zero if it can not be calculated")
private Long memoryIntFreeKBs;
@SerializedName("memorytargetkbs")
diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
index 8e489f8..1589f01 100644
--- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
@@ -222,8 +222,11 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation<UserVmJo
userVmResponse.setDiskKbsWrite((long)vmStats.getDiskWriteKBs());
userVmResponse.setDiskIORead((long)vmStats.getDiskReadIOs());
userVmResponse.setDiskIOWrite((long)vmStats.getDiskWriteIOs());
- userVmResponse.setMemoryKBs((long)vmStats.getMemoryKBs());
- userVmResponse.setMemoryIntFreeKBs((long)vmStats.getIntFreeMemoryKBs());
+ long totalMemory = (long)vmStats.getMemoryKBs();
+ long freeMemory = (long)vmStats.getIntFreeMemoryKBs();
+ long correctedFreeMemory = freeMemory >= totalMemory ? 0 : freeMemory;
+ userVmResponse.setMemoryKBs(totalMemory);
+ userVmResponse.setMemoryIntFreeKBs(correctedFreeMemory);
userVmResponse.setMemoryTargetKBs((long)vmStats.getTargetMemoryKBs());
}