xref: /aosp_15_r20/external/bcc/tools/llcstat_example.txt (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of llcstat.
2*387f9dfdSAndroid Build Coastguard Worker
3*387f9dfdSAndroid Build Coastguard Worker
4*387f9dfdSAndroid Build Coastguard Workerllcstat traces cache reference and cache miss events system-wide, and summarizes
5*387f9dfdSAndroid Build Coastguard Workerthem by PID and CPU.
6*387f9dfdSAndroid Build Coastguard Worker
7*387f9dfdSAndroid Build Coastguard WorkerThese events, defined in uapi/linux/perf_event.h, have different meanings on
8*387f9dfdSAndroid Build Coastguard Workerdifferent architecture. For x86-64, they mean misses and references to LLC.
9*387f9dfdSAndroid Build Coastguard Worker
10*387f9dfdSAndroid Build Coastguard WorkerExample output:
11*387f9dfdSAndroid Build Coastguard Worker
12*387f9dfdSAndroid Build Coastguard Worker# ./llcstat.py 20 -c 5000
13*387f9dfdSAndroid Build Coastguard WorkerRunning for 20 seconds or hit Ctrl-C to end.
14*387f9dfdSAndroid Build Coastguard WorkerPID      NAME             CPU     REFERENCE         MISS   HIT%
15*387f9dfdSAndroid Build Coastguard Worker0        swapper/15       15        3515000       640000  81.79%
16*387f9dfdSAndroid Build Coastguard Worker238      migration/38     38           5000            0 100.00%
17*387f9dfdSAndroid Build Coastguard Worker4512     ntpd             11           5000            0 100.00%
18*387f9dfdSAndroid Build Coastguard Worker150867   ipmitool         3           25000         5000  80.00%
19*387f9dfdSAndroid Build Coastguard Worker150895   lscpu            17         280000        25000  91.07%
20*387f9dfdSAndroid Build Coastguard Worker151807   ipmitool         15          15000         5000  66.67%
21*387f9dfdSAndroid Build Coastguard Worker150757   awk              2           15000         5000  66.67%
22*387f9dfdSAndroid Build Coastguard Worker151213   chef-client      5         1770000       240000  86.44%
23*387f9dfdSAndroid Build Coastguard Worker151822   scribe-dispatch  12          15000            0 100.00%
24*387f9dfdSAndroid Build Coastguard Worker123386   mysqld           5            5000            0 100.00%
25*387f9dfdSAndroid Build Coastguard Worker[...]
26*387f9dfdSAndroid Build Coastguard WorkerTotal References: 518920000 Total Misses: 90265000 Hit Rate: 82.61%
27*387f9dfdSAndroid Build Coastguard Worker
28*387f9dfdSAndroid Build Coastguard WorkerThis shows each PID's cache hit rate during the 20 seconds run period.
29*387f9dfdSAndroid Build Coastguard Worker
30*387f9dfdSAndroid Build Coastguard WorkerA count of 5000 was used in this example, which means that one in every 5,000
31*387f9dfdSAndroid Build Coastguard Workerevents will trigger an in-kernel counter to be incremented. This is refactored
32*387f9dfdSAndroid Build Coastguard Workeron the output, which is why it is always in multiples of 5,000.
33*387f9dfdSAndroid Build Coastguard Worker
34*387f9dfdSAndroid Build Coastguard WorkerWe don't instrument every single event since the overhead would be prohibitive,
35*387f9dfdSAndroid Build Coastguard Workernor do we need to: this is a type of sampling profiler. Because of this, the
36*387f9dfdSAndroid Build Coastguard Workerprocesses that trigger the 5,000'th cache reference or misses can happen to
37*387f9dfdSAndroid Build Coastguard Workersome degree by chance. Overall it should make sense. But for low counts,
38*387f9dfdSAndroid Build Coastguard Workeryou might find a case where -- by chance -- a process has been tallied with
39*387f9dfdSAndroid Build Coastguard Workermore misses than references, which would seem impossible.
40*387f9dfdSAndroid Build Coastguard Worker
41*387f9dfdSAndroid Build Coastguard Worker# ./llcstat.py 10 -t
42*387f9dfdSAndroid Build Coastguard WorkerRunning for 10 seconds or hit Ctrl-C to end.
43*387f9dfdSAndroid Build Coastguard WorkerPID      TID      NAME             CPU     REFERENCE         MISS    HIT%
44*387f9dfdSAndroid Build Coastguard Worker170843   170845   docker           12           2700         1200  55.56%
45*387f9dfdSAndroid Build Coastguard Worker298670   298670   kworker/15:0     15            500            0 100.00%
46*387f9dfdSAndroid Build Coastguard Worker170254   170254   kworker/11:1     11           2500          400  84.00%
47*387f9dfdSAndroid Build Coastguard Worker1046952  1046953  git              0            2600         1100  57.69%
48*387f9dfdSAndroid Build Coastguard Worker170843   170849   docker           15           1000          400  60.00%
49*387f9dfdSAndroid Build Coastguard Worker1027373  1027382  node             8            3500         2500  28.57%
50*387f9dfdSAndroid Build Coastguard Worker0        0        swapper/7        7          173000         4200  97.57%
51*387f9dfdSAndroid Build Coastguard Worker1028217  1028217  node             14          15600        22400   0.00%
52*387f9dfdSAndroid Build Coastguard Worker[...]
53*387f9dfdSAndroid Build Coastguard WorkerTotal References: 7139900 Total Misses: 1413900 Hit Rate: 80.20%
54*387f9dfdSAndroid Build Coastguard Worker
55*387f9dfdSAndroid Build Coastguard WorkerThis shows each TID`s cache hit rate during the 10 seconds run period.
56*387f9dfdSAndroid Build Coastguard Worker
57*387f9dfdSAndroid Build Coastguard WorkerUSAGE message:
58*387f9dfdSAndroid Build Coastguard Worker
59*387f9dfdSAndroid Build Coastguard Worker# ./llcstat.py --help
60*387f9dfdSAndroid Build Coastguard Workerusage: llcstat.py [-h] [-c SAMPLE_PERIOD] [duration]
61*387f9dfdSAndroid Build Coastguard Worker
62*387f9dfdSAndroid Build Coastguard WorkerSummarize cache references and misses by PID
63*387f9dfdSAndroid Build Coastguard Worker
64*387f9dfdSAndroid Build Coastguard Workerpositional arguments:
65*387f9dfdSAndroid Build Coastguard Worker  duration                Duration, in seconds, to run
66*387f9dfdSAndroid Build Coastguard Worker
67*387f9dfdSAndroid Build Coastguard Worker  optional arguments:
68*387f9dfdSAndroid Build Coastguard Worker    -h, --help            show this help message and exit
69*387f9dfdSAndroid Build Coastguard Worker    -c SAMPLE_PERIOD, --sample_period SAMPLE_PERIOD
70*387f9dfdSAndroid Build Coastguard Worker                          Sample one in this many number of cache reference
71*387f9dfdSAndroid Build Coastguard Worker                          and miss events
72*387f9dfdSAndroid Build Coastguard Worker    -t, --tid             Summarize cache references and misses by PID/TID
73