On Mon, Jul 1, 2019 at 5:31 PM Stanislav Fomichev <sdf@xxxxxxxxxxx> wrote: > > On 07/01, Y Song wrote: > > On Mon, Jul 1, 2019 at 1:49 PM Stanislav Fomichev <sdf@xxxxxxxxxx> wrote: > > > > > > Uses new RTT callback to dump stats every second. > > > > > > $ mkdir -p /tmp/cgroupv2 > > > $ mount -t cgroup2 none /tmp/cgroupv2 > > > $ mkdir -p /tmp/cgroupv2/foo > > > $ echo $$ >> /tmp/cgroupv2/foo/cgroup.procs > > > $ bpftool prog load ./tcp_dumpstats_kern.o /sys/fs/bpf/tcp_prog > > > $ bpftool cgroup attach /tmp/cgroupv2/foo sock_ops pinned /sys/fs/bpf/tcp_prog > > > $ bpftool prog tracelog > > > $ # run neper/netperf/etc > > > > > > Used neper to compare performance with and without this program attached > > > and didn't see any noticeable performance impact. > > > > > > Sample output: > > > <idle>-0 [015] ..s. 2074.128800: 0: dsack_dups=0 delivered=242526 > > > <idle>-0 [015] ..s. 2074.128808: 0: delivered_ce=0 icsk_retransmits=0 > > > <idle>-0 [015] ..s. 2075.130133: 0: dsack_dups=0 delivered=323599 > > > <idle>-0 [015] ..s. 2075.130138: 0: delivered_ce=0 icsk_retransmits=0 > > > <idle>-0 [005] .Ns. 2076.131440: 0: dsack_dups=0 delivered=404648 > > > <idle>-0 [005] .Ns. 2076.131447: 0: delivered_ce=0 icsk_retransmits=0 > > > > > > Cc: Eric Dumazet <edumazet@xxxxxxxxxx> > > > Cc: Priyaranjan Jha <priyarjha@xxxxxxxxxx> > > > Cc: Yuchung Cheng <ycheng@xxxxxxxxxx> > > > Cc: Soheil Hassas Yeganeh <soheil@xxxxxxxxxx> > > > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > > > --- > > > samples/bpf/Makefile | 1 + > > > samples/bpf/tcp_dumpstats_kern.c | 65 ++++++++++++++++++++++++++++++++ > > > 2 files changed, 66 insertions(+) > > > create mode 100644 samples/bpf/tcp_dumpstats_kern.c > > > > Currently, the bpf program into the repo. If we do not have another > > script to use > > this program for testing, the instructions in the commit message should be > > added to the bpf program as comments so people know what to do with this file > > without going through git commit message. > > > > Is it possible to create a script to run with this bpf program? > There is a general instruction in samples/bpf/tcp_bpf.readme > with bpftool examples/etc. Should I just a comment at the top > of the BPF program to point people to that .readme file instead? Referring to tcp_bpf.readme should work. Even simpler :-) > > > > > > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > > > index 0917f8cf4fab..eaebbeead42f 100644 > > > --- a/samples/bpf/Makefile > > > +++ b/samples/bpf/Makefile > > > @@ -154,6 +154,7 @@ always += tcp_iw_kern.o > > > always += tcp_clamp_kern.o > > > always += tcp_basertt_kern.o > > > always += tcp_tos_reflect_kern.o > > > +always += tcp_dumpstats_kern.o > > > always += xdp_redirect_kern.o > > > always += xdp_redirect_map_kern.o > > > always += xdp_redirect_cpu_kern.o > > > diff --git a/samples/bpf/tcp_dumpstats_kern.c b/samples/bpf/tcp_dumpstats_kern.c > > > new file mode 100644 > > > index 000000000000..5d22bf61db65 > > > --- /dev/null > > > +++ b/samples/bpf/tcp_dumpstats_kern.c > > > @@ -0,0 +1,65 @@ > > > +// SPDX-License-Identifier: GPL-2.0 > > > +#include <linux/bpf.h> > > > + > > > +#include "bpf_helpers.h" > > > +#include "bpf_endian.h" > > > + > > > +#define INTERVAL 1000000000ULL > > > + > > > +int _version SEC("version") = 1; > > > +char _license[] SEC("license") = "GPL"; [...]