Mel Gorman
56de7263fc
mm: compaction: direct compact when a high-order allocation fails
...
Ordinarily when a high-order allocation fails, direct reclaim is entered
to free pages to satisfy the allocation. With this patch, it is
determined if an allocation failed due to external fragmentation instead
of low memory and if so, the calling process will compact until a suitable
page is freed. Compaction by moving pages in memory is considerably
cheaper than paging out to disk and works where there are locked pages or
no swap. If compaction fails to free a page of a suitable size, then
reclaim will still occur.
Direct compaction returns as soon as possible. As each block is
compacted, it is checked if a suitable page has been freed and if so, it
returns.
[akpm@linux-foundation.org: Fix build errors]
[aarcange@redhat.com: fix count_vm_event preempt in memory compaction direct reclaim]
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Acked-by: Rik van Riel <riel@redhat.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Christoph Lameter <cl@linux-foundation.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-05-25 08:06:59 -07:00
..
backing-dev.c
writeback: fixups for !dirty_writeback_centisecs
2010-05-21 20:00:35 +02:00
bootmem.c
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip
2010-04-07 11:02:23 -07:00
bounce.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
compaction.c
mm: compaction: direct compact when a high-order allocation fails
2010-05-25 08:06:59 -07:00
debug-pagealloc.c
dmapool.c
fadvise.c
readahead: introduce FMODE_RANDOM for POSIX_FADV_RANDOM
2010-03-06 11:26:25 -08:00
failslab.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
filemap.c
cpuset,mm: fix no node to alloc memory when changing cpuset's mems
2010-05-25 08:06:57 -07:00
filemap_xip.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
fremap.c
mm: clean up mm_counter
2010-03-06 11:26:23 -08:00
highmem.c
grammar fix in comment
2010-02-05 12:22:40 +01:00
hugetlb.c
cpuset,mm: fix no node to alloc memory when changing cpuset's mems
2010-05-25 08:06:57 -07:00
hwpoison-inject.c
init-mm.c
internal.h
Kconfig
mm: allow CONFIG_MIGRATION to be set without CONFIG_NUMA or memory hot-remove
2010-05-25 08:06:59 -07:00
Kconfig.debug
kmemcheck.c
kmemcheck: Fix build errors due to missing slab.h
2010-03-30 22:02:32 +09:00
kmemleak-test.c
kmemleak.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
ksm.c
mm: migration: share the anon_vma ref counts between KSM and page migration
2010-05-25 08:06:58 -07:00
maccess.c
maccess,probe_kernel: Allow arch specific override probe_kernel_(read|write)
2010-01-07 11:58:36 -06:00
madvise.c
Makefile
mm: compaction: memory compaction core
2010-05-25 08:06:59 -07:00
memcontrol.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2010-05-20 09:20:59 -07:00
memory-failure.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
memory.c
mm: avoid null-pointer deref in sync_mm_rss()
2010-04-07 08:38:02 -07:00
memory_hotplug.c
mm: introduce dump_page() and print symbolic flag names
2010-03-12 15:52:28 -08:00
mempolicy.c
cpuset,mm: fix no node to alloc memory when changing cpuset's mems
2010-05-25 08:06:57 -07:00
mempool.c
migrate.c
mm: compaction: memory compaction core
2010-05-25 08:06:59 -07:00
mincore.c
mincore: do nested page table walks
2010-05-25 08:06:58 -07:00
mlock.c
x86, perf, bts, mm: Delete the never used BTS-ptrace code
2010-03-26 11:33:55 +01:00
mm_init.c
mmap.c
mmap: check ->vm_ops before dereferencing
2010-04-27 08:26:51 -07:00
mmu_context.c
exit: fix oops in sync_mm_rss
2010-03-24 16:31:21 -07:00
mmu_notifier.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
mmzone.c
mprotect.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
mremap.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
msync.c
sanitize vfs_fsync calling conventions
2010-05-21 18:31:21 -04:00
nommu.c
NOMMU: Fix __get_user_pages() to pin last page on offset buffers
2010-03-25 14:13:27 -07:00
oom_kill.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
page-writeback.c
writeback: fix mixed up arguments to bdi_start_writeback()
2010-05-21 20:01:54 +02:00
page_alloc.c
mm: compaction: direct compact when a high-order allocation fails
2010-05-25 08:06:59 -07:00
page_cgroup.c
memcg: avoid use cmpxchg in swap cgroup maintainance
2010-03-17 18:43:47 -07:00
page_io.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
page_isolation.c
pagewalk.c
pagemap: fix pfn calculation for hugepage
2010-04-07 08:38:04 -07:00
percpu-km.c
percpu: implement kernel memory based chunk allocation
2010-05-01 08:30:50 +02:00
percpu-vm.c
percpu: move vmalloc based chunk management into percpu-vm.c
2010-05-01 08:30:50 +02:00
percpu.c
percpu: implement kernel memory based chunk allocation
2010-05-01 08:30:50 +02:00
percpu_up.c
percpu: don't implicitly include slab.h from percpu.h
2010-03-30 22:02:32 +09:00
prio_tree.c
quicklist.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
readahead.c
readahead: fix NULL filp dereference
2010-04-07 08:38:03 -07:00
rmap.c
mm: migration: avoid race between shift_arg_pages() and rmap_walk() during migration by not migrating temporary stacks
2010-05-25 08:06:59 -07:00
shmem.c
shmem: remove redundant code
2010-05-25 08:06:57 -07:00
slab.c
cpuset,mm: fix no node to alloc memory when changing cpuset's mems
2010-05-25 08:06:57 -07:00
slob.c
mm: Move ARCH_SLAB_MINALIGN and ARCH_KMALLOC_MINALIGN to <linux/slob_def.h>
2010-05-19 22:03:13 +03:00
slub.c
cpuset,mm: fix no node to alloc memory when changing cpuset's mems
2010-05-25 08:06:57 -07:00
sparse-vmemmap.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
sparse.c
sparsemem: on no vmemmap path put mem_map on node high too
2010-05-25 08:06:56 -07:00
swap.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
swap_state.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
swapfile.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
2010-05-21 15:26:46 -07:00
thrash.c
truncate.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
util.c
slab: Generify kernel pointer validation
2010-04-09 10:09:50 -07:00
vmalloc.c
mm: purge fragmented percpu vmap blocks
2010-02-02 12:50:47 -08:00
vmscan.c
mm: move definition for LRU isolation modes to a header
2010-05-25 08:06:59 -07:00
vmstat.c
mm: compaction: direct compact when a high-order allocation fails
2010-05-25 08:06:59 -07:00