diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/MemStat.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/MemStat.java index afcdf976be5..d62e1a24ce9 100644 --- a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/MemStat.java +++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/linux/MemStat.java @@ -35,6 +35,7 @@ public class MemStat { protected final static String FREE_KEY = "MemFree"; protected final static String CACHE_KEY = "Cached"; protected final static String TOTAL_KEY = "MemTotal"; + protected final static String BUFFER_KEY = "Buffers"; long reservedMemory; long overCommitMemory; @@ -55,7 +56,7 @@ public class MemStat { } public long getAvailable() { - return getFree() + getCache(); + return getFree() + getCache() + getBuffer(); } public long getFree() { @@ -66,6 +67,10 @@ public class MemStat { return _memStats.get(CACHE_KEY); } + public long getBuffer() { + return _memStats.get(BUFFER_KEY); + } + public void refresh() { File f = new File(MEMINFO_FILE); try (Scanner scanner = new Scanner(f,"UTF-8")) { diff --git a/plugins/hypervisors/kvm/src/test/java/org/apache/cloudstack/utils/linux/MemStatTest.java b/plugins/hypervisors/kvm/src/test/java/org/apache/cloudstack/utils/linux/MemStatTest.java index 5a2fda87d08..50d4b006e13 100644 --- a/plugins/hypervisors/kvm/src/test/java/org/apache/cloudstack/utils/linux/MemStatTest.java +++ b/plugins/hypervisors/kvm/src/test/java/org/apache/cloudstack/utils/linux/MemStatTest.java @@ -48,7 +48,7 @@ public class MemStatTest { MemStat memStat = new MemStat(); Assert.assertEquals(memStat.getTotal(), 5970161664L); - Assert.assertEquals(memStat.getAvailable(), 2829840384L); + Assert.assertEquals(memStat.getAvailable(), 3164520448L); Assert.assertEquals(memStat.getFree(), 160514048L); Assert.assertEquals(memStat.getCache(), 2669326336L); }