[DTrace-devel] [PATCH] bpf: allocate the buffers BPF map to fit highest CPU id

Eugene Loh eugene.loh at oracle.com
Thu Dec 11 23:16:37 UTC 2025


On 12/11/25 17:22, Kris Van Hees via DTrace-devel wrote:

> Even when less than the possible number of CPUs are online, the 'buffers'
> BPF map should be allocated based on the highest possible CPU id because
> probe data is written to the bufer

s/bufer/buffer/

I guess a problem here is that we do not test this case.  It would be 
hard, but I suppose we should change this situation?

What are the chances of our at least writing out what is per online CPU 
and what is per possible CPU id?  That way, a future developer would 
(hopefully) not have to reverse engineer this stuff.

It seems to me that this patch is an improvement over the status quo.  
On the other hand, given the limitations on what we're doing -- notably, 
the lack of regular, automated testing -- that should probably at least 
be acknowledged in the commit message.

> that corresponds to a given CPU id,
> which could be part of non-sequential CPU id configurations.
>
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_bpf.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libdtrace/dt_bpf.c b/libdtrace/dt_bpf.c
> index 0a57b7d2..6568a572 100644
> --- a/libdtrace/dt_bpf.c
> +++ b/libdtrace/dt_bpf.c
> @@ -755,7 +755,7 @@ gmap_create_buffers(dtrace_hdl_t *dtp)
>   {
>   	return create_gmap(dtp, "buffers", BPF_MAP_TYPE_PERF_EVENT_ARRAY,
>   			   sizeof(uint32_t), sizeof(uint32_t),
> -			   dtp->dt_conf.num_online_cpus);
> +			   dtp->dt_conf.max_cpuid);
>   }
>   
>   /*



More information about the DTrace-devel mailing list