On Wed, Jul 16, 2025 at 12:35 AM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Tue, Jul 15, 2025 at 1:37 AM Menglong Dong <menglong.dong@xxxxxxxxx> wrote: > > > > > > On 7/15/25 10:25, Alexei Starovoitov wrote: [......] > > > > According to my benchmark, it has ~5% overhead to save/restore > > *5* variants when compared with *0* variant. The save/restore of regs > > is fast, but it still need 12 insn, which can produce ~6% overhead. > > I think it's an ok trade off, because with one global trampoline > we do not need to call rhashtable lookup before entering bpf prog. > bpf prog will do it on demand if/when it needs to access arguments. > This will compensate for a bit of lost performance due to extra save/restore. I just think of another benefit of defining multiple global trampolines here, which you may be interested in. In the feature, we can make the global trampoline supports functions that have 7+ arguments. If we use _one_ global trampoline, it's not possible, as we can't handle the arguments in the stack. However, it's possible if we define different global trampoline for the functions that have different arguments count, and what we need to do in the feature is do some adjustment to CALLER_DEFINE(). Wish you are interested in this idea :) Thanks! Menglong Dong > > PS > pls don't add your chinatelecom.cn email in cc. > gmail just cannot deliver there and it's annoying to keep deleting > it manually in every reply.