-
- Downloads
bpf: Remove extra lock_sock for TCP_ZEROCOPY_RECEIVE
Add custom implementation of getsockopt hook for TCP_ZEROCOPY_RECEIVE. We skip generic hooks for TCP_ZEROCOPY_RECEIVE and have a custom call in do_tcp_getsockopt using the on-stack data. This removes 3% overhead for locking/unlocking the socket. Without this patch: 3.38% 0.07% tcp_mmap [kernel.kallsyms] [k] __cgroup_bpf_run_filter_getsockopt | --3.30%--__cgroup_bpf_run_filter_getsockopt | --0.81%--__kmalloc With the patch applied: 0.52% 0.12% tcp_mmap [kernel.kallsyms] [k] __cgroup_bpf_run_filter_getsockopt_kern Note, exporting uapi/tcp.h requires removing netinet/tcp.h from test_progs.h because those headers have confliciting definitions. Signed-off-by:Stanislav Fomichev <sdf@google.com> Signed-off-by:
Alexei Starovoitov <ast@kernel.org> Acked-by:
Martin KaFai Lau <kafai@fb.com> Link: https://lore.kernel.org/bpf/20210115163501.805133-2-sdf@google.com
Showing
- include/linux/bpf-cgroup.h 23 additions, 4 deletionsinclude/linux/bpf-cgroup.h
- include/linux/indirect_call_wrapper.h 6 additions, 0 deletionsinclude/linux/indirect_call_wrapper.h
- include/net/sock.h 2 additions, 0 deletionsinclude/net/sock.h
- include/net/tcp.h 1 addition, 0 deletionsinclude/net/tcp.h
- kernel/bpf/cgroup.c 46 additions, 0 deletionskernel/bpf/cgroup.c
- net/ipv4/tcp.c 14 additions, 0 deletionsnet/ipv4/tcp.c
- net/ipv4/tcp_ipv4.c 1 addition, 0 deletionsnet/ipv4/tcp_ipv4.c
- net/ipv6/tcp_ipv6.c 1 addition, 0 deletionsnet/ipv6/tcp_ipv6.c
- net/socket.c 3 additions, 0 deletionsnet/socket.c
- tools/include/uapi/linux/tcp.h 357 additions, 0 deletionstools/include/uapi/linux/tcp.h
- tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c 1 addition, 0 deletionstools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c
- tools/testing/selftests/bpf/prog_tests/cls_redirect.c 1 addition, 0 deletionstools/testing/selftests/bpf/prog_tests/cls_redirect.c
- tools/testing/selftests/bpf/prog_tests/sockmap_basic.c 1 addition, 0 deletionstools/testing/selftests/bpf/prog_tests/sockmap_basic.c
- tools/testing/selftests/bpf/prog_tests/sockopt_sk.c 28 additions, 0 deletionstools/testing/selftests/bpf/prog_tests/sockopt_sk.c
- tools/testing/selftests/bpf/progs/sockopt_sk.c 21 additions, 2 deletionstools/testing/selftests/bpf/progs/sockopt_sk.c
- tools/testing/selftests/bpf/test_progs.h 0 additions, 1 deletiontools/testing/selftests/bpf/test_progs.h
Loading
Please register or sign in to comment