On Thu, Jun 11, 2026 at 3:53 AM JP Kobryn <[email protected]> wrote: > > LRU add batches can be drained before they reach capacity. This can be a > source of LRU lock contention, but it is not currently possible to > attribute these drains to callers with existing tracepoints. > > Add mm_lru_add_drain to report the CPU and lru_add batch count when an > lru_add batch is drained. This allows tracing to distinguish full drains > from partial drains and attribute them to the calling stack. > > Add mm_lru_add_drain_all to capture callers of __lru_add_drain_all and > whether they set the force flag for all CPUs. The tracepoint resembles > the signature of the enclosing function, but is needed because of > potential inlining. > > Signed-off-by: JP Kobryn <[email protected]>
Reviewed-by: Barry Song <[email protected]> Some minor nits: [...] > + unsigned int nr_folios_add = folio_batch_count(fbatch); > > - if (folio_batch_count(fbatch)) > + if (nr_folios_add) { > folio_batch_move_lru(fbatch, lru_add); > + trace_mm_lru_add_drain(cpu, nr_folios_add); > + } Would "nr_folios" work here, given the surrounding lru_add context? Alternatively, nr_folios_added might make the meaning a little clearer. Best Regards Barry
