mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
mm, compaction: create compact_gap wrapper
Compaction uses a watermark gap of (2UL << order) pages at various places and it's not immediately obvious why. Abstract it through a compact_gap() wrapper to create a single place with a thorough explanation. [[email protected]: clarify the comment of compact_gap()] Link: http://lkml.kernel.org/r/[email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Vlastimil Babka <[email protected]> Tested-by: Lorenzo Stoakes <[email protected]> Acked-by: Michal Hocko <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Joonsoo Kim <[email protected]> Cc: David Rientjes <[email protected]> Cc: Rik van Riel <[email protected]> Signed-off-by: Vlastimil Babka <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
f2b8228c5f
commit
9861a62c33
3 changed files with 29 additions and 7 deletions
|
|
@ -2480,7 +2480,7 @@ static inline bool should_continue_reclaim(struct pglist_data *pgdat,
|
|||
* If we have not reclaimed enough pages for compaction and the
|
||||
* inactive lists are large enough, continue reclaiming
|
||||
*/
|
||||
pages_for_compaction = (2UL << sc->order);
|
||||
pages_for_compaction = compact_gap(sc->order);
|
||||
inactive_lru_pages = node_page_state(pgdat, NR_INACTIVE_FILE);
|
||||
if (get_nr_swap_pages() > 0)
|
||||
inactive_lru_pages += node_page_state(pgdat, NR_INACTIVE_ANON);
|
||||
|
|
@ -2612,7 +2612,7 @@ static inline bool compaction_ready(struct zone *zone, struct scan_control *sc)
|
|||
* there is a buffer of free pages available to give compaction
|
||||
* a reasonable chance of completing and allocating the page
|
||||
*/
|
||||
watermark = high_wmark_pages(zone) + (2UL << sc->order);
|
||||
watermark = high_wmark_pages(zone) + compact_gap(sc->order);
|
||||
watermark_ok = zone_watermark_ok_safe(zone, 0, watermark, sc->reclaim_idx);
|
||||
|
||||
/*
|
||||
|
|
@ -3169,7 +3169,7 @@ static bool kswapd_shrink_node(pg_data_t *pgdat,
|
|||
* excessive reclaim. Assume that a process requested a high-order
|
||||
* can direct reclaim/compact.
|
||||
*/
|
||||
if (sc->order && sc->nr_reclaimed >= 2UL << sc->order)
|
||||
if (sc->order && sc->nr_reclaimed >= compact_gap(sc->order))
|
||||
sc->order = 0;
|
||||
|
||||
return sc->nr_scanned >= sc->nr_to_reclaim;
|
||||
|
|
|
|||
Loading…
Reference in a new issue