linux/drivers
Mel Gorman 82b212f400 Revert "mm: remove __GFP_NO_KSWAPD"
With "mm: vmscan: scale number of pages reclaimed by reclaim/compaction
based on failures" reverted, Zdenek Kabelac reported the following

  Hmm,  so it's just took longer to hit the problem and observe
  kswapd0 spinning on my CPU again - it's not as endless like before -
  but still it easily eats minutes - it helps to	turn off  Firefox
  or TB  (memory hungry apps) so kswapd0 stops soon - and restart
  those apps again.  (And I still have like >1GB of cached memory)

  kswapd0         R  running task        0    30      2 0x00000000
  Call Trace:
    preempt_schedule+0x42/0x60
    _raw_spin_unlock+0x55/0x60
    put_super+0x31/0x40
    drop_super+0x22/0x30
    prune_super+0x149/0x1b0
    shrink_slab+0xba/0x510

The sysrq+m indicates the system has no swap so it'll never reclaim
anonymous pages as part of reclaim/compaction.  That is one part of the
problem but not the root cause as file-backed pages could also be
reclaimed.

The likely underlying problem is that kswapd is woken up or kept awake
for each THP allocation request in the page allocator slow path.

If compaction fails for the requesting process then compaction will be
deferred for a time and direct reclaim is avoided.  However, if there
are a storm of THP requests that are simply rejected, it will still be
the the case that kswapd is awake for a prolonged period of time as
pgdat->kswapd_max_order is updated each time.  This is noticed by the
main kswapd() loop and it will not call kswapd_try_to_sleep().  Instead
it will loopp, shrinking a small number of pages and calling
shrink_slab() on each iteration.

The temptation is to supply a patch that checks if kswapd was woken for
THP and if so ignore pgdat->kswapd_max_order but it'll be a hack and not
backed up by proper testing.  As 3.7 is very close to release and this
is not a bug we should release with, a safer path is to revert "mm:
remove __GFP_NO_KSWAPD" for now and revisit it with the view to ironing
out the balance_pgdat() logic in general.

Signed-off-by: Mel Gorman <mgorman@suse.de>
Cc: Zdenek Kabelac <zkabelac@redhat.com>
Cc: Seth Jennings <sjenning@linux.vnet.ibm.com>
Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
Cc: Jiri Slaby <jirislaby@gmail.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Robert Jennings <rcj@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-11-26 17:41:24 -08:00
..
accessibility
acpi ACPI video: Ignore errors after _DOD evaluation. 2012-11-03 09:52:54 +08:00
amba
ata SCSI fixes on 20121122 2012-11-22 09:14:54 -10:00
atm
auxdisplay
base PM / QoS: fix wrong error-checking condition 2012-11-23 20:55:06 +01:00
bcma
block mtip32xx: Fix padding issue 2012-11-23 14:32:55 +01:00
bluetooth Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] 2012-11-09 16:45:37 +01:00
bus drivers: bus: ocp2scp: add pdata support 2012-11-07 09:35:53 -08:00
cdrom
char sonypi: suspend/resume callbacks should be conditionally compiled on CONFIG_PM_SLEEP 2012-10-25 12:05:50 -07:00
clk clk: ux500: Register slimbus clock lookups for u8500 2012-11-12 10:20:23 -08:00
clocksource
connector
cpufreq cpufreq / powernow-k8: Change maintainer's email address 2012-10-31 21:02:57 +01:00
cpuidle
crypto
dca
devfreq
dio
dma Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma 2012-10-26 14:59:01 -07:00
edac EDAC: Change Boris' email address 2012-10-30 10:05:51 +01:00
eisa
extcon
firewire [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
firmware
gpio gpio-mcp23s08: Build I2C support even when CONFIG_I2C=m 2012-11-17 22:22:24 +01:00
gpu Merge branch 'drm-fixes-3.7' of git://people.freedesktop.org/~agd5f/linux into drm-fixes 2012-11-22 13:21:57 +10:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2012-11-16 07:58:20 -08:00
hsi
hv Drivers: hv: Cleanup error handling in vmbus_open() 2012-10-24 15:46:27 -07:00
hwmon hwmon: Fix chip feature table headers 2012-11-05 21:54:40 +01:00
hwspinlock
i2c Merge branch 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux 2012-11-23 11:59:26 -10:00
ide
idle
iio
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-11-22 21:45:34 -10:00
iommu intel-iommu: Fix lookup in add device 2012-11-17 13:27:15 +01:00
irqchip irqchip: irq-bcm2835: Add terminating entry for of_device_id table 2012-11-06 07:37:10 -08:00
isdn isdn: Make CONFIG_ISDN depend on CONFIG_NETDEVICES 2012-11-07 18:59:26 -05:00
leds ledtrig-cpu: kill useless mutex to fix sleep in atomic context 2012-11-11 12:09:43 -08:00
lguest
macintosh
md Several bug fixes for md in 3.7 2012-11-23 12:11:13 -10:00
media
memory
memstick
message
mfd
misc
mmc mmc: sdhci-s3c: fix the card detection in runtime-pm 2012-11-07 15:40:52 -05:00
mtd Revert "mm: remove __GFP_NO_KSWAPD" 2012-11-26 17:41:24 -08:00
net bnx2x: remove redundant warning log 2012-11-23 14:17:36 -05:00
nfc NFC: Fix pn533 target mode memory leak 2012-11-20 00:09:26 +01:00
nubus
of
oprofile
parisc
parport
pci PCI/portdrv: Don't create hotplug slots unless port supports hotplug 2012-11-05 16:59:59 -07:00
pcmcia
pinctrl pinctrl/samsung: don't allow enabling pinctrl-samsung standalone 2012-11-15 11:58:24 +01:00
platform
pnp
power
pps
ps3
ptp
pwm
rapidio rapidio: fix kernel-doc warnings 2012-11-16 14:33:04 -08:00
regulator Merge remote-tracking branches 'regulator/fix/gpio', 'regulator/fix/put' and 'regulator/fix/supp-volt' into tmp 2012-11-15 11:16:02 +09:00
remoteproc
rpmsg
rtc drivers/rtc/rtc-imxdi.c: add missing spin lock initialization 2012-10-25 14:37:53 -07:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-11-16 14:10:15 -08:00
sbus
scsi [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
sfi
sh
sn
spi spi: Some minor MXS fixes 2012-10-28 11:13:54 -07:00
ssb
staging Revert "Staging: Android alarm: IOCTL command encoding fix" 2012-11-13 13:04:43 -08:00
target target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path 2012-11-01 00:38:45 -07:00
tc
thermal exynos4_tmu_driver_ids should be exynos_tmu_driver_ids. 2012-11-03 09:52:55 +08:00
tty tty: serial: max310x: Add terminating entry for spi_device_id table 2012-11-14 14:49:42 -08:00
uio
usb SCSI fixes on 20121122 2012-11-22 09:14:54 -10:00
uwb
vfio
vhost vhost: fix mergeable bufs on BE hosts 2012-10-24 23:19:30 -04:00
video omapdss fixes for 3.7-rc 2012-11-23 12:01:02 -10:00
virt
virtio virtio: Don't access index after unregister. 2012-11-09 14:54:24 +10:30
vlynq
vme
w1
watchdog
xen Bug-fix: 2012-11-20 18:52:01 -10:00
zorro
Kconfig
Makefile