Re: [PATCH v2 0/9] workingset protection/detection on the anonymous LRU list

From: Andrew Morton
Date: Thu Feb 27 2020 - 18:36:43 EST


On Thu, 27 Feb 2020 08:48:06 -0500 Johannes Weiner <hannes@xxxxxxxxxxx> wrote:

> > It sounds like the above simple aging changes provide most of the
> > improvement, and that the workingset changes are less beneficial and a
> > bit more risky/speculative?
> >
> > If so, would it be best for us to concentrate on the aging changes
> > first, let that settle in and spread out and then turn attention to the
> > workingset changes?
>
> Those two patches work well for some workloads (like the benchmark),
> but not for others. The full patchset makes sure both types work well.
>
> Specifically, the existing aging strategy for anon assumes that most
> anon pages allocated are hot. That's why they all start active and we
> then do second-chance with the small inactive LRU to filter out the
> few cold ones to swap out. This is true for many common workloads.
>
> The benchmark creates a larger-than-memory set of anon pages with a
> flat access profile - to the VM a flood of one-off pages. Joonsoo's
> first two patches allow the VM to usher those pages in and out of
> memory very quickly, which explains the throughput boost. But it comes
> at the cost of reducing space available to hot anon pages, which will
> regress others.
>
> Joonsoo's full patchset makes the VM support both types of workloads
> well: by putting everything on the inactive list first, one-off pages
> can move through the system without disturbing the hot pages. And by
> supplementing the inactive list with non-resident information, he can
> keep it tiny without the risk of one-off pages drowning out new hot
> pages. He can retain today's level of active page protection and
> detection, while allowing one-off pages to move through quickly.

Helpful, thanks.

At v2 with no evident review input I'd normally take a pass at this
stage. But given all the potential benefits, perhaps I should be more
aggressive here?