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 !

