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?