On Mon, Jan 9, 2023 at 10:25 PM Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx> wrote: > > Yuanchu Xie <yuanchu@xxxxxxxxxx> writes: > > > Introduce a way of monitoring the working set of a workload, per page > > type and per NUMA node, with granularity in minutes. It has page-level > > granularity and minimal memory overhead by building on the > > Multi-generational LRU framework, which already has most of the > > infrastructure and is just missing a useful interface. > > > > MGLRU organizes pages in generations, where an older generation contains > > colder pages, and aging promotes the recently used pages into the young > > generation and creates a new one. The working set size is how much > > memory an application needs to keep working, the amount of "hot" memory > > that's frequently used. The only missing pieces between MGLRU > > generations and working set estimation are a consistent aging cadence > > and an interface; we introduce the two additions. > > So with kold kthread do we need aging in reclaim ? Should we switch reciam > to wakeup up kold kthread to do aging instead of doing try_to_inc_max_seq? > This would also help us to try different aging mechanism which can run > better in a kthread. If I understand correctly, MGLRU tries to put off aging as much as possible for reclaim, and prefers aging uniformly in kswapd, so that already sort of happens. With periodic aging on, reclaim only triggers aging when it reclaims memory less than (MIN_NR_GENS * aging_interval) cold.