mirror of https://github.com/BOINC/boinc.git
- VBOX: Use the boinc_temporary_exit API properly. Wait for 5 minutes
before allowing another attempt to start the VM when the hypervisor cannot allocate enough memory. - VBOX: Print out a trace statement about the suspend/resume directive from the vboxwrapper perspective. This in conjuction with the BOINC API trace statements should provide a better idea with what is going on. samples/vboxwrapper vboxwrapper.cpp svn path=/trunk/boinc/; revision=25424
This commit is contained in:
parent
e76d18c6fc
commit
a52651bf56
|
@ -2628,3 +2628,15 @@ Charlie 14 Mar 2012
|
|||
|
||||
client/
|
||||
coproc_detect.cpp
|
||||
|
||||
Rom 14 Mar 2012
|
||||
- VBOX: Use the boinc_temporary_exit API properly. Wait for 5 minutes
|
||||
before allowing another attempt to start the VM when the hypervisor
|
||||
cannot allocate enough memory.
|
||||
- VBOX: Print out a trace statement about the suspend/resume directive
|
||||
from the vboxwrapper perspective. This in conjuction with the
|
||||
BOINC API trace statements should provide a better idea with
|
||||
what is going on.
|
||||
|
||||
samples/vboxwrapper
|
||||
vboxwrapper.cpp
|
||||
|
|
|
@ -332,7 +332,6 @@ int main(int argc, char** argv) {
|
|||
double ncpus = 0.0;
|
||||
bool report_vm_pid = false;
|
||||
bool report_net_usage = false;
|
||||
bool unrecoverable_error = false;
|
||||
int vm_pid = 0;
|
||||
unsigned long vm_exit_code = 0;
|
||||
std::string vm_log;
|
||||
|
@ -450,12 +449,18 @@ int main(int argc, char** argv) {
|
|||
retval = vm.run();
|
||||
if (retval) {
|
||||
// All failure to start error are unrecoverable by default
|
||||
unrecoverable_error = true;
|
||||
bool unrecoverable_error = true;
|
||||
char* temp_reason = "";
|
||||
int temp_delay = 300;
|
||||
|
||||
// Get logs before cleanup
|
||||
vm.get_system_log(system_log);
|
||||
vm.get_vm_log(vm_log);
|
||||
|
||||
// Attempt to cleanup the VM
|
||||
vm.cleanup();
|
||||
write_checkpoint(elapsed_time, vm);
|
||||
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s VM failed to start.\n",
|
||||
|
@ -499,6 +504,7 @@ int main(int argc, char** argv) {
|
|||
vboxwrapper_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
unrecoverable_error = false;
|
||||
temp_reason = "VM Hypervisor was unable to allocate enough memory to start VM.";
|
||||
} else {
|
||||
fprintf(
|
||||
stderr,
|
||||
|
@ -514,11 +520,9 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
|
||||
if (unrecoverable_error) {
|
||||
vm.cleanup();
|
||||
write_checkpoint(elapsed_time, vm);
|
||||
boinc_finish(retval);
|
||||
} else {
|
||||
boinc_temporary_exit(0);
|
||||
boinc_temporary_exit(temp_delay, temp_reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -585,10 +589,20 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
if (boinc_status.suspended) {
|
||||
if (!vm.suspended) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s Suspending VM.\n",
|
||||
vboxwrapper_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
vm.pause();
|
||||
}
|
||||
} else {
|
||||
if (vm.suspended) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s Resuming VM.\n",
|
||||
vboxwrapper_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
vm.resume();
|
||||
}
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=".;../;../api;../lib;../samples/image_libs;../samples/jpeglib;../samples/glut;../coprocs/OpenCL/include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_MT;_LIB;_CONSOLE;CLIENT;BOINC_APP_GRAPHICS"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_MT;_LIB;_CONSOLE;CLIENT;BOINC_APP_GRAPHICS;BOINC_INFOMSGS"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="2"
|
||||
|
@ -255,7 +255,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=".;../;../api;../lib;../samples/image_libs;../samples/jpeglib;../samples/glut;../coprocs/OpenCL/include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_MT;_LIB;_CONSOLE;CLIENT;BOINC_APP_GRAPHICS"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_MT;_LIB;_CONSOLE;CLIENT;BOINC_APP_GRAPHICS;BOINC_INFOMSGS"
|
||||
ExceptionHandling="2"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="2"
|
||||
|
|
|
@ -81,13 +81,13 @@
|
|||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libcmt.lib libcpmt.lib kernel32.lib user32.lib gdi32.lib ole32.lib wsock32.lib"
|
||||
OutputFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25399_windows_intelx86.exe"
|
||||
OutputFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25404_windows_intelx86.exe"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreAllDefaultLibraries="true"
|
||||
DelayLoadDLLs=""
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25399_windows_intelx86.pdb"
|
||||
ProgramDatabaseFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25404_windows_intelx86.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
|
@ -182,13 +182,13 @@
|
|||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libcmt.lib libcpmt.lib kernel32.lib user32.lib gdi32.lib ole32.lib wsock32.lib"
|
||||
OutputFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25399_windows_x86_64.exe"
|
||||
OutputFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25404_windows_x86_64.exe"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreAllDefaultLibraries="true"
|
||||
DelayLoadDLLs=""
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25399_windows_x86_64.pdb"
|
||||
ProgramDatabaseFile=".\Build\$(PlatformName)\$(ConfigurationName)\vboxwrapper_25404_windows_x86_64.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
|
|
Loading…
Reference in New Issue