[Galaxy Note 3 General] iba21:
Mediatek uses all the same cluster as octa, it means scheduling doesen't have to switch and chose what core need.. simply.. it's a false big.little.. because it's a little.little!

Probably there are 2 clusters in the core.. and the scheduling logic probably is this:

First case..

there are 1 cluster (4 cortexA7) always on.. the second shutted down by power gating tech.. when scheduling needs more power.. turn on the second cluster

Second case..

All cores are indipendently, so, in the base situation 1 core on and the other shutted down..

When scheduler needs more power.. it activates the other core..

But.. for me the first case will be used.. it's easier to write the code..

###########

Some free informations about big.little tech

###########

Big.little has 2 clusters

http://www.imgur.com/amCLDKU.png

If you open the terminal, and you write:

cat /sys/devices/system/b.L/b.L_core_stat

You'll see what cluster are on.. and.. if you red what i wrote.. you'll see in the 99% of case the A15 cluster..

In that stat you see 0 and 1.. 0 is shutted down, 1 is on..

If you see there are the L2 value too.. 2 clusters has 2 different L2 (cache second level), so, cache is shutted down too..

A7 Cluster has 512kb of cache.. A15 has 2048kb of cache (2mb) (4 time more)

Cache absorbs a lot of energy.. that's one of the cause of the low power consuption by a7 arch..

Well, how to shut down the cluster?

Big.little uses the power gating tech, it's created by intel, and, simply, when there aren't an usage of the core, chip AUTOMATICALLY shut down it..

The old logic uses a dvfs command to say to the chip to shut down the core.. now it's all absolutely automatically.. so.. if scheduler doesen't want to send a taks in one core.. that core will be shutted down until one scheduling call

What's the scheduler?

linux kernel has this code in it witch chose the task destination..

How it work?

It runs the task for little time (ex.. 10milliseconds) and looks about the usage of the cpu.. it trys to find the possible cpu load caused by that task, and it move it into one core witch can compile it without increasing frequency..

So.. the base logic is to always have the minor freq possible

Why?

More freq = more and more power consuption

one chip at 500mhz absorbs less than an half than the same chip at 1000mhz

so.. 4 cores at 500mhz are better than 1 at 2ghz.. absorbs less energy and have the same base computation

Sure.. scheduler is not a mage, it can't be perfect, and sometimes it moves the task in the worst core.. it means, the worst situation for energy efficiency

Anyway.. the actual cluster migration logic chose from 2 cluster.. you could have OR 4A7 OR 4A15

why? Code is easyer to write..

android scheduler is the same as normal scheduler.. there are only an IKS (in kernel switching) module witch chose what cluster use..

From 250mhz to 650mhz there is used A7 cluster

From 700mhz to 1900mhz there is used A15 cluster

Frequency of A7 cluster is an half of the real freq of the chip

So.. 250mhz in kernel value means 500mhz of the chip a7 cluster.. 650mhz of kernel means 1300mhz of the cluster (650 x 2)

A15 has the same frequency as kernel.. so.. 800mhz is really 800mhz..

There are 2 BIG BUGS with that logic:

1) scheduler doesen't have a good code.. it sees 4 cores.. so.. it moves tasks in those 4 cores.. the IKS is indipendent out of the scheduler logic.. so.. there are not so mouch time witch one core has NO LOADING.. so.. the most of the time if the cluster is turn on, all cores are really on

2) it's the conclusion of the first case.. when the A15 are turned on.. A7 are off.. and.. if all tasks force all 4 A15 cores to be active, frequency grow up for all 4 cores.. and.. you have to know that cortexA15 has an HIGH POWER DISSIPATION..

IT REALLY NEEDS A PHYSICAL DISSIPATOR + A FAN AS LIKE PC

In simple words.. the actual cluster migration logic USES TOO MOUCH THE A15 CLUSTER FOR NOTHING..

A car example.. you use the car in a normal street with a low (2nd) gear at 6000rpm at 80km/h (50miles/h)

You'll have an high fuel consuption for nothing

You could increase the gear (5th) and engine will slow down at, for ex, 2000rpm with the same 80km/h

That's a real efficiency

We actual use too mouch cortexA15 cores for nothing.. it means.. spend energy for nothing

The HMP REWRITES THE SCHEDULING LOGIC..

Scheduler knows what are the cores and what architecture have.. so.. the base situation is 1 A7 core.. all other shutted down..

It runs a task in A7 core, looks of it "size", and move into one other A7 core (if size is low) or in one A15 cores (if size is high)

So.. this logic is completely different.. now the scheduler uses less cores as possible, and prefere A7 cores over A15 if they could run the task

Scheduling has a better powergating code.. so.. it choses to turn on one core OR increase frequency of the core..

I did some examples in other posts

Anyway.. HMP tryes to use A7 in the most of the condictions, and, moves sometimes some tasks in 1-2-3-4 A15 cores dipendent of the condiction

I repeat one simple example

CLUSTER MIGRATION (ACTUAL)

touch the screen, 4 A15 on

Web rendering (loading) 4A7 on (in the most of the case)

Web page panning (sliding) 4A15 on

HMP

Tuch the screen 4 A7 on and SOMETIMES one A15

Web rendering 4 A7 on and SOMETIMES 1-2 A15 ON

Web page panning 4A7 on and 1-2 A15 on..

Why in hmp always 4 A7 on?

Because OS has a lot of tasks to do.. low tasks (as like sensors) are compiled by A7.. and huge tasks by A15

In the actual cluster migration, if you reach more than 650mhz (always if you need to compile 1 stupid high task) all 4 A15 are on even to compile other stupid tasks.. so.. 1huge task increases the power consuption for all other 300 little tasks

With HMP.. 300 little tasks are compiled by A7 cluster.. and 1 huge by 1 A15 cluster

THAT'S WHAT I CALL EFFICIENCY

Sure.. more efficiency = less energy drain = less cpu heating

Sorry for my kilometrical post.. i hope someone read it, and understand what are the benefit of this "code"