On Thu, Mar 22, 2018 at 5:40 PM, Alexei Starovoitov <alexei.starovoi...@gmail.com> wrote: > On Thu, Mar 22, 2018 at 10:33:43AM +0100, Ingo Molnar wrote: >> >> - I think the BPF JIT, whose byte code machine languge is used by an >> increasing number of kernel subsystems, could benefit from having vector >> ops. >> It would possibly allow the handling of floating point types. > > this is on our todo list already. > To process certain traffic inside BPF in XDP we'd like to have access to > floating point. The current workaround is to precompute the math and do > bpf map lookup instead. > Since XDP processing of packets is batched (typically up to napi budget > of 64 packets at a time), we can, in theory, wrap the loop with > kernel_fpu_begin/end and it will be cleaner and faster, > but the work hasn't started yet. > The microbenchmark numbers you quoted for xsave/xrestore look promising, > so we probably will focus on it soon. > > Another use case for vector insns is to accelerate fib/lpm lookups > which is likely beneficial for kernel overall regardless of bpf usage. >
This is a further argument for the deferred restore approach IMO. With deferred restore, kernel_fpu_begin() + kernel_fpu_end() has very low amortized cost as long as we do lots of work in the kernel before re-entering userspace. For XDP workloads, this could be a pretty big win, I imagine. Someone just needs to do the nasty x86 work.