linux/drivers
Arjan van de Ven 69d25870f2 cpuidle: fix the menu governor to boost IO performance
Fix the menu idle governor which balances power savings, energy efficiency
and performance impact.

The reason for a reworked governor is that there have been serious
performance issues reported with the existing code on Nehalem server
systems.

To show this I'm sure Andrew wants to see benchmark results:
(benchmark is "fio", "no cstates" is using "idle=poll")

		no cstates	current linux	new algorithm
1 disk		107 Mb/s	85 Mb/s		105 Mb/s
2 disks		215 Mb/s	123 Mb/s	209 Mb/s
12 disks	590 Mb/s	320 Mb/s	585 Mb/s

In various power benchmark measurements, no degredation was found by our
measurement&diagnostics team.  Obviously a small percentage more power was
used in the "fio" benchmark, due to the much higher performance.

While it would be a novel idea to describe the new algorithm in this
commit message, I cheaped out and described it in comments in the code
instead.

[changes since first post: spelling fixes from akpm, review feedback,
folded menu-tng into menu.c]

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Len Brown <lenb@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Yanmin Zhang <yanmin_zhang@linux.intel.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-09-22 07:17:45 -07:00
..
accessibility
acpi x86: Trivial whitespace cleanups 2009-09-20 20:18:57 +02:00
amba
ata libata: Add pata_atp867x driver for Artop/Acard ATP867X controllers 2009-09-17 16:47:06 -04:00
atm
auxdisplay
base mm: oom analysis: add shmem vmstat 2009-09-22 07:17:27 -07:00
block const: make block_device_operations const 2009-09-22 07:17:25 -07:00
bluetooth
cdrom const: make block_device_operations const 2009-09-22 07:17:25 -07:00
char pcmcia: fix read buffer overflow 2009-09-22 07:17:42 -07:00
clocksource
connector
cpufreq Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2009-09-18 09:16:57 -07:00
cpuidle cpuidle: fix the menu governor to boost IO performance 2009-09-22 07:17:45 -07:00
crypto
dca
dio
dma
edac amd64_edac: check NB MCE bank enable on the current node properly 2009-09-16 13:05:46 +02:00
eisa
firewire
firmware mm: don't use alloc_bootmem_low() where not strictly needed 2009-09-22 07:17:38 -07:00
gpio gpio: Add WM831X GPIO driver 2009-09-17 09:47:01 +02:00
gpu Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-09-21 08:10:09 -07:00
hid Driver-Core: extend devnode callbacks to provide permissions 2009-09-19 12:50:38 -07:00
hwmon Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 2009-09-18 09:22:36 -07:00
i2c [PATCH] i2c-imx: make bus available early 2009-09-19 23:36:56 +01:00
ide const: make block_device_operations const 2009-09-22 07:17:25 -07:00
idle
ieee1394
ieee802154
infiniband
input Driver-Core: extend devnode callbacks to provide permissions 2009-09-19 12:50:38 -07:00
isdn const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
leds
lguest
macintosh
mca
md md: avoid use of broken kzalloc mempool 2009-09-22 07:17:35 -07:00
media drivers/media/dvb/pt1/pt1.c needs vmalloc.h 2009-09-22 07:17:23 -07:00
memstick const: make block_device_operations const 2009-09-22 07:17:25 -07:00
message const: make block_device_operations const 2009-09-22 07:17:25 -07:00
mfd drivers/mfd/ab3100-core.c: fix powerpc build error 2009-09-22 07:17:24 -07:00
misc const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
mmc const: make block_device_operations const 2009-09-22 07:17:25 -07:00
mtd const: make block_device_operations const 2009-09-22 07:17:25 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2009-09-20 15:55:39 -07:00
nubus
of
oprofile const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
parisc mm: replace various uses of num_physpages by totalram_pages 2009-09-22 07:17:38 -07:00
parport
pci Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-09-16 07:49:54 -07:00
pcmcia pcmcia: cleanup/fixup patch for sa1100_jornada_pcmcia driver 2009-09-22 07:17:42 -07:00
platform
pnp
power
pps
ps3
rapidio
regulator regulator: Voltage count for AB3100 2009-09-17 15:48:24 +02:00
rtc Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
s390 const: make block_device_operations const 2009-09-22 07:17:25 -07:00
sbus const: make block_device_operations const 2009-09-22 07:17:25 -07:00
scsi const: make block_device_operations const 2009-09-22 07:17:25 -07:00
serial uartlite: support shared interrupt lines 2009-09-19 13:13:38 -07:00
sh
sn
spi
ssb ssb/sdio: fix printk format warnings 2009-09-16 16:21:00 -04:00
staging Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2009-09-21 09:03:10 -07:00
tc
telephony
thermal
uio Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
usb const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
uwb Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb 2009-09-17 09:44:09 -07:00
video includecheck fix: drivers/video, vgacon.c 2009-09-20 16:01:58 +05:30
virtio
vlynq
w1
watchdog [WATCHDOG] sizeof cleanup 2009-09-18 08:39:37 +00:00
xen mm: replace various uses of num_physpages by totalram_pages 2009-09-22 07:17:38 -07:00
zorro
Kconfig
Makefile