VBOX: Adjust the set_cpu_usage() and set_network_usage() function prototypes to use ints and handle the preference conversion in the calling function.
VBOX: Set the minimum CPU usage value to 5%, if for some reason somebody chooses 0% (on purpose or bug) VirtualBox goes nuts. This should give the VM at least enough time to render a few frames and eventually boot.
controller to use. It can be specified by adding the following
tags to vbox_job.xml:
<vm_disk_controller_type></vm_disk_controller_type>
<vm_disk_controller_model></vm_disk_controller_model>
Executing vboxmanage --help will list the available options in the
storeagectl section.
Deleting stale snapshots now consists of enumerating the existing
snapshots and deleting all but the most recent snapshot. This fixes
the problem where, for one reason or another, a snapshot could not
be deleted at one point in time. The wrapper would just continue to
create new ones and was unable to successfully deal with the older
ones. Disk space would eventually run out.
- Perform snapshots at most once every ten minutes.
- Client suspend/resume messages behave the same.
- Client no heartbeat/quit messages cause the wrapper to just
poweroff the VM.
On startup check to see if the last checkpoint time is greater than 0,
if so, start from the most recent snapshot.
- VBOX: If we receieve the status message of no heartbeat or quit, set
the temporary delay to 5 minutes. If the wrapper is terminated during
the middle of a snapshot, hopefully this will give VirtualBox enough
time to complete the snapshot. Restarting the BOINC job should then
poweroff the VM and restore from the last snapshot.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25469
to a quit request. On older XP machines it might speed up the memory
dump to disk.
- client: Increase the quit request timeout from 10 seconds to 60 seconds for
machines running VMs and slow disk drives. It should give the VM enough
time to gracefully shutdown and not give boinc reason to kill the wrapper.
client/
app.h
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25433
latency issues for volunteers.
- VBOX: If the port forwarding preferred port isn't usable, try asking
the OS for one.
- VBOX: On a failure, get the VM process exit code and report it with
the rest of the stderr spew.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=25133
core client. Next commit will create an extra "VM Console"
button in the manager when detected. Volunteers will just have
to click the button to see what is going on with the VM.
api/
boinc_api.cpp, .h
samples/vboxwrapper
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=25035
<enable_remotedesktop/> specified in its vbox_job.xml file.
NOTE: It does require the VirtualBox extension pack, but that
is freely available on the VirtualBox download page.
samples/vboxwrapper
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=25034
network usage.
- VBOX: For errors where an error code is specified in the output,
use that value when returning from vbm_open(). Make it easier
to track failure rates by problem type in the ops pages.
(Windows Only)
- VBOX: Try making the process of extracting the hypervisor system
log more robust, make a temp copy of it in the slot directory.
Avoid exclusive file lock issues since VboxSvc will still be
logging to it.
- VBOX: Change the session lock text to make it clearer that the
use of other VirtualBox management tools can cause a problem.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24990
extract the hypervisor system log.
- VBOX: Report the hypervisor system log with any failed vboxmanage
command that happens during the phase where we setup the VM.
samples/vboxwrapper/
vbox.cpp, .h
svn path=/trunk/boinc/; revision=24977
log as well as the VM execution log. Maybe the hypervisor log
will tell us what is up with the virtual floppy device.
- VBOX: Don't retry commands that are expected to fail in normal use
cases. It slows down getting the VM up and running.
- VBOX: After starting the VM, use a timed loop waiting for the initial
VM state change instead of just waiting for 5 seconds. Older
machines can take longer than 5 seconds to switch from poweroff
to starting. If we hit the main poll loop in that state the wrapper
thinks we have crashed.
- VBOX: Strip carriage returns from all the vboxmanage output on
Windows.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24967
treat premature events as failures. Avoids false positive results.
- VBOX: Log the VM Execution log if a premature shutdown event has happened.
- VBOX: Rename config option max_elapsed_time to job_duration. Choosing
max_elapsed_time turned out to be a bad choice in that its purpose
became intermixed with the credit issue(s).
samples/vboxwrapper/
vbox.cpp,.h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24894
allow specification of guest port only.
Change tag to <pf_guest_port>.
Separate getting port from registering firewall rule
svn path=/trunk/boinc/; revision=24891
Apparently when the VM is removed from the VirtualBox server process
it automatically deletes the floppy image from the media registry.
- VBOX: If a VM crashes for one reason or another, append the VM execution
log file to the stderr.txt file. I believe this is what is going on with
Richard Mitnick's computer. At the very least we should be able to give
this to the VirtualBox guys.
- VBOX: Introduce a way to re-execute commands when a session lock
event is detected. A session lock event happens when a volunteer is
tweaking something about the VM while vboxwrapper is attempting to query
state information.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24887
id is appended after the name instead of after the extension. Avoid problems
with the VirtualBox interface.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24880
environment and they suspend/resume the VM by the VirtualBox application.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24878
are looking at the existing state of the host.
- VBOX: Reset the output buffer for every command execution.
- VBOX: Remove the teleporting and snapshotting states from the list of running
states.
- VBOX: Remove the '--type floppy' typo when mounting the floppy disk image.
samples/vboxwrapper/
vbox.cpp, .h
svn path=/trunk/boinc/; revision=24858
Some more work will be required if there is ever a need for more than
one port. But this should work for now. This should successfully
handle running multiple instances of the same job, port information is
stored in a file called "vbox_firewall.txt" which is updated for each
execution of the wrapper.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
win_build/
vboxwrapper.vcproj
svn path=/trunk/boinc/; revision=24843
wall clock time a VM is allowed, if exceeded shutdown gracefully and tell
BOINC that the job is finished.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24837
- VBOX: Add some suggestions to the source on how to debug VM related issues.
- VBOX: Add a quick sanity check when the enable_shared_directory option is
enabled.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24203
add a mechanism so that apps can report sub-processes
that are not descendants (e.g., virtual machines)
These processes are then counted as part of the app,
not as "non-BOINC CPU time".
This fixes a bug where processing was incorrectly suspended
because CPU usage by VM apps exceeded the "CPU usage limit" pref.
Implementation:
- the PIDs of the processes in question
are passed from app to client via shared-memory,
in the app_status channel.
A new variant of boinc_report_app_status() supports this.
- the VBox wrapper queries the PID of the VM,
and reports it in this way.
- procinfo_app() includes a new argument: a list of PIDs
that are part of the app, although not ancestrally
related to the main process.
- in the client, ACTIVE_TASK now includes a vector "other_pids".
If this is nonempty, it's passed to procinfo_app().
svn path=/trunk/boinc/; revision=24123
- change names of CPU and network-limiting functions
to express their units (always do this).
- wrapper monitors status.suspend_network
and suspends/resumes network accordingly
- wrapper sets CPU and network bandwidth limits on startup
(Rom: should this be done before run() rather than after?)
Note: App versions using this wrapper should always have
<dont_throttle/> in their version.xml,
to tell the client that the app throttles itself.
svn path=/trunk/boinc/; revision=24054
- vbox wrapper: on startup, rename image file to "vm_image_SLOT.vdi",
where SLOT is the slot number.
Vbox requires unique names for VM image files.
svn path=/trunk/boinc/; revision=23930