You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
4.3 KiB
97 lines
4.3 KiB
Demonstrations of dcsnoop, the Linux eBPF/bcc version.
|
|
|
|
|
|
dcsnoop traces directory entry cache (dcache) lookups, and can be used for
|
|
further investigation beyond dcstat(8). The output is likely verbose, as
|
|
dcache lookups are likely frequent. By default, only failed lookups are shown.
|
|
For example:
|
|
|
|
# ./dcsnoop.py
|
|
TIME(s) PID COMM T FILE
|
|
0.002837 1643 snmpd M net/dev
|
|
0.002852 1643 snmpd M 1643
|
|
0.002856 1643 snmpd M net
|
|
0.002863 1643 snmpd M dev
|
|
0.002952 1643 snmpd M net/if_inet6
|
|
0.002964 1643 snmpd M if_inet6
|
|
0.003180 1643 snmpd M net/ipv4/neigh/eth0/retrans_time_ms
|
|
0.003192 1643 snmpd M ipv4/neigh/eth0/retrans_time_ms
|
|
0.003197 1643 snmpd M neigh/eth0/retrans_time_ms
|
|
0.003203 1643 snmpd M eth0/retrans_time_ms
|
|
0.003206 1643 snmpd M retrans_time_ms
|
|
0.003245 1643 snmpd M ipv6/neigh/eth0/retrans_time_ms
|
|
0.003249 1643 snmpd M neigh/eth0/retrans_time_ms
|
|
0.003252 1643 snmpd M eth0/retrans_time_ms
|
|
0.003255 1643 snmpd M retrans_time_ms
|
|
0.003287 1643 snmpd M conf/eth0/forwarding
|
|
0.003292 1643 snmpd M eth0/forwarding
|
|
0.003295 1643 snmpd M forwarding
|
|
0.003326 1643 snmpd M base_reachable_time_ms
|
|
[...]
|
|
|
|
I ran a drop caches at the same time as executing this tool. The output shows
|
|
the processes, the type of event ("T" column: M == miss, R == reference),
|
|
and the filename for the dcache lookup.
|
|
|
|
The way the dcache is currently implemented, each component of a path is
|
|
checked in turn. The first line, showing "net/dev" from snmp, will be a lookup
|
|
for "net" in a directory (that isn't shown here). If it finds "net", it will
|
|
then lookup "dev" inside net. You can see this sequence a little later,
|
|
starting at time 0.003180, where a pathname is being searched
|
|
directory by directory.
|
|
|
|
|
|
The -a option will show all lookups, although be warned, the output will be
|
|
very verbose. For example:
|
|
|
|
# ./dcsnoop
|
|
TIME(s) PID COMM T FILE
|
|
0.000000 20279 dcsnoop.py M p_lookup_fast
|
|
0.000010 20279 dcsnoop.py M enable
|
|
0.000013 20279 dcsnoop.py M id
|
|
0.000015 20279 dcsnoop.py M filter
|
|
0.000017 20279 dcsnoop.py M trigger
|
|
0.000019 20279 dcsnoop.py M format
|
|
0.006148 20279 dcsnoop.py R sys/kernel/debug/tracing/trace_pipe
|
|
0.006158 20279 dcsnoop.py R kernel/debug/tracing/trace_pipe
|
|
0.006161 20279 dcsnoop.py R debug/tracing/trace_pipe
|
|
0.006164 20279 dcsnoop.py R tracing/trace_pipe
|
|
0.006166 20279 dcsnoop.py R trace_pipe
|
|
0.015900 1643 snmpd R proc/sys/net/ipv6/conf/lo/forwarding
|
|
0.015901 1643 snmpd R sys/net/ipv6/conf/lo/forwarding
|
|
0.015901 1643 snmpd R net/ipv6/conf/lo/forwarding
|
|
0.015902 1643 snmpd R ipv6/conf/lo/forwarding
|
|
0.015903 1643 snmpd R conf/lo/forwarding
|
|
0.015904 1643 snmpd R lo/forwarding
|
|
0.015905 1643 snmpd M lo/forwarding
|
|
0.015908 1643 snmpd R forwarding
|
|
0.015909 1643 snmpd M forwarding
|
|
0.015937 1643 snmpd R proc/sys/net/ipv6/neigh/lo/base_reachable_time_ms
|
|
0.015937 1643 snmpd R sys/net/ipv6/neigh/lo/base_reachable_time_ms
|
|
0.015938 1643 snmpd R net/ipv6/neigh/lo/base_reachable_time_ms
|
|
0.015939 1643 snmpd R ipv6/neigh/lo/base_reachable_time_ms
|
|
0.015940 1643 snmpd R neigh/lo/base_reachable_time_ms
|
|
0.015941 1643 snmpd R lo/base_reachable_time_ms
|
|
0.015941 1643 snmpd R base_reachable_time_ms
|
|
0.015943 1643 snmpd M base_reachable_time_ms
|
|
0.043569 1876 supervise M 20281
|
|
0.043573 1886 supervise M 20280
|
|
0.043582 1886 supervise R supervise/status.new
|
|
[...]
|
|
|
|
|
|
USAGE message:
|
|
|
|
# ./dcsnoop.py -h
|
|
usage: dcsnoop.py [-h] [-a]
|
|
|
|
Trace directory entry cache (dcache) lookups
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
-a, --all trace all lookups (default is fails only)
|
|
|
|
examples:
|
|
./dcsnoop # trace failed dcache lookups
|
|
./dcsnoop -a # trace all dcache lookups
|