On Tue, Nov 24, 2015 at 02:49:30PM +0100, Vincent Guittot wrote:
Instead of scaling the complete value of PELT algo, we should only scale the running time by the current capacity of the CPU. It seems more correct to only scale the running time because the non running time of a task (sleeping or waiting for a runqueue) is the same whatever the current freq and the compute capacity of the CPU.
So I'm leaning towards liking this; however with your previous example of 3 cpus and 7 tasks, where CPU0-1 are 'little' and of half the capacity as the 'big' CPU2, with 2 tasks on CPU0-1 each and 3 tasks on CPU2.
This would result, for CPU0, in a load of 100% wait time + 100% runtime, scaling the runtime 50% will get you a total load of 150%.
For CPU2 we get 100% runtime and 200% wait time, no scaling, for a total load of 300%.
So the CPU0-1 cluster has a 300% load and the CPU2 'cluster' has a 300% load, even though the actual load is not actually equal, CPUs0-1 combined have the same capacity as CPU2, so it should be 4-4 tasks for an equal balance.
So I'm not sure the claim of comparable between CPUs stands. Still it is an interesting idea and I will consider it more.