 0636f0c36a
			
		
	
	
	0636f0c36a
	
	
	
		
			
			Since the support for software and hardware controlled boosting has been added, update the corresponding documentation. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
		
			
				
	
	
		
			93 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			4.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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.
 |