On Fri, 13 Feb 2026 10:15:37 -0800 Thomas Ballasi <[email protected]> wrote:
> The changes aims at adding additionnal tracepoints variables to help > debuggers attribute them to specific processes. > > The PID field uses in_task() to reliably detect when we're in process > context and can safely access current->pid. When not in process > context (such as in interrupt or in an asynchronous RCU context), the > field is set to -1 as a sentinel value. > > Signed-off-by: Thomas Ballasi <[email protected]> > --- > include/trace/events/vmscan.h | 35 +++++++++++++++++++++++++---------- > 1 file changed, 25 insertions(+), 10 deletions(-) > > diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h > index 1212f6a7c223e..a68b712ef757a 100644 > --- a/include/trace/events/vmscan.h > +++ b/include/trace/events/vmscan.h > @@ -122,18 +122,22 @@ > DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, > __field( unsigned long, gfp_flags ) > __field( u64, memcg_id ) > __field( int, order ) > + __field( int, pid ) > ), > > TP_fast_assign( > __entry->gfp_flags = (__force unsigned long)gfp_flags; > __entry->order = order; > + __entry->pid = current->pid; > __entry->memcg_id = mem_cgroup_id(memcg); > ), > > - TP_printk("order=%d gfp_flags=%s memcg_id=%llu", > + TP_printk("order=%d gfp_flags=%s pid=%d memcg_id=%llu %s", > __entry->order, > show_gfp_flags(__entry->gfp_flags), > - __entry->memcg_id) > + __entry->pid, > + __entry->memcg_id, > + __event_in_irq() ? "(in-irq)" : "") > ); > > DEFINE_EVENT(mm_vmscan_direct_reclaim_begin_template, > mm_vmscan_direct_reclaim_begin, > @@ -168,16 +172,20 @@ > DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, > TP_STRUCT__entry( > __field( unsigned long, nr_reclaimed ) > __field( u64, memcg_id ) > + __field( int, pid ) > ), > > TP_fast_assign( > __entry->nr_reclaimed = nr_reclaimed; > __entry->memcg_id = mem_cgroup_id(memcg); > + __entry->pid = current->pid; > ), > > - TP_printk("nr_reclaimed=%lu memcg_id=%llu", > + TP_printk("nr_reclaimed=%lu pid=%d memcg_id=%llu %s", > __entry->nr_reclaimed, > - __entry->memcg_id) > + __entry->pid, > + __entry->memcg_id, > + __event_in_irq() ? "(in-irq)" : "") > ); > > DEFINE_EVENT(mm_vmscan_direct_reclaim_end_template, > mm_vmscan_direct_reclaim_end, > @@ -220,9 +228,10 @@ TRACE_EVENT(mm_shrink_slab_start, > __field(unsigned long, cache_items) > __field(unsigned long long, delta) > __field(unsigned long, total_scan) > + __field(u64, memcg_id) > __field(int, priority) > __field(int, nid) > - __field(u64, memcg_id) > + __field(int, pid) > ), > > TP_fast_assign( > @@ -236,19 +245,22 @@ TRACE_EVENT(mm_shrink_slab_start, > __entry->priority = priority; > __entry->nid = sc->nid; > __entry->memcg_id = mem_cgroup_id(memcg); > + __entry->pid = current->pid; > ), > > - TP_printk("%pS %p: nid: %d memcg_id: %llu objects to shrink %ld > gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d", > + TP_printk("%pS %p: nid: %d pid: %d memcg_id: %llu objects to shrink %ld > gfp_flags %s cache items %ld delta %lld total_scan %ld priority %d %s", > __entry->shrink, > __entry->shr, > __entry->nid, > + __entry->pid, > __entry->memcg_id, > __entry->nr_objects_to_shrink, > show_gfp_flags(__entry->gfp_flags), > __entry->cache_items, > __entry->delta, > __entry->total_scan, > - __entry->priority) > + __entry->priority, > + __event_in_irq() ? "(in-irq)" : "") > ); > > TRACE_EVENT(mm_shrink_slab_end, > @@ -266,29 +278,32 @@ TRACE_EVENT(mm_shrink_slab_end, > __field(long, total_scan) > __field(int, nid) > __field(int, retval) > + __field(int, pid) > __field(u64, memcg_id) > ), > > TP_fast_assign( > __entry->shr = shr; > - __entry->shrink = shr->scan_objects; __entry->shrink is removed here, but still printed below. Was this an intended change of this commit? > __entry->unused_scan = unused_scan_cnt; > __entry->new_scan = new_scan_cnt; > __entry->total_scan = total_scan; > __entry->nid = nid; > __entry->retval = shrinker_retval; > + __entry->pid = current->pid; > __entry->memcg_id = mem_cgroup_id(memcg); > ), > > - TP_printk("%pS %p: nid: %d memcg_id: %llu unused scan count %ld new > scan count %ld total_scan %ld last shrinker return val %d", > + TP_printk("%pS %p: nid: %d pid: %d memcg_id: %llu unused scan count %ld > new scan count %ld total_scan %ld last shrinker return val %d %s", > __entry->shrink, > __entry->shr, > __entry->nid, > + __entry->pid, > __entry->memcg_id, > __entry->unused_scan, > __entry->new_scan, > __entry->total_scan, > - __entry->retval) > + __entry->retval, > + __event_in_irq() ? "(in-irq)" : "") > ); > > TRACE_EVENT(mm_vmscan_lru_isolate, > -- > 2.33.8 > >
