On Wed, Jan 15, 2025 at 06:06:25AM -0600, Donet Tom wrote: > An MGLRU page cache page is eligible for promotion when: > > 1. Memory Tiering and pagecache_promotion_enabled are enabled > 2. It resides in a lower memory tier. > 3. It is referenced. > 4. It is part of the working set. > 5. It belongs to the active list. > For MGLRU, the youngest generation and the youngest generation - 1 > are treated as the active list. ... why do you only promote folios if they belong to a memcg? > +promo_candid: > + if (!folio_test_isolated(folio) && > + (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) && > + numa_pagecache_promotion_enabled) { > + memcg = folio_memcg(folio); > + if (memcg) { > + lruvec = mem_cgroup_lruvec(memcg, folio_pgdat(folio)); > + gen = folio_lru_gen(folio); > + > + if ((gen < MAX_NR_GENS) && lru_gen_is_active(lruvec, gen)) > + promotion_candidate(folio); > + } Should there be an 'else' clause here? Or should it be: lruvec = mem_cgroup_lruvec(memcg, folio_pgdat(folio)); gen = folio_lru_gen(folio); if ((gen < MAX_NR_GENS) && lru_gen_is_active(lruvec, gen)) promotion_candidate(folio);