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

Based on next-20140728.

Here's v5 of the series. I declared v4 ready on friday, so obviously I had to
immediately realize there's bug in one of the patches. So here's a new posting
with these changes:

- Patch 14 had two issues in v4. The major issue was leaking captured pages
  when called from compact_pgdat() by kswapd. I thought that checking for
  cc->order is enough to recognize a direct compaction, but missed that kswapd
  also uses an order > 0 and does not consume any page. Fixed by adopting the
  approach in original capture commit 1fb3f8ca0e92: cc->capture_page is no
  longer a "struct page *", but "struct page **" and only when it's non-NULL
  (in direct compaction) it means the caller wants a captured page pointer
  filled there.

  The minor issue was that during changes from v3 and v4, a rebase snafu lead
  to removing the check whether to capture pages, based on matching pageblock
  migratetype. So it could e.g. capture a page for UNMOVABLE allocation inside
  a MOVABLE pageblock, which is undesired. So in v5 the check is back and
  slightly improved by observing that if we want the whole pageblock, it does
  not matter what its migratetype is.

- Patch 15 dropped for now (was always RFC), will appear in future series, as
  it was negatively affecting extfrag. The (theoretical so far) explanation is
  that by aggressively skipping a pageblock as soon as it cannot be completely
  compacted, we fail to create lower-than-9-order free pages that could still
  be  otherwise created. Since page stealing works by stealing the
  highest-order-available page and then satisfying potentially many allocations
  from that, lack of high-order pages means more stealing events in potentially
  more different pageblocks, so that many MOVABLE pageblocks are polluted, each
  by only a few UNMOVABLE pages, which is still enough to kill the pageblocks
  for the purposes of THP(-like) allocation.

- Patch 7 has benchmark data included.

- Checkpatch fixes applied, Acked-by's from Mel added.

David Rientjes (2):
  mm: rename allocflags_to_migratetype for clarity
  mm, compaction: pass gfp mask to compact_control

Vlastimil Babka (12):
  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

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

-- 
1.8.4.5


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

end of thread, other threads:[~2014-08-04  6:38 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-28 13:11 [PATCH v5 00/14] compaction: balancing overhead and success rates Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 01/14] mm, THP: don't hold mmap_sem in khugepaged when allocating THP Vlastimil Babka
2014-07-28 23:39   ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 02/14] mm, compaction: defer each zone individually instead of preferred zone Vlastimil Babka
2014-07-28 23:59   ` David Rientjes
2014-07-29  9:02     ` Vlastimil Babka
2014-07-29  6:38   ` Joonsoo Kim
2014-07-29  9:12     ` Vlastimil Babka
2014-07-30 16:22       ` Vlastimil Babka
2014-08-01  8:51         ` Vlastimil Babka
2014-08-04  6:45           ` Joonsoo Kim
2014-07-28 13:11 ` [PATCH v5 03/14] mm, compaction: do not count compact_stall if all zones skipped compaction Vlastimil Babka
2014-07-29  0:04   ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 04/14] mm, compaction: do not recheck suitable_migration_target under lock Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 05/14] mm, compaction: move pageblock checks up from isolate_migratepages_range() Vlastimil Babka
2014-07-29  0:29   ` David Rientjes
2014-07-29  0:29     ` David Rientjes
2014-07-29  9:27     ` Vlastimil Babka
2014-07-29  9:27       ` Vlastimil Babka
2014-07-29 23:02       ` David Rientjes
2014-07-29 23:02         ` David Rientjes
2014-07-29 23:21         ` Kirill A. Shutemov
2014-07-29 23:21           ` Kirill A. Shutemov
2014-07-29 23:51           ` David Rientjes
2014-07-29 23:51             ` David Rientjes
2014-07-30  9:27             ` Vlastimil Babka
2014-07-30  9:27               ` Vlastimil Babka
2014-07-30  9:39         ` Vlastimil Babka
2014-07-30  9:39           ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 06/14] mm, compaction: reduce zone checking frequency in the migration scanner Vlastimil Babka
2014-07-29  0:44   ` David Rientjes
2014-07-29  9:31     ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 07/14] mm, compaction: khugepaged should not give up due to need_resched() Vlastimil Babka
2014-07-29  0:59   ` David Rientjes
2014-07-29  9:45     ` Vlastimil Babka
2014-07-29 22:57       ` David Rientjes
2014-07-29  6:53   ` Joonsoo Kim
2014-07-29  7:31     ` David Rientjes
2014-07-29  8:27       ` Joonsoo Kim
2014-07-29  9:16         ` David Rientjes
2014-07-29  9:49       ` Vlastimil Babka
2014-07-29 22:53         ` David Rientjes
2014-07-30  9:08           ` Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 08/14] mm, compaction: periodically drop lock and restore IRQs in scanners Vlastimil Babka
2014-07-29  1:03   ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 09/14] mm, compaction: skip rechecks when lock was already held Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 10/14] mm, compaction: remember position within pageblock in free pages scanner Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 11/14] mm, compaction: skip buddy pages by their order in the migrate scanner Vlastimil Babka
2014-07-29  1:05   ` David Rientjes
2014-07-28 13:11 ` [PATCH v5 12/14] mm: rename allocflags_to_migratetype for clarity Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 13/14] mm, compaction: pass gfp mask to compact_control Vlastimil Babka
2014-07-28 13:11 ` [PATCH v5 14/14] mm, compaction: try to capture the just-created high-order freepage Vlastimil Babka
2014-07-29  7:34   ` Joonsoo Kim
2014-07-29 15:34     ` Vlastimil Babka
2014-07-30  8:39       ` Joonsoo Kim
2014-07-30  9:56         ` Vlastimil Babka
2014-07-30 14:19           ` Joonsoo Kim
2014-07-30 15:05             ` Vlastimil Babka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.