Skip to content

Commit 7da1041

Browse files
bradh352jschoiRR
authored andcommitted
KVM memballooning requires free page reporting and autodeflate (apache#11932)
1 parent f629587 commit 7da1041

4 files changed

Lines changed: 25 additions & 4 deletions

File tree

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1388,7 +1388,13 @@ public String getMemBalloonStatsPeriod() {
13881388
@Override
13891389
public String toString() {
13901390
StringBuilder memBalloonBuilder = new StringBuilder();
1391-
memBalloonBuilder.append("<memballoon model='" + memBalloonModel + "'>\n");
1391+
memBalloonBuilder.append("<memballoon model='" + memBalloonModel + "'");
1392+
/* Version integer format: major * 1,000,000 + minor * 1,000 + release.
1393+
* Require: libvirt 6.9.0, qemu 5.1.0 */
1394+
if (memBalloonModel != MemBalloonModel.NONE && s_qemuVersion >= 5001000 && s_libvirtVersion >= 6009000) {
1395+
memBalloonBuilder.append(" autodeflate='on' freePageReporting='on'");
1396+
}
1397+
memBalloonBuilder.append(">\n");
13921398
if (StringUtils.isNotBlank(memBalloonStatsPeriod)) {
13931399
memBalloonBuilder.append("<stats period='" + memBalloonStatsPeriod +"'/>\n");
13941400
}

plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public void testDomainXMLParser() {
186186
"<alias name='video0'/>" +
187187
"<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>" +
188188
"</video>" +
189-
"<memballoon model='virtio'>" +
189+
"<memballoon model='virtio' autodeflate='on' freePageReporting='on'>" +
190190
"<stats period='60'/>" +
191191
"<alias name='balloon0'/>" +
192192
"<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>" +
@@ -369,7 +369,7 @@ public void testDomainXMLParserWithoutModelName() {
369369
" <redirdev bus='usb' type='spicevmc'>\n" +
370370
" <address type='usb' bus='0' port='3'/>\n" +
371371
" </redirdev>\n" +
372-
" <memballoon model='virtio'>\n" +
372+
" <memballoon model='virtio' autodeflate='on' freePageReporting='on'>\n" +
373373
" <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>\n" +
374374
" </memballoon>\n" +
375375
" </devices>\n" +

plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,21 @@ public void memBalloonDefTestNone() {
464464

465465
@Test
466466
public void memBalloonDefTestVirtio() {
467+
LibvirtVMDef.setGlobalQemuVersion(5001000L);
468+
LibvirtVMDef.setGlobalLibvirtVersion(6009000L);
469+
String expectedXml = "<memballoon model='virtio' autodeflate='on' freePageReporting='on'>\n<stats period='60'/>\n</memballoon>";
470+
MemBalloonDef memBalloonDef = new MemBalloonDef();
471+
memBalloonDef.defVirtioMemBalloon("60");
472+
473+
String xmlDef = memBalloonDef.toString();
474+
475+
assertEquals(expectedXml, xmlDef);
476+
}
477+
478+
@Test
479+
public void memBalloonDefTestVirtioOld() {
480+
LibvirtVMDef.setGlobalQemuVersion(2006000L);
481+
LibvirtVMDef.setGlobalLibvirtVersion(9008L);
467482
String expectedXml = "<memballoon model='virtio'>\n<stats period='60'/>\n</memballoon>";
468483
MemBalloonDef memBalloonDef = new MemBalloonDef();
469484
memBalloonDef.defVirtioMemBalloon("60");

plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateVolumeCommandWrapperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public class LibvirtMigrateVolumeCommandWrapperTest {
208208
" <alias name='watchdog0'/>\n" +
209209
" <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>\n" +
210210
" </watchdog>\n" +
211-
" <memballoon model='virtio'>\n" +
211+
" <memballoon model='virtio' autodeflate='on' freePageReporting='on'>\n" +
212212
" <alias name='balloon0'/>\n" +
213213
" <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>\n" +
214214
" </memballoon>\n" +

0 commit comments

Comments
 (0)