• Alexei Starovoitov's avatar
    samples/bpf: add tracepoint vs kprobe performance tests · e3edfdec
    Alexei Starovoitov authored
    the first microbenchmark does
    fd=open("/proc/self/comm");
    for() {
      write(fd, "test");
    }
    and on 4 cpus in parallel:
                                          writes per sec
    base (no tracepoints, no kprobes)         930k
    with kprobe at __set_task_comm()          420k
    with tracepoint at task:task_rename       730k
    
    For kprobe + full bpf program manully fetches oldcomm, newcomm via bpf_probe_read.
    For tracepint bpf program does nothing, since arguments are copied by tracepoint.
    
    2nd microbenchmark does:
    fd=open("/dev/urandom");
    for() {
      read(fd, buf);
    }
    and on 4 cpus in parallel:
                                           reads per sec
    base (no tracepoints, no kprobes)         300k
    with kprobe at urandom_read()             279k
    with tracepoint at random:urandom_read    290k
    
    bpf progs attached to kprobe and tracepoint are noop.
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e3edfdec
test_overhead_kprobe_kern.c 1.02 KB