blob: dd62e1334f0a8b52b7a30a2d4f9daff0e90506a5 [file] [log] [blame]
Andre Przywara615b7302012-09-04 08:28:07 +00001Processor boosting control
2
3 - information for users -
4
5Quick guide for the impatient:
6--------------------
7/sys/devices/system/cpu/cpufreq/boost
8controls the boost setting for the whole system. You can read and write
9that file with either "0" (boosting disabled) or "1" (boosting allowed).
10Reading or writing 1 does not mean that the system is boosting at this
11very moment, but only that the CPU _may_ raise the frequency at it's
12discretion.
13--------------------
14
15Introduction
16-------------
17Some CPUs support a functionality to raise the operating frequency of
18some cores in a multi-core package if certain conditions apply, mostly
19if the whole chip is not fully utilized and below it's intended thermal
Lukasz Majewski0636f0c2013-12-20 15:24:53 +010020budget. The decision about boost disable/enable is made either at hardware
21(e.g. x86) or software (e.g ARM).
Andre Przywara615b7302012-09-04 08:28:07 +000022On Intel CPUs this is called "Turbo Boost", AMD calls it "Turbo-Core",
23in technical documentation "Core performance boost". In Linux we use
24the term "boost" for convenience.
25
26Rationale for disable switch
27----------------------------
28
29Though the idea is to just give better performance without any user
30intervention, sometimes the need arises to disable this functionality.
31Most systems offer a switch in the (BIOS) firmware to disable the
32functionality at all, but a more fine-grained and dynamic control would
33be desirable:
341. While running benchmarks, reproducible results are important. Since
35 the boosting functionality depends on the load of the whole package,
36 single thread performance can vary. By explicitly disabling the boost
37 functionality at least for the benchmark's run-time the system will run
38 at a fixed frequency and results are reproducible again.
392. To examine the impact of the boosting functionality it is helpful
40 to do tests with and without boosting.
413. Boosting means overclocking the processor, though under controlled
42 conditions. By raising the frequency and the voltage the processor
43 will consume more power than without the boosting, which may be
44 undesirable for instance for mobile users. Disabling boosting may
45 save power here, though this depends on the workload.
46
47
48User controlled switch
49----------------------
50
Lukasz Majewski0636f0c2013-12-20 15:24:53 +010051To allow the user to toggle the boosting functionality, the cpufreq core
52driver exports a sysfs knob to enable or disable it. There is a file:
Andre Przywara615b7302012-09-04 08:28:07 +000053/sys/devices/system/cpu/cpufreq/boost
54which can either read "0" (boosting disabled) or "1" (boosting enabled).
Lukasz Majewski0636f0c2013-12-20 15:24:53 +010055The file is exported only when cpufreq driver supports boosting.
56Explicitly changing the permissions and writing to that file anyway will
57return EINVAL.
Andre Przywara615b7302012-09-04 08:28:07 +000058
59On supported CPUs one can write either a "0" or a "1" into this file.
60This will either disable the boost functionality on all cores in the
Lukasz Majewski0636f0c2013-12-20 15:24:53 +010061whole system (0) or will allow the software or hardware to boost at will
62(1).
Andre Przywara615b7302012-09-04 08:28:07 +000063
64Writing a "1" does not explicitly boost the system, but just allows the
Lukasz Majewski0636f0c2013-12-20 15:24:53 +010065CPU to boost at their discretion. Some implementations take external
66factors like the chip's temperature into account, so boosting once does
67not necessarily mean that it will occur every time even using the exact
68same software setup.
Andre Przywara615b7302012-09-04 08:28:07 +000069
70
71AMD legacy cpb switch
72---------------------
73The AMD powernow-k8 driver used to support a very similar switch to
74disable or enable the "Core Performance Boost" feature of some AMD CPUs.
75This switch was instantiated in each CPU's cpufreq directory
76(/sys/devices/system/cpu[0-9]*/cpufreq) and was called "cpb".
77Though the per CPU existence hints at a more fine grained control, the
78actual implementation only supported a system-global switch semantics,
79which was simply reflected into each CPU's file. Writing a 0 or 1 into it
80would pull the other CPUs to the same state.
81For compatibility reasons this file and its behavior is still supported
82on AMD CPUs, though it is now protected by a config switch
83(X86_ACPI_CPUFREQ_CPB). On Intel CPUs this file will never be created,
84even with the config option set.
85This functionality is considered legacy and will be removed in some future
86kernel version.
87
88More fine grained boosting control
89----------------------------------
90
91Technically it is possible to switch the boosting functionality at least
92on a per package basis, for some CPUs even per core. Currently the driver
93does not support it, but this may be implemented in the future.