random32: add a tracepoint for prandom_u32()
authorEric Dumazet <edumazet@google.com>
Thu, 13 Aug 2020 17:06:43 +0000 (10:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 13 Aug 2020 22:11:14 +0000 (15:11 -0700)
commit94c7eb54c4b8e81618ec79f414fe1ca5767f9720
tree448b3fe1a37f74eb9308781e1957e557d18afb3d
parent9643609423c7667fb748cc3ccff023d761d0ac90
random32: add a tracepoint for prandom_u32()

There has been some heat around prandom_u32() lately, and some people
were wondering if there was a simple way to determine how often
it was used, before considering making it maybe 10 times more expensive.

This tracepoint exports the generated pseudo random value.

Tested:

perf list | grep prandom_u32
  random:prandom_u32                                 [Tracepoint event]

perf record -a [-g] [-C1] -e random:prandom_u32 sleep 1
[ perf record: Woken up 0 times to write data ]
[ perf record: Captured and wrote 259.748 MB perf.data (924087 samples) ]

perf report --nochildren
    ...
    97.67%  ksoftirqd/1     [kernel.vmlinux]  [k] prandom_u32
            |
            ---prandom_u32
               prandom_u32
               |
               |--48.86%--tcp_v4_syn_recv_sock
               |          tcp_check_req
               |          tcp_v4_rcv
               |          ...
                --48.81%--tcp_conn_request
                          tcp_v4_conn_request
                          tcp_rcv_state_process
                          ...
perf script

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willy Tarreau <w@1wt.eu>
Cc: Sedat Dilek <sedat.dilek@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/trace/events/random.h
lib/random32.c