[RFC PATCH 0/5] Reduce fragmentation

From: js1304
Date: Thu Oct 13 2016 - 04:09:03 EST

From: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>


This is a patchset to reduce fragmentation. Patch 1 ~ 3 changes
allocation/free logic to reduce fragmentation. Patch 4 ~ 5 is
to manually control number of unmovable/reclaimable pageblock by user.
Usually user has more knowledge about their system and if the number of
unmovable/reclaimable pageblock is pre-defined properly, fragmentation
would be reduced a lot.

I found that this patchset reduce fragmentaion on my test.

System: 512 MB
Workload: Kernel build test (make -j12, 5 times)
Result: Number of mixed movable pageblock / Number of movable pageblock

Base: 50 / 205
Patch 1 ~ 3: 20 / 205
Patchset + 15% Pre-defined unmovable/reclaimable pageblock: 0 / 176

Note that I didn't test hard so I'm not sure if there is a side-effect
or not. If there is no disagreement, I will do more testing and repost
the patchset.

Johannes, this patchset would not help to find the root cause of
your regression but it would help to mitigate your symptom.

This patchset is based on next-20161006.


Joonsoo Kim (5):
mm/page_alloc: always add freeing page at the tail of the buddy list
mm/page_alloc: use smallest fallback page first in movable allocation
mm/page_alloc: stop instantly reusing freed page
mm/page_alloc: add fixed migratetype pageblock infrastructure
mm/page_alloc: support fixed migratetype pageblock

include/linux/mmzone.h | 6 +-
include/linux/pageblock-flags.h | 3 +-
mm/page_alloc.c | 224 ++++++++++++++++++++++++++++++----------
mm/vmstat.c | 7 +-
4 files changed, 179 insertions(+), 61 deletions(-)