Blame view

kernel/linux-imx6_3.14.28/Documentation/cpu-freq/boost.txt 4.19 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  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.