xref: /aosp_15_r20/external/bcc/tools/dcsnoop_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of dcsnoop, the Linux eBPF/bcc version.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerdcsnoop traces directory entry cache (dcache) lookups, and can be used for
5*387f9dfdSAndroid Build Coastguard Workerfurther investigation beyond dcstat(8). The output is likely verbose, as
6*387f9dfdSAndroid Build Coastguard Workerdcache lookups are likely frequent. By default, only failed lookups are shown.
7*387f9dfdSAndroid Build Coastguard WorkerFor example:
8*387f9dfdSAndroid Build Coastguard Worker
9*387f9dfdSAndroid Build Coastguard Worker# ./dcsnoop.py
10*387f9dfdSAndroid Build Coastguard WorkerTIME(s)     PID    COMM             T FILE
11*387f9dfdSAndroid Build Coastguard Worker0.002837    1643   snmpd            M net/dev
12*387f9dfdSAndroid Build Coastguard Worker0.002852    1643   snmpd            M 1643
13*387f9dfdSAndroid Build Coastguard Worker0.002856    1643   snmpd            M net
14*387f9dfdSAndroid Build Coastguard Worker0.002863    1643   snmpd            M dev
15*387f9dfdSAndroid Build Coastguard Worker0.002952    1643   snmpd            M net/if_inet6
16*387f9dfdSAndroid Build Coastguard Worker0.002964    1643   snmpd            M if_inet6
17*387f9dfdSAndroid Build Coastguard Worker0.003180    1643   snmpd            M net/ipv4/neigh/eth0/retrans_time_ms
18*387f9dfdSAndroid Build Coastguard Worker0.003192    1643   snmpd            M ipv4/neigh/eth0/retrans_time_ms
19*387f9dfdSAndroid Build Coastguard Worker0.003197    1643   snmpd            M neigh/eth0/retrans_time_ms
20*387f9dfdSAndroid Build Coastguard Worker0.003203    1643   snmpd            M eth0/retrans_time_ms
21*387f9dfdSAndroid Build Coastguard Worker0.003206    1643   snmpd            M retrans_time_ms
22*387f9dfdSAndroid Build Coastguard Worker0.003245    1643   snmpd            M ipv6/neigh/eth0/retrans_time_ms
23*387f9dfdSAndroid Build Coastguard Worker0.003249    1643   snmpd            M neigh/eth0/retrans_time_ms
24*387f9dfdSAndroid Build Coastguard Worker0.003252    1643   snmpd            M eth0/retrans_time_ms
25*387f9dfdSAndroid Build Coastguard Worker0.003255    1643   snmpd            M retrans_time_ms
26*387f9dfdSAndroid Build Coastguard Worker0.003287    1643   snmpd            M conf/eth0/forwarding
27*387f9dfdSAndroid Build Coastguard Worker0.003292    1643   snmpd            M eth0/forwarding
28*387f9dfdSAndroid Build Coastguard Worker0.003295    1643   snmpd            M forwarding
29*387f9dfdSAndroid Build Coastguard Worker0.003326    1643   snmpd            M base_reachable_time_ms
30*387f9dfdSAndroid Build Coastguard Worker[...]
31*387f9dfdSAndroid Build Coastguard Worker
32*387f9dfdSAndroid Build Coastguard WorkerI ran a drop caches at the same time as executing this tool. The output shows
33*387f9dfdSAndroid Build Coastguard Workerthe processes, the type of event ("T" column: M == miss, R == reference),
34*387f9dfdSAndroid Build Coastguard Workerand the filename for the dcache lookup.
35*387f9dfdSAndroid Build Coastguard Worker
36*387f9dfdSAndroid Build Coastguard WorkerThe way the dcache is currently implemented, each component of a path is
37*387f9dfdSAndroid Build Coastguard Workerchecked in turn. The first line, showing "net/dev" from snmp, will be a lookup
38*387f9dfdSAndroid Build Coastguard Workerfor "net" in a directory (that isn't shown here). If it finds "net", it will
39*387f9dfdSAndroid Build Coastguard Workerthen lookup "dev" inside net. You can see this sequence a little later,
40*387f9dfdSAndroid Build Coastguard Workerstarting at time 0.003180, where a pathname is being searched
41*387f9dfdSAndroid Build Coastguard Workerdirectory by directory.
42*387f9dfdSAndroid Build Coastguard Worker
43*387f9dfdSAndroid Build Coastguard Worker
44*387f9dfdSAndroid Build Coastguard WorkerThe -a option will show all lookups, although be warned, the output will be
45*387f9dfdSAndroid Build Coastguard Workervery verbose. For example:
46*387f9dfdSAndroid Build Coastguard Worker
47*387f9dfdSAndroid Build Coastguard Worker# ./dcsnoop
48*387f9dfdSAndroid Build Coastguard WorkerTIME(s)     PID    COMM             T FILE
49*387f9dfdSAndroid Build Coastguard Worker0.000000    20279  dcsnoop.py       M p_lookup_fast
50*387f9dfdSAndroid Build Coastguard Worker0.000010    20279  dcsnoop.py       M enable
51*387f9dfdSAndroid Build Coastguard Worker0.000013    20279  dcsnoop.py       M id
52*387f9dfdSAndroid Build Coastguard Worker0.000015    20279  dcsnoop.py       M filter
53*387f9dfdSAndroid Build Coastguard Worker0.000017    20279  dcsnoop.py       M trigger
54*387f9dfdSAndroid Build Coastguard Worker0.000019    20279  dcsnoop.py       M format
55*387f9dfdSAndroid Build Coastguard Worker0.006148    20279  dcsnoop.py       R sys/kernel/debug/tracing/trace_pipe
56*387f9dfdSAndroid Build Coastguard Worker0.006158    20279  dcsnoop.py       R kernel/debug/tracing/trace_pipe
57*387f9dfdSAndroid Build Coastguard Worker0.006161    20279  dcsnoop.py       R debug/tracing/trace_pipe
58*387f9dfdSAndroid Build Coastguard Worker0.006164    20279  dcsnoop.py       R tracing/trace_pipe
59*387f9dfdSAndroid Build Coastguard Worker0.006166    20279  dcsnoop.py       R trace_pipe
60*387f9dfdSAndroid Build Coastguard Worker0.015900    1643   snmpd            R proc/sys/net/ipv6/conf/lo/forwarding
61*387f9dfdSAndroid Build Coastguard Worker0.015901    1643   snmpd            R sys/net/ipv6/conf/lo/forwarding
62*387f9dfdSAndroid Build Coastguard Worker0.015901    1643   snmpd            R net/ipv6/conf/lo/forwarding
63*387f9dfdSAndroid Build Coastguard Worker0.015902    1643   snmpd            R ipv6/conf/lo/forwarding
64*387f9dfdSAndroid Build Coastguard Worker0.015903    1643   snmpd            R conf/lo/forwarding
65*387f9dfdSAndroid Build Coastguard Worker0.015904    1643   snmpd            R lo/forwarding
66*387f9dfdSAndroid Build Coastguard Worker0.015905    1643   snmpd            M lo/forwarding
67*387f9dfdSAndroid Build Coastguard Worker0.015908    1643   snmpd            R forwarding
68*387f9dfdSAndroid Build Coastguard Worker0.015909    1643   snmpd            M forwarding
69*387f9dfdSAndroid Build Coastguard Worker0.015937    1643   snmpd            R proc/sys/net/ipv6/neigh/lo/base_reachable_time_ms
70*387f9dfdSAndroid Build Coastguard Worker0.015937    1643   snmpd            R sys/net/ipv6/neigh/lo/base_reachable_time_ms
71*387f9dfdSAndroid Build Coastguard Worker0.015938    1643   snmpd            R net/ipv6/neigh/lo/base_reachable_time_ms
72*387f9dfdSAndroid Build Coastguard Worker0.015939    1643   snmpd            R ipv6/neigh/lo/base_reachable_time_ms
73*387f9dfdSAndroid Build Coastguard Worker0.015940    1643   snmpd            R neigh/lo/base_reachable_time_ms
74*387f9dfdSAndroid Build Coastguard Worker0.015941    1643   snmpd            R lo/base_reachable_time_ms
75*387f9dfdSAndroid Build Coastguard Worker0.015941    1643   snmpd            R base_reachable_time_ms
76*387f9dfdSAndroid Build Coastguard Worker0.015943    1643   snmpd            M base_reachable_time_ms
77*387f9dfdSAndroid Build Coastguard Worker0.043569    1876   supervise        M 20281
78*387f9dfdSAndroid Build Coastguard Worker0.043573    1886   supervise        M 20280
79*387f9dfdSAndroid Build Coastguard Worker0.043582    1886   supervise        R supervise/status.new
80*387f9dfdSAndroid Build Coastguard Worker[...]
81*387f9dfdSAndroid Build Coastguard Worker
82*387f9dfdSAndroid Build Coastguard Worker
83*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
84*387f9dfdSAndroid Build Coastguard Worker
85*387f9dfdSAndroid Build Coastguard Worker# ./dcsnoop.py -h
86*387f9dfdSAndroid Build Coastguard Workerusage: dcsnoop.py [-h] [-a]
87*387f9dfdSAndroid Build Coastguard Worker
88*387f9dfdSAndroid Build Coastguard WorkerTrace directory entry cache (dcache) lookups
89*387f9dfdSAndroid Build Coastguard Worker
90*387f9dfdSAndroid Build Coastguard Workeroptional arguments:
91*387f9dfdSAndroid Build Coastguard Worker  -h, --help  show this help message and exit
92*387f9dfdSAndroid Build Coastguard Worker  -a, --all   trace all lookups (default is fails only)
93*387f9dfdSAndroid Build Coastguard Worker
94*387f9dfdSAndroid Build Coastguard Workerexamples:
95*387f9dfdSAndroid Build Coastguard Worker    ./dcsnoop           # trace failed dcache lookups
96*387f9dfdSAndroid Build Coastguard Worker    ./dcsnoop -a        # trace all dcache lookups
97