[pve-devel] [PATCH] Balloon ugly hack

Derumier Alexandre aderumier at odiso.com
Fri Sep 16 04:46:26 CEST 2011


add balloon:  parameter to config file

and set balloon at vm start.

Signed-off-by: Derumier Alexandre <aderumier at odiso.com>
---
 PVE/QemuServer.pm |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 1d14060..aa2b184 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -187,6 +187,12 @@ my $confdesc = {
 	minimum => 16,
 	default => 512,
     },
+    balloon => {
+        optional => 1,
+        type => 'integer',
+        description => "Amount of target RAM for the VM in MB.",
+        default => 0,
+    },
     keyboard => {
 	optional => 1,
 	type => 'string',
@@ -2095,6 +2101,7 @@ sub config_to_command {
     #my $soundhw = $conf->{soundhw} || $defaults->{soundhw};
     #push @$cmd, '-soundhw', 'es1370';
     #push @$cmd, '-soundhw', $soundhw if $soundhw;
+    push @$cmd, '-device', 'virtio-balloon-pci,id=balloon0' if $conf->{balloon};
 
     if ($conf->{watchdog}) {
 	my $wdopts = parse_watchdog($conf->{watchdog});
@@ -2330,6 +2337,28 @@ sub vm_start {
 	    eval { vm_monitor_command($vmid, $cmd, 1); };
 	}
 
+        if($conf->{balloon})
+        {
+          my $newmemorysize=0;
+          my $timewait=0;
+          #set balloon
+          print "try to balloon to $conf->{balloon}\n";
+          vm_balloonset($vmid,$conf->{balloon});
+          #display memory until balloon activate
+          $cmd = "info balloon";
+          while ($conf->{balloon} ne $newmemorysize && $timewait < 120) {
+             my $result=vm_monitor_command ($vmid, $cmd, 1);
+             if ($result =~ m/^balloon: actual=(\d+)$/) {
+                $newmemorysize=$1;
+                print "current memory:$newmemorysize\n";
+             }
+             $timewait++;
+             sleep 1;
+          }
+        print "can't set balloon to $conf->{balloon}, do you have balloon device driver installed?\n" if $timewait > 60;
+
+        }
+
     });
 }
 
@@ -2809,4 +2838,11 @@ sub print_pci_addr {
 
 }
 
+sub vm_balloonset {
+    my ($vmid,$value) = @_;
+
+    vm_monitor_command ($vmid, "balloon $value", 1);
+
+}
+
 1;
-- 
1.7.2.5



More information about the pve-devel mailing list