On Thu, Apr 6, 2023 at 9:15 AM Lorenz Bauer <lmb@xxxxxxxxxxxxx> wrote: > > On Wed, Apr 5, 2023 at 6:44 PM Andrii Nakryiko > <andrii.nakryiko@xxxxxxxxx> wrote:> > > We could and I thought about this, but verifier logging is quite an > > expensive operation due to all the extra formatting and reporting, so > > it's not advised to have log_level=1 permanently enabled for > > production BPF program loading. > > Any idea how expensive this is? > It will depend on the specific program, of course. But just to estimate, here's pyperf100 selftests with log_level=1 and log_level=4 (just stats, basically free). [vmuser@archvm bpf]$ time sudo ./veristat pyperf100.bpf.o -v >/dev/null real 0m1.761s user 0m0.008s sys 0m1.743s [vmuser@archvm bpf]$ time sudo ./veristat pyperf100.bpf.o >/dev/null real 0m0.869s user 0m0.009s sys 0m0.846s 2x difference. So I'd definitely not recommend running with log_level=1 by default. > > Note that even if log_buf==NULL when log_level>0 we'd be > > doing printf()-ing everything, which is the expensive part. So do you > > really want to add all this extra overhead *constantly* to all > > production BPF programs? > > No, I'm just going off of what UAPI I would like to use. Keeping > semantics as they are is fine if it's too slow. We could always use a > small-ish buffer for the first retry and hope things fit. It's easy for me to implement it either way, Alexei and Daniel, any thoughts on this?