On Tue, 2024-08-27 at 13:09 +0200, Johannes Weiner wrote: > > I agree with this. The defer mode is an improvement over the upstream > status quo, no doubt. However, both defer mode and the shrinker solve > the issue of memory waste under pressure, while the shrinker permits > more desirable behavior when memory is abundant. > > So my take is that the shrinker is the way to go, and I don't see a > bonafide usecase for defer mode that the shrinker couldn't cover. > > I would like to take one step back, and think about what some real world workloads might want as a tunable for THP. Workload owners are going to have a real problem trying to figure out what the best value of max_ptes_none should be for their workloads. However, giving workload owners the ability to say "this workload should not waste more than 1GB of memory on zero pages inside THPs", or 500MB, or 4GB or whatever, would then allow the kernel to automatically adjust the max_ptes_none threshold. Once a workload is close to, or exceeding the maximum amount of THP zero page overhead, we could both shrink THPs, and disable direct THP allocation at page fault time for that workload. If we want to give workload owners a predictable, easy to work with tunable, we probably want both the shrinker and the deferred allocation. -- All Rights Reversed.