From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: linux-kernel@vger.kernel.org, mingo@elte.hu, peterz@infradead.org
Cc: rjw@rjwysocki.net, nicolas.pitre@linaro.org,
linux-pm@vger.kernel.org, alex.shi@linaro.org,
vincent.guittot@linaro.org, morten.rasmussen@arm.com
Subject: [RFC PATCHC 0/3] sched/idle : find the idlest cpu with cpuidle info
Date: Fri, 28 Mar 2014 13:29:53 +0100 [thread overview]
Message-ID: <1396009796-31598-1-git-send-email-daniel.lezcano@linaro.org> (raw)
The following patchset provides an interaction between cpuidle and the scheduler.
The first patch encapsulate the needed information for the scheduler in a
separate cpuidle structure. The second one stores the pointer to this structure
when entering idle. The third one, use this information to take the decision to
find the idlest cpu.
After some basic testing with hackbench, it appears there is an improvement for
the performances (small) and for the duration of the idle states (which provides
a better power saving).
The measurement has been done with the 'idlestat' tool previously posted in this
mailing list.
So the benefit is good for both sides performance and power saving.
The select_idle_sibling could be also improved in the same way.
====================== test with hackbench 3.14-rc8 =========================
/usr/bin/hackbench -l 10000 -s 4096
Running in process mode with 10 groups using 40 file descriptors each (== 400 tasks)
Each sender will pass 10000 messages of 4096 bytes
Time: 44.433
Total trace buffer: 1846688 kB
clusterA@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
core0@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-IVB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 1396 87932131.00 62988.63 0.00 320146.00
cpu0@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 1 14.00 14.00 14.00 14.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 1 262.00 262.00 262.00 262.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 1180 87938177.00 74523.88 1.00 320147.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu0 wakeups name count
irq009 acpi 1
cpu1@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 475 87941356.00 185139.70 322.00 1500690.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu1 wakeups name count
irq009 acpi 3
core1@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-IVB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
cpu2@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 11 288157.00 26196.09 16.00 200060.00
C1E-VB 6 221601.00 36933.50 79.00 200066.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 950 87417466.00 92018.39 19.00 200074.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 2 34.00 17.00 11.00 23.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 745 18800.00 25.23 2.00 156.00
cpu2 wakeups name count
irq019 ahci 50
irq009 acpi 17
cpu3@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu3 wakeups name count
================ test with hackbench 3.14-rc8 + patchset ====================
/usr/bin/hackbench -l 10000 -s 4096
Running in process mode with 10 groups using 40 file descriptors each (== 400 tasks)
Each sender will pass 10000 messages of 4096 bytes
Time: 42.179
Total trace buffer: 1846688 kB
clusterA@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
core0@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-IVB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 880 89157590.00 101315.44 0.00 400184.00
cpu0@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 1 233.00 233.00 233.00 233.00
C3-IVB 1 260.00 260.00 260.00 260.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 700 89162006.00 127374.29 182.00 400187.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu0 wakeups name count
irq009 acpi 2
cpu1@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 334 89164805.00 266960.49 1.00 1500677.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu1 wakeups name count
irq009 acpi 6
core1@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-IVB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
cpu2@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 19 2169047.00 114160.37 18.00 999129.00
C1E-IB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 376 86993307.00 231365.18 20.00 1500682.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu2 wakeups name count
irq009 acpi 32
irq019 ahci 45
cpu3@state hits total(us) avg(us) min(us) max(us)
POLL 0 0.00 0.00 0.00 0.00
C1-IVB 0 0.00 0.00 0.00 0.00
C1E-VB 0 0.00 0.00 0.00 0.00
C3-IVB 0 0.00 0.00 0.00 0.00
C6-IVB 0 0.00 0.00 0.00 0.00
C7-IVB 0 0.00 0.00 0.00 0.00
1701 0 0.00 0.00 0.00 0.00
1700 0 0.00 0.00 0.00 0.00
1600 0 0.00 0.00 0.00 0.00
1500 0 0.00 0.00 0.00 0.00
1400 0 0.00 0.00 0.00 0.00
1300 0 0.00 0.00 0.00 0.00
1200 0 0.00 0.00 0.00 0.00
1100 0 0.00 0.00 0.00 0.00
1000 0 0.00 0.00 0.00 0.00
900 0 0.00 0.00 0.00 0.00
800 0 0.00 0.00 0.00 0.00
782 0 0.00 0.00 0.00 0.00
cpu3 wakeups name count
Daniel Lezcano (3):
cpuidle: encapsulate power info in a separate structure
idle: store the idle state the cpu is
sched/fair: use the idle state info to choose the idlest cpu
arch/arm/include/asm/cpuidle.h | 6 +-
arch/arm/mach-exynos/cpuidle.c | 4 +-
drivers/acpi/processor_idle.c | 4 +-
drivers/base/power/domain.c | 6 +-
drivers/cpuidle/cpuidle-at91.c | 4 +-
drivers/cpuidle/cpuidle-big_little.c | 9 +--
drivers/cpuidle/cpuidle-calxeda.c | 6 +-
drivers/cpuidle/cpuidle-kirkwood.c | 4 +-
drivers/cpuidle/cpuidle-powernv.c | 8 +--
drivers/cpuidle/cpuidle-pseries.c | 12 ++--
drivers/cpuidle/cpuidle-ux500.c | 14 ++---
drivers/cpuidle/cpuidle-zynq.c | 4 +-
drivers/cpuidle/driver.c | 6 +-
drivers/cpuidle/governors/ladder.c | 14 +++--
drivers/cpuidle/governors/menu.c | 8 +--
drivers/cpuidle/sysfs.c | 2 +-
drivers/idle/intel_idle.c | 112 +++++++++++++++++-----------------
include/linux/cpuidle.h | 10 ++-
kernel/sched/fair.c | 46 ++++++++++++--
kernel/sched/idle.c | 17 +++++-
kernel/sched/sched.h | 5 ++
21 files changed, 180 insertions(+), 121 deletions(-)
--
1.7.9.5
next reply other threads:[~2014-03-28 12:29 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-28 12:29 Daniel Lezcano [this message]
2014-03-28 12:29 ` [RFC PATCHC 1/3] cpuidle: encapsulate power info in a separate structure Daniel Lezcano
2014-03-28 18:17 ` Nicolas Pitre
2014-03-28 20:42 ` Daniel Lezcano
2014-03-29 0:00 ` Nicolas Pitre
2014-03-28 12:29 ` [RFC PATCHC 2/3] idle: store the idle state the cpu is Daniel Lezcano
2014-04-15 12:43 ` Peter Zijlstra
2014-04-15 12:44 ` Peter Zijlstra
2014-04-15 14:17 ` Daniel Lezcano
2014-04-15 14:33 ` Peter Zijlstra
2014-04-15 14:39 ` Daniel Lezcano
2014-03-28 12:29 ` [RFC PATCHC 3/3] sched/fair: use the idle state info to choose the idlest cpu Daniel Lezcano
2014-04-02 3:05 ` Nicolas Pitre
2014-04-04 11:57 ` Rafael J. Wysocki
2014-04-04 16:56 ` Nicolas Pitre
2014-04-05 2:01 ` Rafael J. Wysocki
2014-04-17 13:53 ` Daniel Lezcano
2014-04-17 14:47 ` Peter Zijlstra
2014-04-17 15:03 ` Daniel Lezcano
2014-04-18 8:09 ` Ingo Molnar
2014-04-18 8:36 ` Daniel Lezcano
2014-04-17 15:53 ` Nicolas Pitre
2014-04-17 16:05 ` Daniel Lezcano
2014-04-17 16:21 ` Nicolas Pitre
2014-04-18 9:38 ` Peter Zijlstra
2014-04-18 12:13 ` Daniel Lezcano
2014-04-18 12:53 ` Peter Zijlstra
2014-04-18 13:04 ` Daniel Lezcano
2014-04-18 16:00 ` Nicolas Pitre
2014-04-15 13:03 ` Peter Zijlstra
2014-03-31 13:52 ` [RFC PATCHC 0/3] sched/idle : find the idlest cpu with cpuidle info Vincent Guittot
2014-03-31 15:55 ` Daniel Lezcano
2014-04-01 7:16 ` Vincent Guittot
2014-04-01 7:43 ` Daniel Lezcano
2014-04-01 9:05 ` Vincent Guittot
2014-04-15 13:13 ` Peter Zijlstra
2014-04-01 23:01 ` Rafael J. Wysocki
2014-04-02 3:14 ` Nicolas Pitre
2014-04-04 11:43 ` Rafael J. Wysocki
2014-04-15 13:17 ` Peter Zijlstra
2014-04-15 13:25 ` Peter Zijlstra
2014-04-15 15:27 ` Nicolas Pitre
2014-04-15 15:33 ` Rafael J. Wysocki
2014-04-02 8:26 ` Daniel Lezcano
2014-04-04 11:23 ` Rafael J. Wysocki
2014-04-04 6:29 ` Len Brown
2014-04-04 8:16 ` Daniel Lezcano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1396009796-31598-1-git-send-email-daniel.lezcano@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=alex.shi@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=morten.rasmussen@arm.com \
--cc=nicolas.pitre@linaro.org \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=vincent.guittot@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome