[Lenovo A6000/Plus Guides, News, & Discussion] ShivaY:
CPU Governors, Hotplug drivers and GPU governors Explained Part 1 (Updated 23/12/16)

------------------------------------------------------------------------------------------------------------------

Official XDA thread Of The Contributer: http://xdaforums.com/member.php?u=5811506

Edited By ShivaY: http://xdaforums.com/member.php?u=6704044

Guide Part 2 Link: http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528766

Guide Part 3 Link :http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528771

Guide Part 4 Link : http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528772

Here I've gathered some info for newcomers to the Android world.I've tried to keep it relatively simple. So if you want more info Comment Below

Recommended apps for manipulating kernel values:

1. Kernel Adiutor (Free to change governor and tune variables)

2. Kernel Adiutor-Mod (Free to change governor and tune variables)

3. Compatible kernel managers (e.g Stweaks, Synapse, UKM, etc.)

This pages includes:

-----------------------------

Descriptions

governors

Hotplug drivers

CPU governors

Governor types

Recommendations

Graphs

Tunables

What is a CPU governor?

-----------------------------------

A CPU governor in Android controls how the CPU raises and lowers its frequency in response to the demands the user is placing on their device. Governors are especially important in smartphones and tablets because they have a large impact on the apparent fluidity of the interface and the battery life of the device over a charge.

