Message boards : BOINC client : BOINC doesn't utilize all CPU cores on Windows-based systems with more than 64 processors
Message board moderation
Author | Message |
---|---|
Send message Joined: 14 Nov 13 Posts: 5 |
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. |
Send message Joined: 29 Aug 05 Posts: 15573 |
|
Send message Joined: 8 Nov 19 Posts: 718 |
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? |
Send message Joined: 14 Nov 13 Posts: 5 |
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 |
Send message Joined: 28 Jun 10 Posts: 2725 |
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? |
Send message Joined: 8 Nov 19 Posts: 718 |
Maybe one day BOINC will find a solution that is easier. 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. |
Send message Joined: 28 Jun 10 Posts: 2725 |
Windows purposely limits the amount of CPU cores to end users. 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. |
Copyright © 2024 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.