Message ID | 20231012200310.235137-1-hbathini@linux.ibm.com (mailing list archive) |
---|---|
Headers | show |
Series | powerpc/bpf: use BPF prog pack allocator | expand |
On 10/12/23 10:03 PM, Hari Bathini wrote: > Most BPF programs are small, but they consume a page each. For systems > with busy traffic and many BPF programs, this may also add significant > pressure on instruction TLB. High iTLB pressure usually slows down the > whole system causing visible performance degradation for production > workloads. > > bpf_prog_pack, a customized allocator that packs multiple bpf programs > into preallocated memory chunks, was proposed [1] to address it. This > series extends this support on powerpc. > > Both bpf_arch_text_copy() & bpf_arch_text_invalidate() functions, > needed for this support depend on instruction patching in text area. > Currently, patch_instruction() supports patching only one instruction > at a time. The first patch introduces patch_instructions() function > to enable patching more than one instruction at a time. This helps in > avoiding performance degradation while JITing bpf programs. > > Patches 2 & 3 implement the above mentioned arch specific functions > using patch_instructions(). Patch 4 fixes a misnomer in bpf JITing > code. The last patch enables the use of BPF prog pack allocator on > powerpc and also, ensures cleanup is handled gracefully. > > [1] https://lore.kernel.org/bpf/20220204185742.271030-1-song@kernel.org/ > > Changes in v6: > * No changes in patches 2-5/5 except addition of Acked-by tags from Song. > * Skipped merging code path of patch_instruction() & patch_instructions() > to avoid performance overhead observed on ppc32 with that. I presume this will be routed via Michael? Thanks, Daniel
On 16/10/23 5:37 pm, Daniel Borkmann wrote: > On 10/12/23 10:03 PM, Hari Bathini wrote: >> Most BPF programs are small, but they consume a page each. For systems >> with busy traffic and many BPF programs, this may also add significant >> pressure on instruction TLB. High iTLB pressure usually slows down the >> whole system causing visible performance degradation for production >> workloads. >> >> bpf_prog_pack, a customized allocator that packs multiple bpf programs >> into preallocated memory chunks, was proposed [1] to address it. This >> series extends this support on powerpc. >> >> Both bpf_arch_text_copy() & bpf_arch_text_invalidate() functions, >> needed for this support depend on instruction patching in text area. >> Currently, patch_instruction() supports patching only one instruction >> at a time. The first patch introduces patch_instructions() function >> to enable patching more than one instruction at a time. This helps in >> avoiding performance degradation while JITing bpf programs. >> >> Patches 2 & 3 implement the above mentioned arch specific functions >> using patch_instructions(). Patch 4 fixes a misnomer in bpf JITing >> code. The last patch enables the use of BPF prog pack allocator on >> powerpc and also, ensures cleanup is handled gracefully. >> >> [1] https://lore.kernel.org/bpf/20220204185742.271030-1-song@kernel.org/ >> >> Changes in v6: >> * No changes in patches 2-5/5 except addition of Acked-by tags from Song. >> * Skipped merging code path of patch_instruction() & patch_instructions() >> to avoid performance overhead observed on ppc32 with that. > > I presume this will be routed via Michael? Yes, Daniel. This can go via linuxppc tree. Thanks Hari