Re: [BPF PATCH for-next] cgroup/bpf: fast path for not loaded skb BPF filtering

From: Pavel Begunkov
Date: Tue Dec 14 2021 - 13:00:43 EST


On 12/14/21 17:54, sdf@xxxxxxxxxx wrote:
On 12/11, Pavel Begunkov wrote:
On 12/11/21 01:56, Martin KaFai Lau wrote:
> On Sat, Dec 11, 2021 at 01:15:05AM +0000, Pavel Begunkov wrote:
> > That was the first idea, but it's still heavier than I'd wish. 0.3%-0.7%
> > in profiles, something similar in reqs/s. rcu_read_lock/unlock() pair is
> > cheap but anyway adds 2 barrier()s, and with bitmasks we can inline
> > the check.
> It sounds like there is opportunity to optimize
> __cgroup_bpf_prog_array_is_empty().
>
> How about using rcu_access_pointer(), testing with &empty_prog_array.hdr,
> and then inline it?  The cgroup prog array cannot be all
> dummy_bpf_prog.prog.  If that could be the case, it should be replaced
> with &empty_prog_array.hdr earlier, so please check.

I'd need to expose and export empty_prog_array, but that should do.
Will try it out, thanks

Note that we already use __cgroup_bpf_prog_array_is_empty in
__cgroup_bpf_run_filter_setsockopt/__cgroup_bpf_run_filter_getsockopt
for exactly the same purpose. If you happen to optimize it, pls
update these places as well.

Just like it's already done in the patch? Or maybe you mean something else?

--
Pavel Begunkov