]> Git Repo - linux.git/commit
mm: compaction: memory compaction core
authorMel Gorman <[email protected]>
Mon, 24 May 2010 21:32:27 +0000 (14:32 -0700)
committerLinus Torvalds <[email protected]>
Tue, 25 May 2010 15:06:59 +0000 (08:06 -0700)
commit748446bb6b5a9390b546af38ec899c868a9dbcf0
tree4c27d0805a5e094b39ff938ad60dd270b953a79f
parentc175a0ce7584e5b498fff8cbdb9aa7912aa9fbba
mm: compaction: memory compaction core

This patch is the core of a mechanism which compacts memory in a zone by
relocating movable pages towards the end of the zone.

A single compaction run involves a migration scanner and a free scanner.
Both scanners operate on pageblock-sized areas in the zone.  The migration
scanner starts at the bottom of the zone and searches for all movable
pages within each area, isolating them onto a private list called
migratelist.  The free scanner starts at the top of the zone and searches
for suitable areas and consumes the free pages within making them
available for the migration scanner.  The pages isolated for migration are
then migrated to the newly isolated free pages.

[[email protected]: Fix unsafe optimisation]
[[email protected]: do not schedule work on other CPUs for compaction]
Signed-off-by: Mel Gorman <[email protected]>
Acked-by: Rik van Riel <[email protected]>
Reviewed-by: Minchan Kim <[email protected]>
Cc: KOSAKI Motohiro <[email protected]>
Cc: Christoph Lameter <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/compaction.h [new file with mode: 0644]
include/linux/migrate.h
include/linux/mm.h
include/linux/swap.h
include/linux/vmstat.h
mm/Makefile
mm/compaction.c [new file with mode: 0644]
mm/migrate.c
mm/page_alloc.c
mm/vmstat.c
This page took 0.053183 seconds and 4 git commands to generate.