Re: [PATCH bpf-next v2 2/2] bpf: use realloc in bpf_patch_insn_data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 7 Aug 2025 at 03:02, Eduard Zingerman <eddyz87@xxxxxxxxx> wrote:
>
> Avoid excessive vzalloc/vfree calls when patching instructions in
> do_misc_fixups(). bpf_patch_insn_data() uses vzalloc to allocate new
> memory for env->insn_aux_data for each patch as follows:
>
>   struct bpf_prog *bpf_patch_insn_data(env, ...)
>   {
>     ...
>     new_data = vzalloc(... O(program size) ...);
>     ...
>     adjust_insn_aux_data(env, new_data, ...);
>     ...
>   }
>
>   void adjust_insn_aux_data(env, new_data, ...)
>   {
>     ...
>     memcpy(new_data, env->insn_aux_data);
>     vfree(env->insn_aux_data);
>     env->insn_aux_data = new_data;
>     ...
>   }
>
> The vzalloc/vfree pair is hot in perf report collected for e.g.
> pyperf180 test case. It can be replaced with a call to vrealloc in
> order to reduce the number of actual memory allocations.
>
> This is a stop-gap solution, as bpf_patch_insn_data is still hot in
> the profile. More comprehansive solutions had been discussed before
> e.g. as in [1].
>
> [1] https://lore.kernel.org/bpf/CAEf4BzY_E8MSL4mD0UPuuiDcbJhh9e2xQo2=5w+ppRWWiYSGvQ@xxxxxxxxxxxxxx/
>
> Suggested-by: Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx>
> Signed-off-by: Eduard Zingerman <eddyz87@xxxxxxxxx>
> ---

Acked-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx>

> [...]




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux