Messages in this thread |  | | | From | Gautham R Shenoy <> | | Subject | [PATCH v2 0/3] sched: Extend sched_mc/smt_power_savings framework | | Date | Tue, 03 Mar 2009 17:21:38 +0530 |
| |
Hi,
This is the second iteration of the patch series that extends the existing sched_smt_/mc_power_savings framework to work on platforms that have on-chip memory controllers making each of the cpu-package a 'node'.
Original posting can be found here --> http://lkml.org/lkml/2009/2/16/221
Based on Peter's review comments, I have added additional comments at appropriate places that help us understand the reason behind doing certain things in the name of power-aware-load balancing.
Background ------------------------------------------------------------------ On machines with on-chip memory controller, each physical CPU package forms a NUMA node and the CPU level sched_domain will have only one group. This prevents any form of power saving balance across these nodes. Enabling the sched_mc_power_savings tunable to work as designed on these new single CPU NUMA node machines will help task consolidation and save power as we did in other multi core multi socket platforms. Consolidation across NODES have implications of cross-node memory access and other NUMA locality issues. Even under such constraints there could be scope for power savings vs performance tradeoffs and hence making the sched_mc_powersavings work as expected on these platform is justified.
sched_mc/smt_power_savings is still a tunable and power savings benefits and performance would vary depending on the workload and the system topology and hardware features.
The patch series has been tested on a 2-Socket Quad-core Dual threaded box with kernbench as the workload, varying the number of threads.
+------------------------------------------------------------------------+ |Test: make -j4 | +-----------+----------+--------+---------+-------------+----------------+ | sched_smt | sched_mc | %Power | Time | % Package 0 | % Package 1 | | | | | (s) | idle | idle | +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 35.34 |Core4: 62.01 | | | | | +-------------+----------------+ | | | | |Core1: 58.34 |Core5: 17.41 | | 0 | 0 | 100 | 107.84 +-------------+----------------+ | | | | |Core2: 63.97 |Core6: 60.29 | | | | | +-------------+----------------+ | | | | |Core3: 68.64 |Core7: 61.46 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 34.28 |Core4: 18.26 | | | | | +-------------+----------------+ | | | | |Core1: 99.19 |Core5: 18.54 | | 0 | 2 | 99.89 | 109.91 +-------------+----------------+ | | | | |Core2: 99.89 |Core6: 21.54 | | | | | +-------------+----------------+ | | | | |Core3: 99.91 |Core7: 23.21 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 20.17 |Core4: 69.30 | | | | | +-------------+----------------+ | | | | |Core1: 50.22 |Core5: 55.97 | | 2 | 2 | 95.03 | 139.95 +-------------+----------------+ | | | | |Core2: 83.95 |Core6: 92.70 | | | | | +-------------+----------------+ | | | | |Core3: 88.95 |Core7: 95.58 | +-----------+----------+--------+ --------+-------------+----------------+ +------------------------------------------------------------------------+ |Test: make -j6 | +-----------+----------+--------+---------+-------------+----------------+ | sched_smt | sched_mc | %Power | Time | % Package 0 | % Package 1 | | | | | | idle | idle | +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 25.35 |Core4: 41.07 | | | | | +-------------+----------------+ | | | | |Core1: 43.84 |Core5: 19.95 | | 0 | 0 | 100 | 77.67 +-------------+----------------+ | | | | |Core2: 43.23 |Core6: 42.82 | | | | | +-------------+----------------+ | | | | |Core3: 47.66 |Core7: 45.96 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 24.13 |Core4: 41.80 | | | | | +-------------+----------------+ | | | | |Core1: 51.51 |Core5: 23.61 | | 0 | 2 | 99.41 | 81.50 +-------------+----------------+ | | | | |Core2: 55.43 |Core6: 38.67 | | | | | +-------------+----------------+ | | | | |Core3: 57.79 |Core7: 38.84 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 7.75 |Core4: 94.45 | | | | | +-------------+----------------+ | | | | |Core1: 19.04 |Core5: 67.42 | | 2 | 2 | 93.32 | 100.39 +-------------+----------------+ | | | | |Core2: 28.29 |Core6: 96.90 | | | | | +-------------+----------------+ | | | | |Core3: 66.63 |Core7: 99.86 | +-----------+----------+--------+---------+-------------+----------------+ +------------------------------------------------------------------------+ |Test: make -j8 | +-----------+----------+--------+---------+-------------+----------------+ | sched_smt | sched_mc | %Power | Time | % Package 0 | % Package 1 | | | | | | idle | idle | +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 18.17 |Core4: 33.38 | | | | | +-------------+----------------+ | | | | |Core1: 34.62 |Core5: 19.58 | | 0 | 0 | 100 | 63.82 +-------------+----------------+ | | | | |Core2: 31.99 |Core6: 32.35 | | | | | +-------------+----------------+ | | | | |Core3: 34.59 |Core7: 29.99 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 15.20 |Core4: 41.41 | | | | | +-------------+----------------+ | | | | |Core1: 28.45 |Core5: 21.32 | | 0 | 2 | 99.17 | 65.65 +-------------+----------------+ | | | | |Core2: 31.14 |Core6: 41.26 | | | | | +-------------+----------------+ | | | | |Core3: 30.52 |Core7: 42.95 | +-----------+----------+--------+---------+-------------+----------------+ +-----------+----------+--------+---------+-------------+----------------+ | | | | |Core0: 16.65 |Core4: 79.04 | | | | | +-------------+----------------+ | | | | |Core1: 26.74 |Core5: 50.98 | | 2 | 2 | 89.58 | 82.83 +-------------+----------------+ | | | | |Core2: 30.42 |Core6: 81.33 | | | | | +-------------+----------------+ | | | | |Core3: 35.57 |Core7: 90.03 | +-----------+----------+--------+---------+-------------+----------------+ --- Gautham R Shenoy (3): sched: Fix sd_parent_degenerate for SD_POWERSAVINGS_BALANCE. sched: Fix the wakeup nomination for sched_mc/smt_power_savings. sched: code cleanup - sd_power_saving_flags(), sd_balance_for_mc/package_power()
include/linux/sched.h | 66 ++++++++++++++++++----------------- include/linux/topology.h | 6 +-- kernel/sched.c | 88 +++++++++++++++++++++++++++++++++++++++++++--- kernel/sched_fair.c | 2 + 4 files changed, 119 insertions(+), 43 deletions(-)
Thoughts ? -- Thanks and Regards gautham.
|  |