• Daniel T. Lee's avatar
    samples/bpf: replace broken overhead microbenchmark with fib_table_lookup · 58e975d0
    Daniel T. Lee authored
    The test_overhead bpf program is designed to compare performance
    between tracepoint and kprobe. Initially it used task_rename and
    urandom_read tracepoint.
    
    However, commit 14c17463 ("random: remove unused tracepoints")
    removed urandom_read tracepoint, and for this reason the test_overhead
    got broken.
    
    This commit introduces new microbenchmark using fib_table_lookup.
    This microbenchmark sends UDP packets to localhost in order to invoke
    fib_table_lookup.
    
    In a nutshell:
    fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    addr.sin_addr.s_addr = inet_addr(DUMMY_IP);
    addr.sin_port = htons(DUMMY_PORT);
    for() {
        sendto(fd, buf, strlen(buf), 0,
                (struct sockaddr *)&addr, sizeof(addr));
    }
    
    on 4 cpus in parallel:
                                                lookup per sec
    base (no tracepoints, no kprobes)               381k
    with kprobe at fib_table_lookup()               325k
    with tracepoint at fib:fib_table_lookup         330k
    with raw_tracepoint at fib:fib_table_lookup     365k
    
    Fixes: 14c17463 ("random: remove unused tracepoints")
    Signed-off-by: default avatarDaniel T. Lee <danieltimlee@gmail.com>
    Link: https://lore.kernel.org/r/20230115071613.125791-6-danieltimlee@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    58e975d0
test_overhead_user.c 4.46 KB