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 | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index 93a9a9ba9405d..d438abfa03ebb 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -121,19 +121,23 @@ DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, TP_STRUCT__entry( __field( unsigned long, gfp_flags ) __field( int, order ) + __field( int, pid ) __field( unsigned short, memcg_id ) ), TP_fast_assign( __entry->gfp_flags = (__force unsigned long)gfp_flags; __entry->order = order; + __entry->pid = current->pid; __entry->memcg_id = memcg_id; ), - TP_printk("order=%d gfp_flags=%s memcg_id=%u", + TP_printk("order=%d gfp_flags=%s pid=%d memcg_id=%u %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, @@ -167,17 +171,21 @@ DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_end_template, TP_STRUCT__entry( __field( unsigned long, nr_reclaimed ) + __field( int, pid ) __field( unsigned short, memcg_id ) ), TP_fast_assign( __entry->nr_reclaimed = nr_reclaimed; + __entry->pid = current->pid; __entry->memcg_id = memcg_id; ), - TP_printk("nr_reclaimed=%lu memcg_id=%u", + TP_printk("nr_reclaimed=%lu pid=%d memcg_id=%u %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, @@ -222,6 +230,7 @@ TRACE_EVENT(mm_shrink_slab_start, __field(unsigned long, total_scan) __field(int, priority) __field(int, nid) + __field(int, pid) __field(unsigned short, memcg_id) ), @@ -235,20 +244,23 @@ TRACE_EVENT(mm_shrink_slab_start, __entry->total_scan = total_scan; __entry->priority = priority; __entry->nid = sc->nid; + __entry->pid = current->pid; __entry->memcg_id = sc->memcg ? cgroup_id(sc->memcg->css.cgroup) : 0; ), - TP_printk("%pS %p: nid: %d memcg_id: %u 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: %u 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(unsigned short, memcg_id) ), TP_fast_assign( __entry->shr = shr; - __entry->shrink = shr->scan_objects; __entry->unused_scan = unused_scan_cnt; __entry->new_scan = new_scan_cnt; __entry->total_scan = total_scan; __entry->nid = sc->nid; __entry->retval = shrinker_retval; + __entry->pid = current->pid; __entry->memcg_id = cgroup_id(sc->memcg->css.cgroup); ), - TP_printk("%pS %p: nid: %d memcg_id: %u 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: %u 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
