Commit | Line | Data |
---|---|---|
615b7300 AP |
1 | Processor boosting control |
2 | ||
3 | - information for users - | |
4 | ||
5 | Quick guide for the impatient: | |
6 | -------------------- | |
7 | /sys/devices/system/cpu/cpufreq/boost | |
8 | controls the boost setting for the whole system. You can read and write | |
9 | that file with either "0" (boosting disabled) or "1" (boosting allowed). | |
10 | Reading or writing 1 does not mean that the system is boosting at this | |
11 | very moment, but only that the CPU _may_ raise the frequency at it's | |
12 | discretion. | |
13 | -------------------- | |
14 | ||
15 | Introduction | |
16 | ------------- | |
17 | Some CPUs support a functionality to raise the operating frequency of | |
18 | some cores in a multi-core package if certain conditions apply, mostly | |
19 | if the whole chip is not fully utilized and below it's intended thermal | |
20 | budget. This is done without operating system control by a combination | |
21 | of hardware and firmware. | |
22 | On Intel CPUs this is called "Turbo Boost", AMD calls it "Turbo-Core", | |
23 | in technical documentation "Core performance boost". In Linux we use | |
24 | the term "boost" for convenience. | |
25 | ||
26 | Rationale for disable switch | |
27 | ---------------------------- | |
28 | ||
29 | Though the idea is to just give better performance without any user | |
30 | intervention, sometimes the need arises to disable this functionality. | |
31 | Most systems offer a switch in the (BIOS) firmware to disable the | |
32 | functionality at all, but a more fine-grained and dynamic control would | |
33 | be desirable: | |
34 | 1. 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. | |
39 | 2. To examine the impact of the boosting functionality it is helpful | |
40 | to do tests with and without boosting. | |
41 | 3. 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 | ||
48 | User controlled switch | |
49 | ---------------------- | |
50 | ||
51 | To allow the user to toggle the boosting functionality, the acpi-cpufreq | |
52 | driver exports a sysfs knob to disable it. There is a file: | |
53 | /sys/devices/system/cpu/cpufreq/boost | |
54 | which can either read "0" (boosting disabled) or "1" (boosting enabled). | |
55 | Reading the file is always supported, even if the processor does not | |
56 | support boosting. In this case the file will be read-only and always | |
57 | reads as "0". Explicitly changing the permissions and writing to that | |
58 | file anyway will return EINVAL. | |
59 | ||
60 | On supported CPUs one can write either a "0" or a "1" into this file. | |
61 | This will either disable the boost functionality on all cores in the | |
62 | whole system (0) or will allow the hardware to boost at will (1). | |
63 | ||
64 | Writing a "1" does not explicitly boost the system, but just allows the | |
65 | CPU (and the firmware) to boost at their discretion. Some implementations | |
66 | take external factors like the chip's temperature into account, so | |
67 | boosting once does not necessarily mean that it will occur every time | |
68 | even using the exact same software setup. | |
69 | ||
70 | ||
71 | AMD legacy cpb switch | |
72 | --------------------- | |
73 | The AMD powernow-k8 driver used to support a very similar switch to | |
74 | disable or enable the "Core Performance Boost" feature of some AMD CPUs. | |
75 | This switch was instantiated in each CPU's cpufreq directory | |
76 | (/sys/devices/system/cpu[0-9]*/cpufreq) and was called "cpb". | |
77 | Though the per CPU existence hints at a more fine grained control, the | |
78 | actual implementation only supported a system-global switch semantics, | |
79 | which was simply reflected into each CPU's file. Writing a 0 or 1 into it | |
80 | would pull the other CPUs to the same state. | |
81 | For compatibility reasons this file and its behavior is still supported | |
82 | on 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, | |
84 | even with the config option set. | |
85 | This functionality is considered legacy and will be removed in some future | |
86 | kernel version. | |
87 | ||
88 | More fine grained boosting control | |
89 | ---------------------------------- | |
90 | ||
91 | Technically it is possible to switch the boosting functionality at least | |
92 | on a per package basis, for some CPUs even per core. Currently the driver | |
93 | does not support it, but this may be implemented in the future. |