Johannes Weiner
27329369c9
mm: page_alloc: exempt GFP_THISNODE allocations from zone fairness
...
Jan Stancek reports manual page migration encountering allocation
failures after some pages when there is still plenty of memory free, and
bisected the problem down to commit 81c0a2bb51 ("mm: page_alloc: fair
zone allocator policy").
The problem is that GFP_THISNODE obeys the zone fairness allocation
batches on one hand, but doesn't reset them and wake kswapd on the other
hand. After a few of those allocations, the batches are exhausted and
the allocations fail.
Fixing this means either having GFP_THISNODE wake up kswapd, or
GFP_THISNODE not participating in zone fairness at all. The latter
seems safer as an acute bugfix, we can clean up later.
Reported-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: Mel Gorman <mgorman@suse.de>
Cc: <stable@kernel.org> [3.12+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-03-04 07:55:50 -08:00
..
backing-dev.c
mm/backing-dev.c: check user buffer length before copying data to the related user buffer
2013-09-11 15:58:03 -07:00
balloon_compaction.c
mm: print more details for bad_page()
2014-01-23 16:36:50 -08:00
bootmem.c
mm/bootmem.c: remove unused local `map'
2013-11-13 12:09:09 +09:00
bounce.c
block: Convert bio_for_each_segment() to bvec_iter
2013-11-23 22:33:49 -08:00
cleancache.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
compaction.c
mm: improve documentation of page_order
2014-01-23 16:36:53 -08:00
debug-pagealloc.c
dmapool.c
fadvise.c
failslab.c
filemap.c
fix O_SYNC|O_APPEND syncing the wrong range on write()
2014-02-09 15:18:09 -05:00
filemap_xip.c
seqcount: Add lockdep functionality to seqcount/seqlock structures
2013-11-06 12:40:26 +01:00
fremap.c
mm: fix use-after-free in sys_remap_file_pages
2014-01-02 14:40:30 -08:00
frontswap.c
highmem.c
huge_memory.c
mm: include VM_MIXEDMAP flag in the VM_SPECIAL list to avoid m(un)locking
2014-03-04 07:55:48 -08:00
hugetlb.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
hugetlb_cgroup.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
hwpoison-inject.c
mm/hwpoison: add '#' to hwpoison_inject
2014-01-21 16:19:48 -08:00
init-mm.c
internal.h
mm/page-writeback.c: do not count anon pages as dirtyable memory
2014-01-29 16:22:39 -08:00
interval_tree.c
Kconfig
zsmalloc: move it under mm
2014-01-30 16:56:55 -08:00
Kconfig.debug
kmemcheck.c
kmemleak-test.c
kmemleak.c
mm: kmemleak: avoid false negatives on vmalloc'ed objects
2013-11-13 12:09:07 +09:00
ksm.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
list_lru.c
mm: list_lru: fix almost infinite loop causing effective livelock
2013-10-30 12:57:46 -07:00
maccess.c
madvise.c
mm/hwpoison: fix traversal of hugetlbfs pages to avoid printk flood
2013-09-30 14:31:02 -07:00
Makefile
zsmalloc: move it under mm
2014-01-30 16:56:55 -08:00
memblock.c
memblock: add limit checking to memblock_virt_alloc
2014-01-29 16:22:40 -08:00
memcontrol.c
memcg: reparent charges of children before processing parent
2014-03-04 07:55:48 -08:00
memory-failure.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
memory.c
mm, thp: fix infinite loop on memcg OOM
2014-02-25 15:25:44 -08:00
memory_hotplug.c
mm/memory_hotplug.c: move register_memory_resource out of the lock_memory_hotplug
2014-01-23 16:36:52 -08:00
mempolicy.c
mm/mempolicy.c: fix mempolicy printing in numa_maps
2014-01-30 16:56:56 -08:00
mempool.c
mm/mempool.c: convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
2013-09-11 15:58:14 -07:00
migrate.c
mm/migrate.c: fix setting of cpupid on page migration twice against normal page
2014-01-27 21:02:40 -08:00
mincore.c
mm: do_mincore() cleanup
2014-01-23 16:36:52 -08:00
mlock.c
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
2014-01-23 16:36:50 -08:00
mm_init.c
mm: bring back /sys/kernel/mm
2014-01-27 21:02:39 -08:00
mmap.c
mm: ignore VM_SOFTDIRTY on VMA merging
2014-01-23 16:36:53 -08:00
mmu_context.c
mmu_notifier.c
mm: audit/fix non-modular users of module_init in core code
2014-01-23 16:36:52 -08:00
mmzone.c
mm: numa: Change page last {nid,pid} into {cpu,pid}
2013-10-09 14:47:45 +02:00
mprotect.c
mm: Use ptep/pmdp_set_numa() for updating _PAGE_NUMA bit
2014-02-17 11:19:36 +11:00
mremap.c
mm: revert mremap pud_free anti-fix
2013-10-16 21:35:53 -07:00
msync.c
nobootmem.c
mm/nobootmem: free_all_bootmem again
2014-01-23 16:36:52 -08:00
nommu.c
mm: add overcommit_kbytes sysctl variable
2014-01-21 16:19:44 -08:00
oom_kill.c
mm, oom: base root bonus on current usage
2014-01-30 16:56:56 -08:00
page-writeback.c
mm: __set_page_dirty_nobuffers() uses spin_lock_irqsave() instead of spin_lock_irq()
2014-02-06 13:48:51 -08:00
page_alloc.c
mm: page_alloc: exempt GFP_THISNODE allocations from zone fairness
2014-03-04 07:55:50 -08:00
page_cgroup.c
Merge branch 'akpm' (incoming from Andrew)
2014-01-21 19:05:45 -08:00
page_io.c
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
2014-01-30 11:19:05 -08:00
page_isolation.c
mm: memory-hotplug: enable memory hotplug to handle hugepage
2013-09-11 15:57:48 -07:00
pagewalk.c
mm/pagewalk.c: fix walk_page_range() access of wrong PTEs
2013-10-30 14:27:03 -07:00
percpu-km.c
percpu-vm.c
percpu.c
Merge branch 'akpm' (incoming from Andrew)
2014-01-21 19:05:45 -08:00
pgtable-generic.c
mm: fix TLB flush race between migration, and change_protection_range
2013-12-18 19:04:51 -08:00
process_vm_access.c
quicklist.c
readahead.c
mm/readahead.c: fix do_readahead() for no readpage(s)
2014-01-29 16:22:40 -08:00
rmap.c
mm/rmap: fix coccinelle warnings
2014-01-23 16:36:53 -08:00
shmem.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-01-28 08:38:04 -08:00
slab.c
mm: Fix warning on make htmldocs caused by slab.c
2014-01-31 13:52:25 +02:00
slab.h
memcg, slab: RCU protect memcg_params for root caches
2014-01-23 16:36:51 -08:00
slab_common.c
slab: fix wrong retval on kmem_cache_create_memcg error path
2014-01-29 16:22:40 -08:00
slob.c
mm/sl[aou]b: Move kmallocXXX functions to common code
2013-09-04 20:51:33 +03:00
slub.c
slub: do not assert not having lock in removing freed partial
2014-02-10 16:01:42 -08:00
sparse-vmemmap.c
mm/sparse: use memblock apis for early memory allocations
2014-01-21 16:19:47 -08:00
sparse.c
mm/sparse: use memblock apis for early memory allocations
2014-01-21 16:19:47 -08:00
swap.c
mm: close PageTail race
2014-03-04 07:55:47 -08:00
swap_state.c
swap: add a simple detector for inappropriate swapin readahead
2014-02-06 13:48:51 -08:00
swapfile.c
mm/swap: fix race on swap_info reuse between swapoff and swapon
2014-02-06 13:48:51 -08:00
truncate.c
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
util.c
mm: add overcommit_kbytes sysctl variable
2014-01-21 16:19:44 -08:00
vmalloc.c
Revert "mm/vmalloc: interchage the implementation of vmalloc_to_{pfn,page}"
2014-01-27 21:02:39 -08:00
vmpressure.c
arm, pm, vmpressure: add missing slab.h includes
2014-02-03 13:24:01 -05:00
vmscan.c
mm/page-writeback.c: do not count anon pages as dirtyable memory
2014-01-29 16:22:39 -08:00
vmstat.c
mm, x86: Account for TLB flushes only when debugging
2014-01-25 09:10:41 +01:00
zbud.c
mm/zbud: fix some trivial typos in comments
2013-09-11 15:57:35 -07:00
zsmalloc.c
zsmalloc: add copyright
2014-01-30 16:56:55 -08:00
zswap.c
mm/zswap.c: change params from hidden to ro
2014-01-23 16:36:50 -08:00