why cfs load balancer (3.14.1) doesnt pull tasks of busier run queue ?

From: nad gam
Date: Mon Apr 04 2016 - 07:37:38 EST


Im working with ubuntu with kernel 3.14.1 .The computer has intel's i7
processor - which has 4
hyper threaded cores - so in total 8 logical cores .

I run processes that does sqrt in infinite loop - just to try and get
cpu time - I create 15 for each logical core with set affinity
syscall(15 attached to core 0, 15 to core 1 and so on..)

When I disable one of the cores - for eg core 7, all of its process
move to core 3 (which is the core other thread ..) and stay like that
.

So now there's imbalance as run queue 3 has almost double the load of
any other cpu.

The cpu_allowed of this process is changed to 11111111 - which mean
they should be allowed to be scheduled to all cpus , but they just
stick to cpu 3 , even though its load is twice as any other logical
core .

What could be the problem ? where in the kernel code should I look?
Thanks !