diff --git a/samples/vboxwrapper/vboxwrapper.cpp b/samples/vboxwrapper/vboxwrapper.cpp
index a32aee2b1b..f13636251b 100644
--- a/samples/vboxwrapper/vboxwrapper.cpp
+++ b/samples/vboxwrapper/vboxwrapper.cpp
@@ -372,6 +372,7 @@ int main(int argc, char** argv) {
BOINC_OPTIONS boinc_options;
VBOX_VM vm;
APP_INIT_DATA aid;
+ double random_checkpoint_factor = 0;
double elapsed_time = 0;
double trickle_period = 0;
double fraction_done = 0;
@@ -432,6 +433,29 @@ int main(int argc, char** argv) {
// Log important information
//
+
+ // Choose a random interleave value for checkpoint intervals to stagger disk I/O.
+ //
+ random_checkpoint_factor = (double)(((int)(drand() * 100000.0)) % 600);
+ fprintf(
+ stderr,
+ "%s Feature: Checkpoint interval offset (%f seconds)\n",
+ vboxwrapper_msg_prefix(buf, sizeof(buf)),
+ random_checkpoint_factor
+ );
+
+ // Display trickle value if specified
+ //
+ if (trickle_period > 0.0) {
+ fprintf(
+ stderr,
+ "%s Feature: Enabling trickle-ups (Interval: %f)\n",
+ vboxwrapper_msg_prefix(buf, sizeof(buf)), trickle_period
+ );
+ }
+
+ // Initialize system services
+ //
#if defined(_WIN32) && defined(USE_WINSOCK)
WSADATA wsdata;
retval = WSAStartup( MAKEWORD( 1, 1 ), &wsdata);
@@ -446,14 +470,6 @@ int main(int argc, char** argv) {
}
#endif
- if (trickle_period > 0.0) {
- fprintf(
- stderr,
- "%s Feature: Enabling trickle-ups (Interval: %f)\n",
- vboxwrapper_msg_prefix(buf, sizeof(buf)), trickle_period
- );
- }
-
// Check for architecture incompatibilities
//
#if defined(_WIN32) && defined(_M_IX86)
@@ -973,7 +989,12 @@ int main(int argc, char** argv) {
if (boinc_time_to_checkpoint()) {
// Only peform a VM checkpoint every ten minutes or so.
//
- if (elapsed_time >= checkpoint_cpu_time + 600.0) {
+ if (elapsed_time >= checkpoint_cpu_time + random_checkpoint_factor + 600.0) {
+ // Basic interleave factor is only needed once.
+ if (random_checkpoint_factor > 0) {
+ random_checkpoint_factor = 0.0;
+ }
+
// Basic bookkeeping
if (vm.job_duration) {
fraction_done = elapsed_time / vm.job_duration;
diff --git a/win_build/vboxwrapper.vcxproj b/win_build/vboxwrapper.vcxproj
index 54405f175e..c21c7b68c6 100644
--- a/win_build/vboxwrapper.vcxproj
+++ b/win_build/vboxwrapper.vcxproj
@@ -128,12 +128,12 @@
libcmt.lib;libcpmt.lib;kernel32.lib;user32.lib;gdi32.lib;ole32.lib;wsock32.lib;psapi.lib;%(AdditionalDependencies)
- .\Build\$(Platform)\$(Configuration)\vboxwrapper_26073_windows_intelx86.exe
+ .\Build\$(Platform)\$(Configuration)\vboxwrapper_26077_windows_intelx86.exe
true
true
%(DelayLoadDLLs)
true
- .\Build\$(Platform)\$(Configuration)\vboxwrapper_26073_windows_intelx86.pdb
+ .\Build\$(Platform)\$(Configuration)\vboxwrapper_26077_windows_intelx86.pdb
Windows
MachineX86
@@ -177,12 +177,12 @@
libcmt.lib;libcpmt.lib;kernel32.lib;user32.lib;gdi32.lib;ole32.lib;wsock32.lib;psapi.lib;%(AdditionalDependencies)
- .\Build\$(Platform)\$(Configuration)\vboxwrapper_26073_windows_x86_64.exe
+ .\Build\$(Platform)\$(Configuration)\vboxwrapper_26077_windows_x86_64.exe
true
true
%(DelayLoadDLLs)
true
- .\Build\$(Platform)\$(Configuration)\vboxwrapper_26073_windows_x86_64.pdb
+ .\Build\$(Platform)\$(Configuration)\vboxwrapper_26077_windows_x86_64.pdb
Windows
MachineX64