Re: [PATCH] mm: page_alloc: High-order per-cpu page allocator v7

From: Mel Gorman
Date: Thu Dec 08 2016 - 04:18:16 EST

On Thu, Dec 08, 2016 at 09:22:31AM +0100, Jesper Dangaard Brouer wrote:
> On Wed, 7 Dec 2016 23:25:31 +0000
> Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Wed, Dec 07, 2016 at 09:19:58PM +0000, Mel Gorman wrote:
> > > At small packet sizes on localhost, I see relatively low page allocator
> > > activity except during the socket setup and other unrelated activity
> > > (khugepaged, irqbalance, some btrfs stuff) which is curious as it's
> > > less clear why the performance was improved in that case. I considered
> > > the possibility that it was cache hotness of pages but that's not a
> > > good fit. If it was true then the first test would be slow and the rest
> > > relatively fast and I'm not seeing that. The other side-effect is that
> > > all the high-order pages that are allocated at the start are physically
> > > close together but that shouldn't have that big an impact. So for now,
> > > the gain is unexplained even though it happens consistently.
> > >
> >
> > Further investigation led me to conclude that the netperf automation on
> > my side had some methodology errors that could account for an artifically
> > low score in some cases. The netperf automation is years old and would
> > have been developed against a much older and smaller machine which may be
> > why I missed it until I went back looking at exactly what the automation
> > was doing. Minimally in a server/client test on remote maching there was
> > potentially higher packet loss than is acceptable. This would account why
> > some machines "benefitted" while others did not -- there would be boot to
> > boot variations that some machines happened to be "lucky". I believe I've
> > corrected the errors, discarded all the old data and scheduled a rest to
> > see what falls out.
> I guess you are talking about setting the netperf socket queue low
> (+256 bytes above msg size), that I pointed out in[1].

Primarily, yes.

> From the same commit[2] I can see you explicitly set (local+remote):
> sysctl net.core.rmem_max=16777216
> sysctl net.core.wmem_max=16777216

Yes, I set it for higher speed networks as a starting point to remind me
to examine rmem_default or socket configurations if any significant packet
loss is observed.

> Eric do you have any advice on this setting?
> And later[4] you further increase this to 32MiB. Notice that the
> netperf UDP_STREAM test will still use the default value from:
> net.core.rmem_default = 212992.

That's expected. In the initial sniff-test, I saw negligible packet loss.
I'm waiting to see what the full set of network tests look like before
doing any further adjustments.

Mel Gorman