On 6/28/2023 9:56 AM, Alexei Starovoitov wrote: > From: Alexei Starovoitov <ast@xxxxxxxxxx> > > Let free_all() helper return the number of freed elements. > It's not used in this patch, but helps in debug/development of bpf_mem_alloc. > > For example this diff for __free_rcu(): > - free_all(llist_del_all(&c->waiting_for_gp_ttrace), !!c->percpu_size); > + printk("cpu %d freed %d objs after tasks trace\n", raw_smp_processor_id(), > + free_all(llist_del_all(&c->waiting_for_gp_ttrace), !!c->percpu_size)); > > would show how busy RCU tasks trace is. > In artificial benchmark where one cpu is allocating and different cpu is freeing > the RCU tasks trace won't be able to keep up and the list of objects > would keep growing from thousands to millions and eventually OOMing. > > Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> Acked-by: Hou Tao <houtao1@xxxxxxxxxx>