Open JonathanBush opened 1 month ago
The BOINC client looks for a program called 'VBoxSVC.exe' (case sensitive) and, if any VM apps are running, counts its CPU time as due to BOINC.
To check this, can you please (while a BOINC VM app is running)
Let me know if this is what you see. Also let me know what version of VBox you have installed (run VirtualBox Manager, click Help / About Virtualbox)
Thanks -- David
I see 'VBoxSVC.exe' running, but its CPU utilization is 0%. The high CPU utilization is coming from one instance of 'VBoxHeadless.exe'. This was running VirtualBox 6.1.50. I also upgraded to VirtualBox 7.0.20 and observed the same behavior
Aha. That's the culprit. We'll fix it ASAP. Thanks.
VBoxSVC typically maintains the command queue sent by VBoxManage or the Vbox GUI. It's CPU usage is very low with small peaks when a VM is created, modified or shut down. Nonetheless those cycles should be counted for BOINC to avoid the total non-BOINC value goes right above the limit.
There may be more than one VBoxSVC instance on the same computer, 1 per user account running Vbox VMs. Example: VBoxSVC_1: related to a VM started by a service at boot time VBoxSVC_2: related to an account running BOINC
Here, VBoxSVC_1 doesn't count for BOINC.
It looks like BOINC already has access to the PID of the VBoxHeadless.exe instance (PID shown in stderr.txt in the slots dir matches PID shown in Task Manger), so would it be possible to include only the CPU utilization from the known BOINC VM PID(s)? This would address @computezrmle's concern about non-BOINC VMs.
It would be possible but I doubt that happens in practice (running BOINC/LHC and running another CPU-intensive VBox VM) so let's hold off.
BTW, looking at the vboxwrapper code (vbox_common.cpp) I see a function VBOX_BASE::launch_vboxvm() that's never called. Should we remove it?
What people run inside separate VMs:
There are also people running multiple BOINC clients concurrently on the host and each of them may run VirtualBox VMs.
As for VBOX_BASE::launch_vboxvm(): Yes, it is never called. I'll prepare a PR to remove it.
Describe the bug BOINC client detects VirtualBox Headless Frontend as non-BOINC CPU usage and pauses computation based on the "Suspend when non-BOINC CPU usage is above" setting.
Steps To Reproduce
Expected behavior BOINC should continue running until non-BOINC CPU load exceeds the set threshold.
System Information
Additional context I enabled this setting with a non-BOINC utilization percentage of 90% so that BOINC would pause when I run workloads that need full use of the CPU cache. Recently noticed this issue with LHC@home tasks. I also noticed that the VM keeps running in the background when BOINC is suspended.