Message ID | 20230115071613.125791-1-danieltimlee@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | samples/bpf: modernize BPF functionality test programs | expand |
On Sat, Jan 14, 2023 at 11:16 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: > > Currently, there are many programs under samples/bpf to test the > various functionality of BPF that have been developed for a long time. > However, the kernel (BPF) has changed a lot compared to the 2016 when > some of these test programs were first introduced. > > Therefore, some of these programs use the deprecated function of BPF, > and some programs no longer work normally due to changes in the API. > > To list some of the kernel changes that this patch set is focusing on, > - legacy BPF map declaration syntax support had been dropped [1] > - bpf_trace_printk() always append newline at the end [2] > - deprecated styled BPF section header (bpf_load style) [3] > - urandom_read tracepoint is removed (used for testing overhead) [4] > - ping sends packet with SOCK_DGRAM instead of SOCK_RAW [5]* > - use "vmlinux.h" instead of including individual headers > > In addition to this, this patchset tries to modernize the existing > testing scripts a bit. And for network-related testing programs, > a separate header file was created and applied. (To use the > Endianness conversion function from xdp_sample and bunch of constants) Nice set of cleanups. Applied. As a follow up could you convert some of them to proper selftests/bpf ? Unfortunately samples/bpf will keep bit rotting despite your herculean efforts.
On Mon, Jan 16, 2023 at 6:38 AM Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote: > > On Sat, Jan 14, 2023 at 11:16 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: > > > > Currently, there are many programs under samples/bpf to test the > > various functionality of BPF that have been developed for a long time. > > However, the kernel (BPF) has changed a lot compared to the 2016 when > > some of these test programs were first introduced. > > > > Therefore, some of these programs use the deprecated function of BPF, > > and some programs no longer work normally due to changes in the API. > > > > To list some of the kernel changes that this patch set is focusing on, > > - legacy BPF map declaration syntax support had been dropped [1] > > - bpf_trace_printk() always append newline at the end [2] > > - deprecated styled BPF section header (bpf_load style) [3] > > - urandom_read tracepoint is removed (used for testing overhead) [4] > > - ping sends packet with SOCK_DGRAM instead of SOCK_RAW [5]* > > - use "vmlinux.h" instead of including individual headers > > > > In addition to this, this patchset tries to modernize the existing > > testing scripts a bit. And for network-related testing programs, > > a separate header file was created and applied. (To use the > > Endianness conversion function from xdp_sample and bunch of constants) > > Nice set of cleanups. Applied. > As a follow up could you convert some of them to proper selftests/bpf ? > Unfortunately samples/bpf will keep bit rotting despite your herculean efforts. I really appreciate for your compliment! I'll try to convert the existing sample to selftest in the next patch.
"Daniel T. Lee" <danieltimlee@gmail.com> writes: > On Mon, Jan 16, 2023 at 6:38 AM Alexei Starovoitov > <alexei.starovoitov@gmail.com> wrote: >> >> On Sat, Jan 14, 2023 at 11:16 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: >> > >> > Currently, there are many programs under samples/bpf to test the >> > various functionality of BPF that have been developed for a long time. >> > However, the kernel (BPF) has changed a lot compared to the 2016 when >> > some of these test programs were first introduced. >> > >> > Therefore, some of these programs use the deprecated function of BPF, >> > and some programs no longer work normally due to changes in the API. >> > >> > To list some of the kernel changes that this patch set is focusing on, >> > - legacy BPF map declaration syntax support had been dropped [1] >> > - bpf_trace_printk() always append newline at the end [2] >> > - deprecated styled BPF section header (bpf_load style) [3] >> > - urandom_read tracepoint is removed (used for testing overhead) [4] >> > - ping sends packet with SOCK_DGRAM instead of SOCK_RAW [5]* >> > - use "vmlinux.h" instead of including individual headers >> > >> > In addition to this, this patchset tries to modernize the existing >> > testing scripts a bit. And for network-related testing programs, >> > a separate header file was created and applied. (To use the >> > Endianness conversion function from xdp_sample and bunch of constants) >> >> Nice set of cleanups. Applied. >> As a follow up could you convert some of them to proper selftests/bpf ? >> Unfortunately samples/bpf will keep bit rotting despite your herculean efforts. > > I really appreciate for your compliment! > I'll try to convert the existing sample to selftest in the next patch. Maybe this is a good time to mention that we recently ported some of the XDP utilities from samples/bpf to xdp-tools, in the form of the 'xdp-bench' utility: https://github.com/xdp-project/xdp-tools/tree/master/xdp-bench It's basically a combination of all the xdp_redirect* samples, but also includes the functionality from the xdp_rxq_info sample program (i.e., the ability to monitor RXQs and use other return codes). I'm planning to submit a patch to remove those utilities from samples/bpf after we tag the next release of xdp-tools (have one or two outstanding issues to clear before we do that), but wanted to give you a head's up so you don't spend any time on those particular utilities when you're cleaning up samples :) -Toke
On 1/16/23 2:35 PM, Toke Høiland-Jørgensen wrote: > "Daniel T. Lee" <danieltimlee@gmail.com> writes: >> On Mon, Jan 16, 2023 at 6:38 AM Alexei Starovoitov >> <alexei.starovoitov@gmail.com> wrote: >>> On Sat, Jan 14, 2023 at 11:16 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: >>>> >>>> Currently, there are many programs under samples/bpf to test the >>>> various functionality of BPF that have been developed for a long time. >>>> However, the kernel (BPF) has changed a lot compared to the 2016 when >>>> some of these test programs were first introduced. >>>> >>>> Therefore, some of these programs use the deprecated function of BPF, >>>> and some programs no longer work normally due to changes in the API. >>>> >>>> To list some of the kernel changes that this patch set is focusing on, >>>> - legacy BPF map declaration syntax support had been dropped [1] >>>> - bpf_trace_printk() always append newline at the end [2] >>>> - deprecated styled BPF section header (bpf_load style) [3] >>>> - urandom_read tracepoint is removed (used for testing overhead) [4] >>>> - ping sends packet with SOCK_DGRAM instead of SOCK_RAW [5]* >>>> - use "vmlinux.h" instead of including individual headers >>>> >>>> In addition to this, this patchset tries to modernize the existing >>>> testing scripts a bit. And for network-related testing programs, >>>> a separate header file was created and applied. (To use the >>>> Endianness conversion function from xdp_sample and bunch of constants) >>> >>> Nice set of cleanups. Applied. >>> As a follow up could you convert some of them to proper selftests/bpf ? >>> Unfortunately samples/bpf will keep bit rotting despite your herculean efforts. >> >> I really appreciate for your compliment! >> I'll try to convert the existing sample to selftest in the next patch. This would be awesome, thanks a lot Daniel! > Maybe this is a good time to mention that we recently ported some of the > XDP utilities from samples/bpf to xdp-tools, in the form of the > 'xdp-bench' utility: > https://github.com/xdp-project/xdp-tools/tree/master/xdp-bench > > It's basically a combination of all the xdp_redirect* samples, but also > includes the functionality from the xdp_rxq_info sample program (i.e., > the ability to monitor RXQs and use other return codes). > > I'm planning to submit a patch to remove those utilities from > samples/bpf after we tag the next release of xdp-tools (have one or two > outstanding issues to clear before we do that), but wanted to give you a > head's up so you don't spend any time on those particular utilities when > you're cleaning up samples :) Nice! Once we're through with most relevant ones from samples/bpf, it would be great to only have a readme in that dir (and that's really all) with pointers for developers on how to get started.. including BPF selftests, xdp tools, links to ebpf.io/applications and ebpf.io/infrastructure, etc where more resources can be found, essentially a small getting started doc for BPF devs.
Daniel Borkmann <daniel@iogearbox.net> writes: > On 1/16/23 2:35 PM, Toke Høiland-Jørgensen wrote: >> "Daniel T. Lee" <danieltimlee@gmail.com> writes: >>> On Mon, Jan 16, 2023 at 6:38 AM Alexei Starovoitov >>> <alexei.starovoitov@gmail.com> wrote: >>>> On Sat, Jan 14, 2023 at 11:16 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: >>>>> >>>>> Currently, there are many programs under samples/bpf to test the >>>>> various functionality of BPF that have been developed for a long time. >>>>> However, the kernel (BPF) has changed a lot compared to the 2016 when >>>>> some of these test programs were first introduced. >>>>> >>>>> Therefore, some of these programs use the deprecated function of BPF, >>>>> and some programs no longer work normally due to changes in the API. >>>>> >>>>> To list some of the kernel changes that this patch set is focusing on, >>>>> - legacy BPF map declaration syntax support had been dropped [1] >>>>> - bpf_trace_printk() always append newline at the end [2] >>>>> - deprecated styled BPF section header (bpf_load style) [3] >>>>> - urandom_read tracepoint is removed (used for testing overhead) [4] >>>>> - ping sends packet with SOCK_DGRAM instead of SOCK_RAW [5]* >>>>> - use "vmlinux.h" instead of including individual headers >>>>> >>>>> In addition to this, this patchset tries to modernize the existing >>>>> testing scripts a bit. And for network-related testing programs, >>>>> a separate header file was created and applied. (To use the >>>>> Endianness conversion function from xdp_sample and bunch of constants) >>>> >>>> Nice set of cleanups. Applied. >>>> As a follow up could you convert some of them to proper selftests/bpf ? >>>> Unfortunately samples/bpf will keep bit rotting despite your herculean efforts. >>> >>> I really appreciate for your compliment! >>> I'll try to convert the existing sample to selftest in the next patch. > > This would be awesome, thanks a lot Daniel! > >> Maybe this is a good time to mention that we recently ported some of the >> XDP utilities from samples/bpf to xdp-tools, in the form of the >> 'xdp-bench' utility: >> https://github.com/xdp-project/xdp-tools/tree/master/xdp-bench >> >> It's basically a combination of all the xdp_redirect* samples, but also >> includes the functionality from the xdp_rxq_info sample program (i.e., >> the ability to monitor RXQs and use other return codes). >> >> I'm planning to submit a patch to remove those utilities from >> samples/bpf after we tag the next release of xdp-tools (have one or two >> outstanding issues to clear before we do that), but wanted to give you a >> head's up so you don't spend any time on those particular utilities when >> you're cleaning up samples :) > > Nice! Once we're through with most relevant ones from samples/bpf, it would > be great to only have a readme in that dir (and that's really all) with pointers > for developers on how to get started.. including BPF selftests, xdp tools, links > to ebpf.io/applications and ebpf.io/infrastructure, etc where more resources > can be found, essentially a small getting started doc for BPF devs. Yeah, good point! Will keep that in mind :) -Toke