On Mon, Nov 29, 2021 at 7:07 PM Joanne Koong <joannekoong@xxxxxx> wrote: > > This patchset add a new helper, bpf_loop. > > One of the complexities of using for loops in bpf programs is that the verifier > needs to ensure that in every possibility of the loop logic, the loop will always > terminate. As such, there is a limit on how many iterations the loop can do. > > The bpf_loop helper moves the loop logic into the kernel and can thereby > guarantee that the loop will always terminate. The bpf_loop helper simplifies > a lot of the complexity the verifier needs to check, as well as removes the > constraint on the number of loops able to be run. > > From the test results, we see that using bpf_loop in place > of the traditional for loop led to a decrease in verification time > and number of bpf instructions by ~99%. The benchmark results show > that as the number of iterations increases, the overhead per iteration > decreases. > > The high-level overview of the patches - > Patch 1 - kernel-side + API changes for adding bpf_loop > Patch 2 - tests > Patch 3 - use bpf_loop in strobemeta + pyperf600 and measure verifier performance > Patch 4 - benchmark for throughput + latency of bpf_loop call > > v3 -> v4: > ~ Address nits: use usleep for triggering bpf programs, fix copyright style Applied. Thanks