BOINC doesn't utilize all CPU cores on Windows-based systems with more than 64 processors

Message boards : BOINC client : BOINC doesn't utilize all CPU cores on Windows-based systems with more than 64 processors
Message board moderation

To post messages, you must log in.

AuthorMessage
BigFanOfBOINC

Send message
Joined: 14 Nov 13
Posts: 5
South Africa
Message 99092 - Posted: 4 Jun 2020, 20:08:12 UTC

Hi

Is there any progress on this limitation (BOINC doesn't utilize all CPU cores on Windows-based systems with more than 64 processors)?

https://boinc.berkeley.edu/dev/forum_thread.php?id=10124&postid=61097#61097

Any computer with more than 64 cores has the cores grouped into NUMA nodes. BOINC is supposed to set the AFFINITY GROUP for each task as it launches the task:

https://docs.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653313(v=vs.85)?redirectedfrom=MSDN

As you can see, it is a small amount of code to ensure the launched thread doesn't get stuck in the scheduler's affinity group. At present, if a system has 144 cores, Windows will group the 144 cores into 4 groups x 36 cores. BOINC will detect 144 cores and run 144 tasks, but BOINC will run those 144 tasks only in the same group as the scheduler, i.e., all 144 tasks run on 36 cores and 108 cores are left idle. The 144 tasks run really slowly because they are all stuck in one affinity group.

At present we still have to manually set affinity groups after BOINC starts which is a LOT of clicking:

https://www.howtogeek.com/121775/how-to-force-windows-applications-to-use-a-specific-cpu/

Any roadmap to NUMA support would be appreciated.

Thank you.
ID: 99092 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 14950
Netherlands
Message 99093 - Posted: 4 Jun 2020, 20:36:36 UTC

ID: 99093 · Report as offensive
ProDigit

Send message
Joined: 8 Nov 19
Posts: 696
United States
Message 99136 - Posted: 5 Jun 2020, 20:03:26 UTC

From my understanding, it is windows itself that doesn't support more than 64 cores. It can see the cores in task manager, but not use it.
To fully utilise a 64+ core CPU, you'll need an Enterprise edition of Windows, or run Linux.

I'm not aware of any workaround, but perhaps there are?
ID: 99136 · Report as offensive
BigFanOfBOINC

Send message
Joined: 14 Nov 13
Posts: 5
South Africa
Message 99154 - Posted: 6 Jun 2020, 18:49:45 UTC - in response to Message 99136.  

Hi

Thanks for the links. Based on the links provided, my understanding is that the Dev team tried to fix the limitation of BOINC running on Windows Server with >64 processors (causing processor groups). It was too difficult and the problem remains. :(

I guess the best solution is to run a hypervisor on the physical machine and then use multiple copies of Windows Server, one for each NUMA processor group so that each copy of Windows has fewer than 64 processors, and the processor groups match the NUMA architecture to enable maximum performance.

Maybe one day BOINC will find a solution that is easier.

Thanks
ID: 99154 · Report as offensive
Profile Dave
Help desk expert

Send message
Joined: 28 Jun 10
Posts: 1694
United Kingdom
Message 99161 - Posted: 7 Jun 2020, 7:14:33 UTC - in response to Message 99154.  

Maybe one day BOINC will find a solution that is easier.


Or given that in the future there are likely to be more servers with what for my home use would be a stupid number of cores, perhaps Windows will learn to let them all be used?
ID: 99161 · Report as offensive
ProDigit

Send message
Joined: 8 Nov 19
Posts: 696
United States
Message 99163 - Posted: 7 Jun 2020, 16:22:02 UTC - in response to Message 99161.  
Last modified: 7 Jun 2020, 16:23:06 UTC

Maybe one day BOINC will find a solution that is easier.


Or given that in the future there are likely to be more servers with what for my home use would be a stupid number of cores, perhaps Windows will learn to let them all be used?

Windows purposely limits the amount of CPU cores to end users.
If you want to run these cores (which in MS' opinion means you're a business or enterprise, as 4 years ago, no one would ever think an end user would have the resources or need for anything more than even 8CPU cores), you'll need to cash up for a more expensive version of Windows (Enterprise, is said to be the only one able to handle +64 cores, for about $350 per copy).

But in Linux it works out of the box.
You can always do a dual install (Windows and Linux) on the PC.
ID: 99163 · Report as offensive
Profile Dave
Help desk expert

Send message
Joined: 28 Jun 10
Posts: 1694
United Kingdom
Message 99172 - Posted: 7 Jun 2020, 19:44:40 UTC - in response to Message 99163.  

Windows purposely limits the amount of CPU cores to end users.
If you want to run these cores (which in MS' opinion means you're a business or enterprise, as 4 years ago, no one would ever think an end user would have the resources or need for anything more than even 8CPU cores), you'll need to cash up for a more expensive version of Windows (Enterprise, is said to be the only one able to handle +64 cores, for about $350 per copy).


My ignorance of Windows is showing. Perhaps not surprising as I totally defenestrated in 2,000 and even then was mostly using OS2 Warp4 when running Windows programs.
ID: 99172 · Report as offensive

Message boards : BOINC client : BOINC doesn't utilize all CPU cores on Windows-based systems with more than 64 processors

Copyright © 2022 University of California. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.