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
for virtual hard disks.
- VBOX: Execute closemedium against the virtual floppy disks when the VM is being
deleted.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24877
and restarted it would null out the host port information.
- VBOX: Try to make the CERN compatible datatype for FloppyIO more JSON friendly
by following the advice of issue:
https://github.com/stig/json-framework/issues/48
- VBOX: Support both the old style and new style of determining assigned threads
of execution (aka core counts). 6.12 and the early versions of 7.x support
the old style.
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp, .h
svn path=/trunk/boinc/; revision=24876
a bug that was fixed last night which prevented the wrapper from properly
reporting its checkpoint time to the CC. The lack of checkpoint information
for the job would have prevented the CC from rescheduling the job and removing
it from memory. Now it can so the extra shutdown each scheduling period
should not be needed.
samples/vboxwrapper/
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24874
VboxSVC.exe is normally launched by svchost.exe which only contains environment
variables defined by the system. In the BOINC sandbox environment we want to
add VBOX_USER_HOME to redirect reading/writing configuration files to a
different directory. What happens if we launch it ahead of making any calls to
VBoxManage which would cause the OS to launch it? If we launch it, it should
inherit our environment block and work just like it works on Linux and the Mac.
This is such a simple solution, why didn't I think of it sooner?
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24873
rules for a VM until the VM is in a powered off state. I guess the VM will
just have to fail starting up if it cannot allocate the assigned port.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24863
state, deregistering the VM would fail all commands because the VM was not
mutable. The first thing we should do when deregistering is discard
any saved state.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24862
then all the deregister commands have to be optional. Go ahead and log errors
to stderr but continue to run through the various commands anyway.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24860
vboxwrapper. Not doing so leaves the drive reference around and the VM in a
saved state. The next attempt to delete it from another instance of
vboxwrapper fails with a complaint about the old unnamed vm(all files have
been cleaned up by BOINC) being in an non-mutable state.
samples/vboxwrapper/
vbox.cpp
vboxwrapper.cpp
svn path=/trunk/boinc/; revision=24859
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
registered with VirtualBox during the RegisterVM phase. If we detect the
already exists error message run the unsupported internal command to reset
the HD UUID which then allows us to attach the HD to the VM. This should allow
us to run multiple jobs with the same base VM HD image.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24822
reduce backoff intervals somewhat
- vboxwrapper: fix buffer size typo (from Attila)
- scheduler: fix crash if using homogeneous app version,
and a WU is committed to an old or deprecated app version.
From Kevin Reed.
svn path=/trunk/boinc/; revision=24775
in a loop. If so, terminate the process and return an error to the calling
function.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24767
the root configuration file when the client is NOT in sandbox mode.
Doing so could cause confusion if the volunteer uses VirtualBox for
any of their own work. If BOINC started up first it would have appeared
that their own VM's no longer existed.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24449
<boinc_data_dir>/projects/virtualbox so that the virtualbox configuration
can remain consistent across one or more projects.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24380
- 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
the docs say, if the buffer isn't large enough VboxManage hangs attempting to
write the VM log file to it. Luckly the VM log file is only 64k.
- VBOX: Fix a couple of parsing errors.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24201
types for which we have no app versions
- client: if too many <coproc> elements in cc_config.xml,
detect it and inform user
svn path=/trunk/boinc/; revision=24144
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
try and avoid permission errors on multiple platforms when BOINC
is installed as a daemon.
samples/vboxwrapper/
vbox.cpp
svn path=/trunk/boinc/; revision=24100
Current: wrapper reports frequent checkpointing to client,
but actually checkpoints only when the VM is stopped
Problem: large amounts of work would be wasted if
BOINC stops in an ungraceful way (e.g., power failure)
Solution:
Don't report frequent checkpointing.
Every CPU scheduling period (typically once/hour)
stop the VM (creating a checkpoint)
and call boinc_temporary_exit(0).
If the client wants to keep running this job,
it will start us immediately.
svn path=/trunk/boinc/; revision=24068
- 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
reporting incremental runtime exery x seconds of runtime.
- client: more XML parsing cleanup
- credit trickle handler: do sanity checks on CPU speed
svn path=/trunk/boinc/; revision=24017
Additionally, the VM can be throttled by parsing in the wrapper the <max_vm_cpu_pct> specific project preference.
svn path=/trunk/boinc/; revision=23976
- 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
The new VirtualBox 4.1 supports VBoxManage unregisterVM in all the platforms. There was a bug that didn't allow to run that
command to remove the VM, affecting only Windows 64 bits, but this new version has fixed it.
svn path=/trunk/boinc/; revision=23883
get a bunch of flicking windows when we preform and operation against
VirtualBox.
samples/vboxwrapper/
vbox.cpp,
svn path=/trunk/boinc/; revision=23501
and is_registered functions using the vboxmanage app.
- VBOX: Simplify the virtualbox_vbm_popen function and remove a buffer
copy operation.
samples/vboxwrapper/
vbox.cpp, .h
svn path=/trunk/boinc/; revision=23483
CERN). Where possible stick with the POSIX API set and remove Windows
specific code. (Example vbm_popen).
NOTE: Not usable at the moment.
samples/vboxwrapper/cernvm
cernvmwrapper.cpp
samples/vboxwrapper/
vbox.cpp, .h
vboxwrapper.cpp
samples/vboxwrapper/
vm.cpp, .h
win_build/
vboxwrapper.vcproj
svn path=/trunk/boinc/; revision=23458
i.e. those that create subprocesses.
Previously, the client's job control options (suspend/resume/quit)
would not work for subprocesses.
Multiprocess apps must initialize with something like:
BOINC_OPTIONS options;
boinc_options_defaults(options);
options.multi_process = true;
boinc_init_options(&options);
Note: an application can be both multi-thread and multi-process.
In this case set options.multi_thread as well.
- wrapper: add support for multi-process apps.
Previously, suspend/resume operations did not work for subprocesses.
If a task is multi-process, you must include
<multi_process>1</multi_process>
in its descriptor.
svn path=/trunk/boinc/; revision=23369
Not necessary.
- wrapper: add optional <append_cmdline_args/> element to
task descriptor.
If set, pass the wrapper's cmdline args to that task.
NOTE: previously they were always passed.
If you want this behavior, you now must set this.
svn path=/trunk/boinc/; revision=23232
A task descriptor may contain <daemon>.
Daemons are started before regular tasks,
run concurrently with them, and are killed on exit.
svn path=/trunk/boinc/; revision=23101
Win: enumerate all descendants, and kill them all TerminateProcess().
Unix:
send the main process a SIGTERM.
Check once a sec for existence of descendants.
if none, done
If any still exist after 10 sec, kill all descendants
- wrapper fix bug in Win env var stuff
- scheduler: check for VBox version 3.2+ in app_plan()
svn path=/trunk/boinc/; revision=23085
- client: fix bug in "wait 30 sec after exclusive app exits" logic
- client: fix compile warning and possible bug in is_remote_desktop()
- win: remove wrappture_example from solution
(until Hubzereo guys get their win lib working)
svn path=/trunk/boinc/; revision=23077
specifies an environment variable assignment;
macro-substitute project dir for $PROJECT_DIR.
From Carl Christensen
svn path=/trunk/boinc/; revision=23076
specifies a directory to run app in.
macro-substitute project dir for $PROJECT_DIR.
From Carl Christensen, more or less
svn path=/trunk/boinc/; revision=23075
Old: scheduling has 2 phases:
1) computing a list of jobs to run (a vector of RESULT*);
this is done infrequently
2) enforcing the schedule; this is done more frequently
Problem:
when we enforce the schedule,
the RESULTs in the jobs-to-run list may not still be runnable,
and in fact they may not still exist (dangling pointer).
New: combine the 2 phases
svn path=/trunk/boinc/; revision=22792
VM has been running since the last state change, we'll use that
instead.
- vboxwrapper: provide basic stub functions for starting/stopping/
suspending/resuming a VM. Leave wrapper functionality in
vboxwrapper, and VM specific functionality in vbox_*. Ideally
only the stub functions would have to change for other VM
implementations.
samples/vboxwrapper/
vbox.cpp, .h
vbox_win.cpp
vboxwrapper.cpp
win_build/
vboxwrapper.vcproj
svn path=/trunk/boinc/; revision=22753
API set. Use the existing wrapper as the baseline. Current
wrapper just dumps the existing VMs defined on the machine.
More to follow.
samples/vboxwrapper/mscom/
VirtualBox.h
VirtualBox.tlb
VirtualBox_i.c
samples/vboxwrapper/
vbox.h
vbox_win.cpp
vboxwrapper.cpp
win_build/
boinc.sln
vboxwrapper.vcproj
svn path=/trunk/boinc/; revision=22745
(for many platforms) from samples/example_app/bin
- make_project: change name of example app from uppercase to example_app.
- update_versions: allow version numbers to not have decimal points
- sample work generator: make app name and template files
command-line options;
default to "example_app", "example_app_in.xml", "example_app_out.xml"
svn path=/trunk/boinc/; revision=22667
project environment so the thing will at least compile. The nvcc compiler
is a bit touchy.
samples/cuda
cuda.cu
cuda_kernel.cu
win_build/
boinc.sln
cuda.rules
cuda.vcproj
svn path=/trunk/boinc/; revision=21655