NOTE: You cannot change your CPU governor unless your phone is rooted and you have a ROM or app that lets you make a change. Also, different kernels (the intermediary software between your phone's hardware and the operating system) offer different sets of governors.

Available CPU governors:

---------------------------------

1.	OnDemand

2.	OnDemandX

3.	Performance

4.	Powersave

5.	Conservative

6.	Userspace

7.	Min Max

8.	Interactive

9.	InteractiveX

10.	Smartass

11.	SmartassV2

12.	Scary

13.	Lagfree

14.	Smoothass

15.	Brazilianwax

16.	SavageZen

17.	Lazy

18.	Lionheart

19.	LionheartX

20.	Intellidemand

21.	Hotplug

22.	Badass

23.	Wheatley

24.	Lulzactive

25.	PegasusQ\PegasusD

26.	HotplugX

27.	Abyssplug

28.	MSM DCVS

29.	Intelliactive

30.	Adaptive

31.	Nightmare

32.	ZZmoove

33.	Sleepy

34.	Hyper

35.	SmartassH3

36.	SLP

37.	NeoX

38.	ZZmanX

39.	OndemandPlus

40.	Dynamic Interactive (DynInteractive)

41.	Smartmax

42.	Ktoonservative\KtoonservativeQ

43.	Performance may cry (PMC)

44.	Dance Dance

45.	AbyssPlugv2

46.	IntelliMM

47.	InteractivePro

48.	Slim

49.	Ondemand EPS

50.	Smartmax EPS

51.	Uberdemand

52.	Yankactive

53.	Impulse

54.	Bacon

55.	Optimax

56.	Preservative

57.	Touchdemand

58.	ElementalX

59.	Bioshock

60.	Blu_active

61.	Umbrella_core

62.	ConservativeX

63.	Hyrdxq

64.	DevilQ

65.	Yankasusq

66.	Darkness

67.	Alucard

68.	Hellsactive

69.	Ragingmolasses

70.	Virtuous

71.	Sakuractive

72.	InteractiveX v2

73.	Alessa

74.	GallimaufryX

75.	AggressiveX

76.	Tripndroid

77.	Wrexy

78.	Xperience

79.	Stockdemand

80.	Zeneractive

81.	InteractiveB

82.	Aggressive

83.	IntellidemandV2

84.	Boostactive

85.	Wave

86.	Barry-Allen

87.	Arteractive

88.	Precognition (PrecoGOV)

89.	Mythx_plug

90.	PegasusQPlus

91.	Yankdemand

92.	HyperX

93.	Despair

94.	Electroactive

95.	Electrodemand

96.	Lionfish

97.	Interextrem

98.	Cafactive

99.	Lightning

100.	ThunderX

101.	sched-DVFS

102.	Intel

103.	Frankenstein

104.	Cyan

105.	TheSSJactive

106.	Chill

107.	sprdemand

108.	Kraken

109.	Ironactive

Things to look out for in a CPU governor:

--------------------------------------------------------

There are many CPU governors available on android, but there are some important things people should look out for before selecting their new governor:

Speed

---------

- Some governors are faster than others and some are slower. This all depends on if the governor is biased towards performance or towards battery life. Balanced governors tend to be on the middle-ground providing optimal speed when required.

Battery life

----------------

- Generally, if the governor is biased towards performance, it will drain your battery faster. If the governor is biased towards battery life, the battery should drain slower. If the governor is balanced, then it will try to provide optimal performance while trying to be battery friendly when possible. This also depends on usage patterns and other factors such as background applications or wakelocks (when your CPU is on even though your screen is off).

Stability

-------------

- The stability of a governor is dependent on a number of factors like how well the developer has implemented the governor and can vary between different devices. One governor may work well for a specific platform but may not work well on others. It is also important to look out if the governor is a Work-In-Progress (WIP) where bugs may be encountered during usage.

Smoothness

-----------------

- Not to be confused with speed, a governor can be fast but it doesn't also mean it is smooth. Some governors implement features such as touch boost to help improve the "responsiveness" when touch events are registered. Others may choose to ramp down the frequency over a timer to attempt to provide CPU power for successive events.

Descriptions:

-------------------------

------------------------------

1: OnDemand:

---------------------

Ondemand is one of the original and oldest governors available on the linux kernel. When the load placed on your CPU reaches the set threshold, the governor will quickly ramp up to the maximum CPU frequency. It has excellent fluidity because of this high-frequency bias, but it can also have a relatively negative effect on battery life versus other governors. OnDemand was commonly chosen by smartphone manufacturers in the past because it is well-tested and reliable, but it is outdated now and is being replaced by Google's Interactive governor.

2: OndemandX:

---------------------

Basically an ondemand with suspend/wake profiles. No further optimization was done to Ondemand to keep it close to source as possible.

3: Performance:

-----------------------

The performance governor locks the phone's CPU at maximum frequency.

4: Powersave:

--------------------

The opposite of the Performance governor, the Powersave governor locks the CPU frequency at the lowest frequency set by the user.

5: Conservative:

------------------------------

This governor biases the phone to prefer the lowest possible clockspeed as often as possible. In other words, a larger and more persistent load must be placed on the CPU before the conservative governor will be prompted to raise the CPU clockspeed. Depending on how the developer has implemented this governor, and the minimum clockspeed chosen by the user, the conservative governor can introduce choppy performance. On the other hand, it can be good for battery life.

The Conservative Governor is also frequently described as a "slow OnDemand". The original and unmodified conservative is slow and inefficient. Newer and modified versions of conservative (from some kernels) are much more responsive and are better all around for almost any use.

6: Userspace:

--------------------

This governor, exceptionally rare for the world of mobile devices, allows any program executed by the user to set the CPU's operating frequency. This governor is more common amongst servers or desktop PCs where an application (like a power profile app) needs privileges to set the CPU clockspeed.

7: Min Max

-------------------

Min Max is a governor that makes use of only min & maximum frequency based on workload. no intermediate frequencies are used!

8: Interactive:

---------------------

Interactive scales the clockspeed over the course of a timer set by the kernel developer (or user). In other words, if an application demands a ramp to maximum clockspeed (by placing 100% load on the CPU), a user can execute another task before the governor starts reducing CPU frequency. Because of this timer, Interactive is also better prepared to utilize intermediate clockspeeds that fall between the minimum and maximum CPU frequencies. It is significantly more responsive than OnDemand, because it's faster at scaling to maximum frequency.

Interactive also makes the assumption that a user turning the screen on will shortly be followed by the user interacting with some application on their device. Because of this, screen on triggers a ramp to maximum clockspeed, followed by the timer behavior described above.

Interactive is the default governor of choice for today's smartphone and tablet manufacturers.

9: InteractiveX:

------------------------

Created by kernel developer "Imoseyon," the InteractiveX governor is based heavily on the Interactive governor, enhanced with tuned timer parameters to better balance battery vs. performance. The InteractiveX governor's defining feature, however, is that it locks the CPU frequency to the user's lowest defined speed when the screen is off.

10: Smartass

-----------------

Based on interactive, performance is on par with the ï¿½oldï¿½ minmax and smartass is a bit more responsive. Battery life is hard to quantify precisely but it does spend much more time at the lower frequencies.

Smartass will also cap the max frequency when sleeping to 352Mhz (or if your min frequency is higher than 352 it will cap it to your min frequency).

This governor will slowly ramp down frequency when the screen is off and it could also let the frequency go to low making your phone unusable (if min frequency is not checked).

11: SmartassV2:

-------------------

Version 2 of the original smartass governor from Erasmux. The governor aim for an "ideal frequency", and ramp up more aggressively towards this freq and less aggressive after. It uses different ideal frequencies for screen on and screen off, namely awake_ideal_freq and sleep_ideal_freq. This governor scales down CPU very fast (to hit sleep_ideal_freq soon) while screen is off and scales up rapidly to awake_ideal_freq when screen is on. There's no upper limit for frequency while screen is off (unlike Smartass). So the entire frequency range is available for the governor to use during screen-on and screen-off state. The motto of this governor is a balance between performance and battery.

12: Scary

-------------

A new governor wrote based on conservative with some smartass features, it scales accordingly to conservatives laws. So it will start from the bottom, take a load sample, if it's above the up threshold, ramp up only one speed at a time, and ramp down one at a time. It will automatically cap the off screen speeds to whatever the kernel developer sets it too and will still scale accordingly to conservatives laws. So it spends most of its time at lower frequencies. The goal of this is to get the best battery life with decent performance.

13: Lagfree:

---------------

Lagfree is similar to ondemand. Main difference is it's optimization to become more battery friendly. Frequency is gracefully decreased and increased, unlike ondemand which jumps to 100% too often. Lagfree does not skip any frequency step while scaling up or down. Remember that if there's a requirement for sudden burst of power, lagfree can not satisfy that since it has to raise cpu through each higher frequency step from current. Some users report that video playback using lagfree stutters a little. Depending on the implementation, lagfree can also be performance oriented at the cost of battery life.

14: Smoothass:

----------------------

The same as the Smartass ï¿½governorï¿½ But MUCH more aggressive & across the board.

15: Brazilianwax:

------------------------

Similar to smartassV2. More aggressive ramping, so more performance, less battery

16: SavagedZen:

-----------------------

Another smartassV2 based governor. Achieves good balance between performance & battery as compared to brazilianwax.

17: Lazy:

-----------

This governor from Ezekeel is basically an ondemand with an additional parameter min_time_state to specify the minimum time CPU stays on a frequency before scaling up/down. The Idea here is to eliminate any instabilities caused by fast frequency switching by ondemand. Lazy governor polls more often than ondemand, but changes frequency only after completing min_time_state on a step overriding sampling interval. Lazy also has a screenoff_maxfreq parameter which when enabled will cause the governor to always select the maximum frequency while the screen is off.

18: Lionheart:

---------------------

Lionheart is a conservative-based governor which is based on samsung's update3 source.

The tunables (such as the thresholds and sampling rate) were changed so the governor behaves more like the performance one, at the cost of battery as the scaling is very aggressive.

19: LionheartX

-----------------------

LionheartX is based on Lionheart but has a few changes on the tunables and features a suspend profile based on Smartass governor.

20: Intellidemand:

--------------------------

Intellidemand aka Intelligent Ondemand from Faux is yet another governor that's based on ondemand. The original intellidemand behaves differently according to GPU usage. When GPU is really busy (gaming, maps, benchmarking, etc) intellidemand behaves like ondemand. When GPU is 'idling' (or moderately busy), intellidemand limits max frequency to a step depending on frequencies available in your device/kernel for saving battery. This is called browsing mode.

To sum up, this is an intelligent ondemand that enters browsing mode to limit max frequency when GPU is idling, and (exits browsing mode) by behaving like ondemand when GPU is busy; to deliver performance for gaming and such. Intellidemand does not jump to highest frequency when screen is off. Faux no longer recommends intellidemand and believes that intellidemand users should switch to intelliactive for better optimizations and performance.

21: Hotplug:

---------------------

The Hotplug governor performs very similarly to the OnDemand governor, with the added benefit of being more precise about how it steps down through the kernel's frequency table as the governor measures the user's CPU load. However, the Hotplug governor's defining feature is its ability to turn unused CPU cores off during periods of low CPU utilization. This is known as "hotplugging."

22: BadAss:

-----------------

Badass removes all of this "fast peaking" to the max frequency. To trigger a frequency increase, the system must run a bit with high load, then the frequency is bumped. If that is still not enough the governor gives you full throttle. (this transition should not take longer than 1-2 seconds, depending on the load your system is experiencing)

Badass will also take the gpu load into consideration. If the gpu is moderately busy it will bypass the above check and clock the cpu to max frequency. If the gpu is crushed under load, badass will lift the restrictions to the cpu.

23: Wheatley:

--------------------

This governor is build on ï¿½ondemandï¿½ but increases the C4 (the sleep state) state time of the CPU and doing so trying to save juice. So the results show that Wheatley works as intended and ensures that the C4 state is used whenever the task allows a proper efficient usage of the C4 state. For more demanding tasks which cause a large number of wakeups and prevent the efficient usage of the C4 state, the governor resorts to the next best power saving mechanism and scales down the frequency. So with the new highly-flexible Wheatley governor one can have the best of both worlds. Obviously, this governor is only available on multi-core devices.

Wheatley is a more performance orientated governor as it scales more aggressively than ondemand and sticks with higher frequencies.

24:Lulzactive\LulzactiveQ:

--------------------------------------

It's based on Interactive & Smartass governors.

Old Version: When workload is greater than or equal to 60%, the governor scales up CPU to next higher step. When workload is less than 60%, governor scales down CPU to next lower step. When screen is off, frequency is locked to global scaling minimum frequency.

New Version: Three more user configurable parameters: inc_cpu_load, pump_up_step, pump_down_step. Unlike older version, this one gives more control for the user. We can set the threshold at which governor decides to scale up/down. We can also set number of frequency steps to be skipped while polling up and down.

When workload greater than or equal to inc_cpu_load, governor scales CPU pump_up_step steps up. When workload is less than inc_cpu_load, governor scales CPU down pump_down_step steps down.

25: Pegasusq/Pegasusd

---------------------------------

The Pegasusq / d is a multi-core based on the Ondemand governor and governor with integrated hot-plugging. It is quite stable and has the same battery life as ondemand. Ongoing processes in the queue, we know that multiple processes can run simultaneously on. These processes are active in an array, which is a field called "Run Queue" queue that is ongoing, with their priority values ??arranged (priority will be used by the task scheduler, which then decides which process to run next).

To ensure that each process has its fair share of resources, each will run for a certain period and will eventually stop and then again placed in the queue until it is your turn again. If a program is terminated, so that others can run the program with the highest priority in the current queue is executed.

26: Hotplugx

--------------------

It's a modified version of Hotplug and optimized for the suspension in off-screen

27: AbyssPlug

-----------------

It's a Governor derived from hotplug, it works the same way, but with the changes in savings for more battery life.

28: MSM DCVS

----------------------

A very efficient and wide range of Dynamic Clock and Voltage Scaling (DCVS) which addresses usage models from active standby to mid and high level processing requirements. It makes the phone's CPU smoothly scale from low power, from low leakage mode to blazingly fast performance.Only to be used by Qualcomm CPUs.

MSM is the prefix for the SOC (MSM8960) and DCVS is Dynamic Clock and Voltage Scaling. Makes sense, MSM-DCVS

Guide Part 2 Link: http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528766

Guide Part 3 Link :http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528771

Guide Part 4 Link : http://xdaforums.com/lenovo-a6000/how-to/cpu-governors-hotplug-drivers-gpu-t3528772

Please Press Thanks Button If It Helped . It Will Encourage Me to Work More For You Guys

THANK YOU:o:good: