Re: HT (Hyper Threading) aware process scheduling doesn't work asit should

From: Chris Friesen
Date: Mon Oct 31 2011 - 15:01:14 EST


On 10/30/2011 03:26 PM, Henrique de Moraes Holschuh wrote:
On Sun, 30 Oct 2011, Artem S. Tashkinov wrote:
I've found out that even on Linux 3.0.8 the process scheduler doesn't correctly distributes
the load amongst virtual CPUs. E.g. on a 4-core system (8 total virtual CPUs) the process
scheduler often run some instances of four different tasks on the same physical CPU.

Please check how your sched_mc_power_savings and sched_smt_power_savings
tunables. Here's the doc from lesswats.org:

'sched_mc_power_savings' tunable under /sys/devices/system/cpu/ controls
the Multi-core related tunable. By default, this is set to '0' (for
optimal performance). By setting this to '1', under light load
scenarios, the process load is distributed such that all the cores in a
processor package are busy before distributing the process load to other
processor packages.

[...]

'sched_smt_power_savings' tunable under /sys/devices/system/cpu/
controls the multi-threading related tunable. By default, this is set to
'0' (for optimal performance). By setting this to '1', under light load
scenarios, the process load is distributed such that all the threads in
a core and all the cores in a processor package are busy before
distributing the process load to threads and cores, in other processor
packages.


I'm currently running Fedora 14 (2.6.35.14-97.fc14.x86_64 kernel) on an i5 560M cpu. It's supposed to have 2 cores, with hyperthreading.

I created a tiny cpu burner program that just busy-loops. Running two instances on my system they were always scheduled on separate physical cpus regardless of the values in sched_mc_power_savings or sched_smt_power_savings.

Running four instances they were always spread across all four "cpus".

With the newer 8-core chips (plus HT) in multi-socket boards with package-level turbo-boost and NUMA memory access this is going to get really interesting...

Chris


--
Chris Friesen
Software Developer
GENBAND
chris.friesen@xxxxxxxxxxx
www.genband.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/