You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
4.2 KiB
93 lines
4.2 KiB
Processor boosting control |
|
|
|
- information for users - |
|
|
|
Quick guide for the impatient: |
|
-------------------- |
|
/sys/devices/system/cpu/cpufreq/boost |
|
controls the boost setting for the whole system. You can read and write |
|
that file with either "0" (boosting disabled) or "1" (boosting allowed). |
|
Reading or writing 1 does not mean that the system is boosting at this |
|
very moment, but only that the CPU _may_ raise the frequency at it's |
|
discretion. |
|
-------------------- |
|
|
|
Introduction |
|
------------- |
|
Some CPUs support a functionality to raise the operating frequency of |
|
some cores in a multi-core package if certain conditions apply, mostly |
|
if the whole chip is not fully utilized and below it's intended thermal |
|
budget. The decision about boost disable/enable is made either at hardware |
|
(e.g. x86) or software (e.g ARM). |
|
On Intel CPUs this is called "Turbo Boost", AMD calls it "Turbo-Core", |
|
in technical documentation "Core performance boost". In Linux we use |
|
the term "boost" for convenience. |
|
|
|
Rationale for disable switch |
|
---------------------------- |
|
|
|
Though the idea is to just give better performance without any user |
|
intervention, sometimes the need arises to disable this functionality. |
|
Most systems offer a switch in the (BIOS) firmware to disable the |
|
functionality at all, but a more fine-grained and dynamic control would |
|
be desirable: |
|
1. While running benchmarks, reproducible results are important. Since |
|
the boosting functionality depends on the load of the whole package, |
|
single thread performance can vary. By explicitly disabling the boost |
|
functionality at least for the benchmark's run-time the system will run |
|
at a fixed frequency and results are reproducible again. |
|
2. To examine the impact of the boosting functionality it is helpful |
|
to do tests with and without boosting. |
|
3. Boosting means overclocking the processor, though under controlled |
|
conditions. By raising the frequency and the voltage the processor |
|
will consume more power than without the boosting, which may be |
|
undesirable for instance for mobile users. Disabling boosting may |
|
save power here, though this depends on the workload. |
|
|
|
|
|
User controlled switch |
|
---------------------- |
|
|
|
To allow the user to toggle the boosting functionality, the cpufreq core |
|
driver exports a sysfs knob to enable or disable it. There is a file: |
|
/sys/devices/system/cpu/cpufreq/boost |
|
which can either read "0" (boosting disabled) or "1" (boosting enabled). |
|
The file is exported only when cpufreq driver supports boosting. |
|
Explicitly changing the permissions and writing to that file anyway will |
|
return EINVAL. |
|
|
|
On supported CPUs one can write either a "0" or a "1" into this file. |
|
This will either disable the boost functionality on all cores in the |
|
whole system (0) or will allow the software or hardware to boost at will |
|
(1). |
|
|
|
Writing a "1" does not explicitly boost the system, but just allows the |
|
CPU to boost at their discretion. Some implementations take external |
|
factors like the chip's temperature into account, so boosting once does |
|
not necessarily mean that it will occur every time even using the exact |
|
same software setup. |
|
|
|
|
|
AMD legacy cpb switch |
|
--------------------- |
|
The AMD powernow-k8 driver used to support a very similar switch to |
|
disable or enable the "Core Performance Boost" feature of some AMD CPUs. |
|
This switch was instantiated in each CPU's cpufreq directory |
|
(/sys/devices/system/cpu[0-9]*/cpufreq) and was called "cpb". |
|
Though the per CPU existence hints at a more fine grained control, the |
|
actual implementation only supported a system-global switch semantics, |
|
which was simply reflected into each CPU's file. Writing a 0 or 1 into it |
|
would pull the other CPUs to the same state. |
|
For compatibility reasons this file and its behavior is still supported |
|
on AMD CPUs, though it is now protected by a config switch |
|
(X86_ACPI_CPUFREQ_CPB). On Intel CPUs this file will never be created, |
|
even with the config option set. |
|
This functionality is considered legacy and will be removed in some future |
|
kernel version. |
|
|
|
More fine grained boosting control |
|
---------------------------------- |
|
|
|
Technically it is possible to switch the boosting functionality at least |
|
on a per package basis, for some CPUs even per core. Currently the driver |
|
does not support it, but this may be implemented in the future.
|
|
|