Re: [PATCH] mm: fix pgalloc_stall on unpopulated zone

From: Minchan Kim
Date: Thu Jul 14 2016 - 04:58:13 EST


On Thu, Jul 14, 2016 at 09:51:53AM +0100, Mel Gorman wrote:
> On Thu, Jul 14, 2016 at 10:11:19AM +0900, Minchan Kim wrote:
> > > The patch means that the vmstat accounting and tracepoint data is also
> > > out of sync. One thing I wanted to be able to do was
> > >
> > > 1. Observe that there are alloc stalls on DMA32 or some other low zone
> > > 2. Activate mm_vmscan_direct_reclaim_begin, filter on classzone_idx ==
> > > DMA32 and identify the source of the lowmem allocations
> > >
> > > If your patch is applied, I cannot depend on the stall stats any more
> > > and the tracepoint is required to determine if there really any
> > > zone-contrained allocations. It can be *inferred* from the skip stats
> > > but only if such skips occurred and that is not guaranteed.
> >
> > Just a nit:
> >
> > Hmm, can't we omit classzone_idx in mm_vm_scan_direct_begin_template?
> > Because every functions already have gfp_flags so that we can classzone_idx
> > via gfp_zone(gfp_flags) without passing it.
> >
>
> We could but it's potentially wrong. classzone_idx *should* be derived
> from the gfp_flags but it's possible a bug would lead it to be another
> value. The saving from passing it in is marginal at best.
>
> If it's omitted from the tracepoint itself, there is a small amount of
> disk saving which is potentially significant if there is a lot of direct
> reclaim. Unfortunately, it also makes it harder to filter that
> tracepoint because the filter rules must be an implementation of
> gfp_zone.
>
> Right now I believe the saving is marginal and the cost of potentially
> using the wrong information or making the filtering harder offsets that
> marginal saving.

Agreed.

Thanks.