linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 00/15] compaction: balancing overhead and success rates
@ 2014-07-16 13:48 Vlastimil Babka
  2014-07-16 13:48 ` [PATCH V4 01/15] mm, THP: don't hold mmap_sem in khugepaged when allocating THP Vlastimil Babka
                   ` (14 more replies)
  0 siblings, 15 replies; 31+ messages in thread
From: Vlastimil Babka @ 2014-07-16 13:48 UTC (permalink / raw)
  To: linux-mm, Andrew Morton, David Rientjes
  Cc: linux-kernel, Vlastimil Babka, Christoph Lameter, Joonsoo Kim,
	Mel Gorman, Michal Nazarewicz, Minchan Kim, Naoya Horiguchi,
	Rik van Riel, Zhang Yanfei

Based on next-20140715.

After a while, here's a V4 of series tweaking memory compaction.

Additional evaluation was made with stress-highalloc configured to use
__GFP_NO_KSWAPD, which makes it look like a THP page fault, so it only does
async compaction and is more likely to abort. This led to different (mostly
better) results in patches 10, 11 and 15, which is according to expectation.

Major changes in V4:

- Patch 2 changed deferred compaction signalling to a new return value instead
  of boolean pointer (suggested by Joonsoo Kim)

- Patch 3 is a new small change to make compact_stall reporting more accurate.
  I did it separately instead of within patch 2, as that one can also change
  reported compact_stall for other reasons, so bisectability etc...

- Patch 5 (previously 4) is bigger than last time as according to the
  suggestions it has gone all way to make isolate_migratepages family of
  functions to be the same as isolate_freepages family. So there is now a
  separate isolate_migratepages_block() function, and redundant parameters
  were removed across both families of functions.

- Patch 6 is a new patch triggered by Naoya Horiguchi's suggestion. It further
  unifies the scanner families and removes a per-page page_zone check from
  the migration scanner.

- Patch 7 (previously 5) was, after some discussions with Minchan Kim, changed
  to affect only khugepaged. For that reason, the contention type is passed
  back all the way to __alloc_pages_slowpath() where the decisions to continue
  or abort are made. I also changed the enum to a simple int, as the enum
  definition would otherwise had to be included in more source files.
  Also there are now hopefully no remaining holes where need_sched() or fatal
  signal pending would not lead to immediate abort through all the layers of
  direct compaction.

- Patch 15 remains a RFC, as there are still some not fully clear consequences,
  and I need to measure whether not calling update_pageblock_skip() in the
  skip_on_failure mode is a good decision. It probably isn't, as not marking
  the pageblock as skipped and not updating cached pfn means pageblocks will
  be checked repeatedly. On the other hand, marking pageblock as unsuitable
  for compaction, even though it was not fully scanned to due skip_on_failure,
  means that a lower-order compaction could succeed, but won't try the
  pageblock. Sigh.
 
David Rientjes (2):
  mm: rename allocflags_to_migratetype for clarity
  mm, compaction: pass gfp mask to compact_control

Vlastimil Babka (13):
  mm, THP: don't hold mmap_sem in khugepaged when allocating THP
  mm, compaction: defer each zone individually instead of preferred zone
  mm, compaction: do not count compact_stall if all zones skipped
    compaction
  mm, compaction: do not recheck suitable_migration_target under lock
  mm, compaction: move pageblock checks up from
    isolate_migratepages_range()
  mm, compaction: reduce zone checking frequency in the migration
    scanner
  mm, compaction: khugepaged should not give up due to need_resched()
  mm, compaction: periodically drop lock and restore IRQs in scanners
  mm, compaction: skip rechecks when lock was already held
  mm, compaction: remember position within pageblock in free pages
    scanner
  mm, compaction: skip buddy pages by their order in the migrate scanner
  mm, compaction: try to capture the just-created high-order freepage
  mm, compaction: do not migrate pages when that cannot satisfy page
    fault allocation

 include/linux/compaction.h |  28 +-
 include/linux/gfp.h        |   2 +-
 mm/compaction.c            | 781 ++++++++++++++++++++++++++++++++-------------
 mm/huge_memory.c           |  20 +-
 mm/internal.h              |  28 +-
 mm/page_alloc.c            | 189 ++++++++---
 6 files changed, 752 insertions(+), 296 deletions(-)

-- 
1.8.4.5

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-07-25 15:50 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-16 13:48 [PATCH V4 00/15] compaction: balancing overhead and success rates Vlastimil Babka
2014-07-16 13:48 ` [PATCH V4 01/15] mm, THP: don't hold mmap_sem in khugepaged when allocating THP Vlastimil Babka
2014-07-25 12:18   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 02/15] mm, compaction: defer each zone individually instead of preferred zone Vlastimil Babka
2014-07-25 12:20   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 03/15] mm, compaction: do not count compact_stall if all zones skipped compaction Vlastimil Babka
2014-07-25 12:22   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 04/15] mm, compaction: do not recheck suitable_migration_target under lock Vlastimil Babka
2014-07-25 12:23   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 05/15] mm, compaction: move pageblock checks up from isolate_migratepages_range() Vlastimil Babka
2014-07-25 12:28   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 06/15] mm, compaction: reduce zone checking frequency in the migration scanner Vlastimil Babka
2014-07-25 12:29   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 07/15] mm, compaction: khugepaged should not give up due to need_resched() Vlastimil Babka
2014-07-25 12:31   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 08/15] mm, compaction: periodically drop lock and restore IRQs in scanners Vlastimil Babka
2014-07-25 12:32   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 09/15] mm, compaction: skip rechecks when lock was already held Vlastimil Babka
2014-07-25 12:34   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 10/15] mm, compaction: remember position within pageblock in free pages scanner Vlastimil Babka
2014-07-25 12:35   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 11/15] mm, compaction: skip buddy pages by their order in the migrate scanner Vlastimil Babka
2014-07-25 12:36   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 12/15] mm: rename allocflags_to_migratetype for clarity Vlastimil Babka
2014-07-25 12:37   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 13/15] mm, compaction: pass gfp mask to compact_control Vlastimil Babka
2014-07-25 12:38   ` Mel Gorman
2014-07-16 13:48 ` [PATCH V4 14/15] mm, compaction: try to capture the just-created high-order freepage Vlastimil Babka
2014-07-25 12:56   ` Mel Gorman
2014-07-25 15:49     ` Vlastimil Babka
2014-07-16 13:48 ` [RFC PATCH V4 15/15] mm, compaction: do not migrate pages when that cannot satisfy page fault allocation Vlastimil Babka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).