• Alexei Starovoitov's avatar
    samples/bpf: Add counting example for kfree_skb() function calls and the write() syscall · d822a192
    Alexei Starovoitov authored
    this example has two probes in one C file that attach to
    different kprove events and use two different maps.
    
    1st probe is x64 specific equivalent of dropmon. It attaches to
    kfree_skb, retrevies 'ip' address of kfree_skb() caller and
    counts number of packet drops at that 'ip' address. User space
    prints 'location - count' map every second.
    
    2nd probe attaches to kprobe:sys_write and computes a histogram
    of different write sizes
    
    Usage:
    	$ sudo tracex2
    	location 0xffffffff81695995 count 1
    	location 0xffffffff816d0da9 count 2
    
    	location 0xffffffff81695995 count 2
    	location 0xffffffff816d0da9 count 2
    
    	location 0xffffffff81695995 count 3
    	location 0xffffffff816d0da9 count 2
    
    	557145+0 records in
    	557145+0 records out
    	285258240 bytes (285 MB) copied, 1.02379 s, 279 MB/s
    		   syscall write() stats
    	     byte_size       : count     distribution
    	       1 -> 1        : 3        |                                      |
    	       2 -> 3        : 0        |                                      |
    	       4 -> 7        : 0        |                                      |
    	       8 -> 15       : 0        |                                      |
    	      16 -> 31       : 2        |                                      |
    	      32 -> 63       : 3        |                                      |
    	      64 -> 127      : 1        |                                      |
    	     128 -> 255      : 1        |                                      |
    	     256 -> 511      : 0        |                                      |
    	     512 -> 1023     : 1118968  |************************************* |
    
    Ctrl-C at any time. Kernel will auto cleanup maps and programs
    
    	$ addr2line -ape ./bld_x64/vmlinux 0xffffffff81695995
    	0xffffffff816d0da9 0xffffffff81695995:
    	./bld_x64/../net/ipv4/icmp.c:1038 0xffffffff816d0da9:
    	./bld_x64/../net/unix/af_unix.c:1231
    Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/1427312966-8434-8-git-send-email-ast@plumgrid.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    d822a192
tracex2_user.c 1.95 KB