Is there a BIOS setting that controls cpu load sharing?

Scheduling of threads to cores is an art, and a very difficult one. This has to do with the way modern multicore CPUs manage their thermal profile. Depending on the exact model the CPU might do more or less of one or more of the following:

  • Boost the clock frequency of one or more cores if there is thermal wiggle room
  • Shut down unused components (including cores) to make more room in the thermal profile
  • Throttle some cores to allow boosting others insider the thermal envelope
  • much more

This implies, that for a single-threaded workload (like an R script) the best strategy varies wildly:

  • If the CPU can boost one core at the expense of others, it is a good idea to "pin" that thread to the one boosted core
  • If the thermal envelope is small, it makes sense to assign the task to a different core from time to time to the coolest core

Whatever the scheduler choses, you should trust it to do a better job than any human could ever do.


No. A computer's BIOS might be able to control which CPU cores are enabled or disabled and the core's speed, but it has no control over what is executed on it. The execution of a program and its threads are controlled by the operating system.

Now as to why the your two computers behave differently, well that is a completely different question. It could be your OS setup or R configuration. That would need to be asked in a different question and would require more details on your hardware and software configurations.

I also want to note, there is nothing wrong with it running solely on one core. Running programs is what it is designed to do. Perhaps, your work computer is running more simultaneous tasks and has to juggle CPU usage. It may be your home computer has faster cores and has no need to swap threads around to other cores.


I believe the most likely culprit is that your home machine is utilizing a feature in the Windows 10 scheduler, widely known as "favored core" support, that prioritizes high-performance cores over low-performance ones. Previous to 2018, a desktop CPU could generally be trusted to run a thread at the same speed no matter which core you put it on. Even if one core were theoretically capable of running at a higher frequency for a given voltage than another core, the CPU was not designed to allow it to.

It was only with the advent of AMD's Zen+ Ryzen CPUs in 2018 that a change in this situation became widespread. With these models, AMD started allowing CPUs with cores of mixed quality to boost to different clock frequencies depending upon which cores are under load. This was rendered largely ineffective when the scheduler swapped the thread around to every core regardless of performance profile. The performance penalty was compounded by AMD's architecture of having the cores split into groups called "CCX"s; transferring a thread from one core to another within a CCX is faster than spreading it among different CCX's.

Intel's "Extreme Edition" CPUs have this sort of explicit, mixed-performance support as well. They refer to it as Intel Turbo Boost Max Technology 3.0. Intel states that the earliest version of Windows 10 supporting this is "RS5", which appears to be 1809.

With Intel® Turbo Boost Max Technology 3.0, lightly-threaded performance is optimized by identifying your processor's fastest cores and directing your most critical workloads to them.

Until 2019, all versions of Windows were ignorant of these facts and scheduled threads equally across all physical cores for AMD CPUs. Windows 10 version 1903 included an updated scheduler that is aware of AMD's CCX units and tries to keep threads within the same unit. link

The improvements are intended to have a special effect on tasks that use only a few cores. The threads would now switch back and forth between the individual CCXs less.

Windows 10 version 1909 brought further improvements to the scheduler, now making it aware of the mixed-performance core situation, in a feature that is called "Favored CPU Core Optimization". link

in a recent Windows Insider blog post Microsoft has stated that Windows 10 19H2 will include optimizations on how instructions are distributed to these favored cores.

I admit, my understanding of this timeline is not 100% certain, and favored cores may be utilized in earlier versions, but it's been surprisingly difficult to find concrete information on this. Most news posts seem to agree that "favored core" support is entirely new to 1909, despite the language implying that it was present in earlier versions.

The ARM architecture actually had explicit support for a mixed-performance configuration like this called "big.LITTLE" since 2011. A Windows 10 build that runs on ARM was released in 2017, and support for big.LITTLE was included either from the start or at least by 2018. This seems to have dovetailed nicely with adding support for our modern Intel & AMD situation.

As an aside, logical cores are only excluded until needed because they are parked, not because the scheduler itself understands anything about them. link

Core Parking is supported only on Windows Server 2008 R2. However, the Core Parking algorithm and infrastructure is also used to balance processor performance between logical processors on Windows 7 client systems with processors that include Intel Hyper-Threading Technology.

Tags:

Cpu

Bios