Starting with VirtualBox 4.2 the memory ballooning service formerly
known as VBoxBalloonCtrl
was renamed to
VBoxWatchdog, which now incorporates several host services that are meant
to be run in a server environment.
These services are:
Memory ballooning control, which automatically takes care of a VM's configured memory balloon (see Section 4.8.1, “Memory ballooning” for an introduction to memory ballooning). This especially is useful for server environments where VMs may dynamically require more or less memory during runtime.
The service periodically checks a VM's current memory balloon and its free guest RAM and automatically adjusts the current memory balloon by inflating or deflating it accordingly. This handling only applies to running VMs having recent Guest Additions installed.
Host isolation detection, which provides a way to detect whether the host cannot reach the specific VirtualBox server instance anymore and take appropriate actions, such as shutting down, saving the current state or even powering down certain VMs.
All configuration values can be either specified via command line or global extradata, whereas command line values always have a higher priority when set. Some of the configuration values also be be specified on a per-VM basis. So the overall lookup order is: command line, per-VM basis extradata (if available), global extradata.
The memory ballooning control inflates and deflates the memory balloon of VMs based on the VMs free memory and the desired maximum balloon size.
To set up the memory ballooning control the maximum ballooning size a VM can reach needs to be set. This can be specified via command line with
--balloon-max <Size in MB>
, on a per-VM basis extradata value with
VBoxManage setextradata <VM-Name> VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax <Size in MB>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax <Size in MB>
If no maximum ballooning size is specified by at least one of the parameters above, no ballooning will be performed at all.
Setting the ballooning increment in MB can be either done via command line with
--balloon-inc <Size in MB>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonIncrementMB <Size in MB>
Default ballooning increment is 256 MB if not specified.
Same goes with the ballooning decrement: Via command line with
--balloon-dec <Size in MB>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonDecrementMB <Size in MB>
Default ballooning decrement is 128 MB if not specified.
To define the lower limit in MB a balloon can be the command line with
--balloon-lower-limit <Size in MB>
can be used or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonLowerLimitMB <Size in MB>
is available. Default lower limit is 128 if not specified.
To detect whether a host is being isolated, that is, the host cannot reach the VirtualBox server instance anymore, the host needs to set an alternating value to a global extradata value within a time period. If this value is not set within that time period a timeout occurred and the so-called host isolation response will be performed to the VMs handled. Which VMs are handled can be controlled by defining VM groups and assigning VMs to those groups. By default no groups are set, meaning that all VMs on the server will be handled when no host response is received within 30 seconds.
To set the groups handled by the host isolation detection via command line:
--apimon-groups=<string[,stringN]>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/Groups <string[,stringN]>
To set the host isolation timeout via command line:
--apimon-isln-timeout=<ms>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationTimeoutMS <ms>
To set the actual host isolation response via command line:
--apimon-isln-response=<cmd>
or using a global extradata value with
VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationResponse <cmd>
The following response commands are available:
none
, which does nothing.
pause
, which pauses the
execution of a VM.
poweroff
, which shuts down
the VM by pressing the virtual power button. The VM will not have
the chance of saving any data or veto the shutdown process.
save
, which saves the current
machine state and powers off the VM afterwards. If saving the machine
state fails the VM will be paused.
shutdown
, which shuts down
the VM in a gentle way by sending an ACPI
shutdown event to the VM's operating system. The OS then has the
chance of doing a clean shutdown.