On Sat,  8 Mar 2025 03:46:01 +0000
Martin Liu <[email protected]> wrote:

> ---
>  include/trace/events/kmem.h | 27 +++++++++++++++++++++++++++
>  mm/page_alloc.c             |  2 ++
>  2 files changed, 29 insertions(+)
> 
> diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h
> index 5fd392dae503..9623e68d4d26 100644
> --- a/include/trace/events/kmem.h
> +++ b/include/trace/events/kmem.h
> @@ -375,6 +375,33 @@ TRACE_EVENT(mm_setup_per_zone_wmarks,
>                 __entry->watermark_promo)
>  );
>  
> +TRACE_EVENT(mm_setup_per_zone_lowmem_reserve,
> +
> +     TP_PROTO(struct zone *zone, struct zone *upper_zone, long 
> lowmem_reserve),
> +
> +     TP_ARGS(zone, upper_zone, lowmem_reserve),
> +
> +     TP_STRUCT__entry(
> +             __field(int, node_id)
> +             __string(name, zone->name)
> +             __string(upper_name, upper_zone->name)
> +             __field(long, lowmem_reserve)

Nit, but may be useful. If you want to remove "holes" from the trace
event, I would move the lowmem_reserve to the top. The __string() macro
adds a 4 byte meta data into the structure (that defines the size and
offset of where the string is). That means you can think of __string()
as the same as "int".

The above has three int's followed by a long which on 64bit, would
leave a 4 byte hole just before lowmem_reserve.

-- Steve


> +     ),
> +
> +     TP_fast_assign(
> +             __entry->node_id = zone->zone_pgdat->node_id;
> +             __assign_str(name);
> +             __assign_str(upper_name);
> +             __entry->lowmem_reserve = lowmem_reserve;
> +     ),
> +
> +     TP_printk("node_id=%d zone name=%s upper_zone name=%s 
> lowmem_reserve_pages=%ld",
> +               __entry->node_id,
> +               __get_str(name),
> +               __get_str(upper_name),
> +               __entry->lowmem_reserve)
> +);
> +

Reply via email to