On 08/16/2017 01:39 AM, David Rientjes wrote: > Kcompactd is needlessly ignoring pageblock skip information. It is doing > MIGRATE_SYNC_LIGHT compaction, which is no more powerful than > MIGRATE_SYNC compaction. > > If compaction recently failed to isolate memory from a set of pageblocks, > there is nothing to indicate that kcompactd will be able to do so, or > that it is beneficial from attempting to isolate memory. > > Use the pageblock skip hint to avoid rescanning pageblocks needlessly > until that information is reset. > > Signed-off-by: David Rientjes <rient...@google.com>
It would be much better if patches like this were accompanied by some numbers. Also there's now a danger that in cases where there's no direct compaction happening (just kcompactd), nothing will ever call __reset_isolation_suitable(). > --- > mm/compaction.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1927,9 +1927,8 @@ static void kcompactd_do_work(pg_data_t *pgdat) > .total_free_scanned = 0, > .classzone_idx = pgdat->kcompactd_classzone_idx, > .mode = MIGRATE_SYNC_LIGHT, > - .ignore_skip_hint = true, > + .ignore_skip_hint = false, > .gfp_mask = GFP_KERNEL, > - > }; > trace_mm_compaction_kcompactd_wake(pgdat->node_id, cc.order, > cc.classzone_idx); >