Hi,

On Mon, 23 Feb 2026 09:15:44 -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 | 34 +++++++++++++++++++++++++---------
>  1 file changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h
> index 1212f6a7c223e..15b31281f0955 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;

All entries saves current->pid in common_pid field. Can you use
this common field?

# cat events/vmscan/mm_vmscan_reclaim_pages/format 
name: mm_vmscan_reclaim_pages
ID: 590
format:
        field:unsigned short common_type;       offset:0;       size:2; 
signed:0;
        field:unsigned char common_flags;       offset:2;       size:1; 
signed:0;
        field:unsigned char common_preempt_count;       offset:3;       size:1; 
signed:0;
        field:int common_pid;   offset:4;       size:4; signed:1;    ## 
<------------here

        field:int nid;  offset:8;       size:4; signed:1;
        field:unsigned long nr_scanned; offset:16;      size:8; signed:0;
        field:unsigned long nr_reclaimed;       offset:24;      size:8; 
signed:0;
        field:unsigned long nr_dirty;   offset:32;      size:8; signed:0;
        field:unsigned long nr_writeback;       offset:40;      size:8; 
signed:0;
        field:unsigned long nr_congested;       offset:48;      size:8; 
signed:0;
        field:unsigned long nr_immediate;       offset:56;      size:8; 
signed:0;
        field:unsigned int nr_activate0;        offset:64;      size:4; 
signed:0;
        field:unsigned int nr_activate1;        offset:68;      size:4; 
signed:0;
        field:unsigned long nr_ref_keep;        offset:72;      size:8; 
signed:0;
        field:unsigned long nr_unmap_fail;      offset:80;      size:8; 
signed:0;

Thank you,

-- 
Masami Hiramatsu (Google) <[email protected]>

Reply via email to