123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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.
|