1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of cachestat, the Linux eBPF/bcc version. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard Workercachestat shows hits and misses to the file system page cache. For example: 5*387f9dfdSAndroid Build Coastguard Worker 6*387f9dfdSAndroid Build Coastguard Worker# cachestat 7*387f9dfdSAndroid Build Coastguard Worker HITS MISSES DIRTIES HITRATIO BUFFERS_MB CACHED_MB 8*387f9dfdSAndroid Build Coastguard Worker 1132 0 4 100.00% 277 4367 9*387f9dfdSAndroid Build Coastguard Worker 161 0 36 100.00% 277 4372 10*387f9dfdSAndroid Build Coastguard Worker 16 0 28 100.00% 277 4372 11*387f9dfdSAndroid Build Coastguard Worker 17154 13750 15 55.51% 277 4422 12*387f9dfdSAndroid Build Coastguard Worker 19 0 1 100.00% 277 4422 13*387f9dfdSAndroid Build Coastguard Worker 83 0 83 100.00% 277 4421 14*387f9dfdSAndroid Build Coastguard Worker 16 0 1 100.00% 277 4423 15*387f9dfdSAndroid Build Coastguard Worker^C 0 -19 360 0.00% 277 4423 16*387f9dfdSAndroid Build Coastguard WorkerDetaching... 17*387f9dfdSAndroid Build Coastguard Worker 18*387f9dfdSAndroid Build Coastguard WorkerWhile tracing, there was a burst of misses in the fourth second, bringing 19*387f9dfdSAndroid Build Coastguard Workerthe hit ration down to 55%. 20*387f9dfdSAndroid Build Coastguard Worker 21*387f9dfdSAndroid Build Coastguard Worker 22*387f9dfdSAndroid Build Coastguard WorkerThis shows a 1 Gbyte uncached file that is read twice: 23*387f9dfdSAndroid Build Coastguard Worker 24*387f9dfdSAndroid Build Coastguard Worker(root) ~ # ./cachestat.py 25*387f9dfdSAndroid Build Coastguard Worker HITS MISSES DIRTIES HITRATIO BUFFERS_MB CACHED_MB 26*387f9dfdSAndroid Build Coastguard Worker 1 0 0 100.00% 5 191 27*387f9dfdSAndroid Build Coastguard Worker 198 12136 0 1.61% 5 238 28*387f9dfdSAndroid Build Coastguard Worker 1 11007 3 0.01% 5 281 29*387f9dfdSAndroid Build Coastguard Worker 0 6384 0 0.00% 5 306 30*387f9dfdSAndroid Build Coastguard Worker 1 14464 0 0.01% 5 363 31*387f9dfdSAndroid Build Coastguard Worker 0 11776 0 0.00% 5 409 32*387f9dfdSAndroid Build Coastguard Worker 1 11712 0 0.01% 5 454 33*387f9dfdSAndroid Build Coastguard Worker 32 13184 0 0.24% 5 506 34*387f9dfdSAndroid Build Coastguard Worker 0 11232 0 0.00% 5 550 35*387f9dfdSAndroid Build Coastguard Worker 1 13056 0 0.01% 5 601 36*387f9dfdSAndroid Build Coastguard Worker 16 14720 0 0.11% 5 658 37*387f9dfdSAndroid Build Coastguard Worker 33 9920 0 0.33% 5 697 38*387f9dfdSAndroid Build Coastguard Worker 0 13248 0 0.00% 5 749 39*387f9dfdSAndroid Build Coastguard Worker 4 14144 0 0.03% 5 804 40*387f9dfdSAndroid Build Coastguard Worker 0 9728 0 0.00% 5 842 41*387f9dfdSAndroid Build Coastguard Worker 1 10816 0 0.01% 5 885 42*387f9dfdSAndroid Build Coastguard Worker 808 13504 1 5.65% 5 938 43*387f9dfdSAndroid Build Coastguard Worker 0 11409 0 0.00% 5 982 44*387f9dfdSAndroid Build Coastguard Worker 0 11520 0 0.00% 5 1027 45*387f9dfdSAndroid Build Coastguard Worker 0 15616 0 0.00% 5 1088 46*387f9dfdSAndroid Build Coastguard Worker 1 9792 0 0.01% 5 1126 47*387f9dfdSAndroid Build Coastguard Worker 0 8256 0 0.00% 5 1158 48*387f9dfdSAndroid Build Coastguard Worker 1 9600 0 0.01% 5 1196 49*387f9dfdSAndroid Build Coastguard Worker 599 4804 0 11.09% 5 1215 50*387f9dfdSAndroid Build Coastguard Worker 1 0 0 100.00% 5 1215 51*387f9dfdSAndroid Build Coastguard Worker 0 0 0 0.00% 5 1215 52*387f9dfdSAndroid Build Coastguard Worker 3 1 0 75.00% 5 1215 53*387f9dfdSAndroid Build Coastguard Worker 79536 34 0 99.96% 5 1215 54*387f9dfdSAndroid Build Coastguard Worker 87693 274 4 99.69% 6 1214 55*387f9dfdSAndroid Build Coastguard Worker 89018 3546 0 96.17% 7 1227 56*387f9dfdSAndroid Build Coastguard Worker 33531 201 4 99.40% 7 1228 57*387f9dfdSAndroid Build Coastguard Worker 22 44 0 33.33% 8 1228 58*387f9dfdSAndroid Build Coastguard Worker 0 0 0 0.00% 8 1228 59*387f9dfdSAndroid Build Coastguard Worker 73 21 2 77.66% 8 1228 60*387f9dfdSAndroid Build Coastguard Worker 61*387f9dfdSAndroid Build Coastguard WorkerIt took 24 seconds to read the 1 Gbyte file the first time, shown in the output 62*387f9dfdSAndroid Build Coastguard Workerby the high MISSES rate and low HITRATIO. The second time it took 4 seconds, 63*387f9dfdSAndroid Build Coastguard Workerand the HITRATIO was around 99%. 64*387f9dfdSAndroid Build Coastguard Worker 65*387f9dfdSAndroid Build Coastguard Worker 66*387f9dfdSAndroid Build Coastguard WorkerThis output shows a 1 Gbyte file being created and added to the page cache: 67*387f9dfdSAndroid Build Coastguard Worker 68*387f9dfdSAndroid Build Coastguard Worker(root) ~ # ./cachestat.py 69*387f9dfdSAndroid Build Coastguard Worker HITS MISSES DIRTIES HITRATIO BUFFERS_MB CACHED_MB 70*387f9dfdSAndroid Build Coastguard Worker 1 0 0 100.00% 8 209 71*387f9dfdSAndroid Build Coastguard Worker 0 0 165584 0.00% 8 856 72*387f9dfdSAndroid Build Coastguard Worker 0 0 96505 0.00% 8 1233 73*387f9dfdSAndroid Build Coastguard Worker 0 0 0 0.00% 8 1233 74*387f9dfdSAndroid Build Coastguard Worker 75*387f9dfdSAndroid Build Coastguard WorkerNote the high rate of DIRTIES, and the CACHED_MB size increases by 1024 Mbytes. 76*387f9dfdSAndroid Build Coastguard Worker 77*387f9dfdSAndroid Build Coastguard Worker 78*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 79*387f9dfdSAndroid Build Coastguard Worker 80*387f9dfdSAndroid Build Coastguard Worker# cachestat -h 81*387f9dfdSAndroid Build Coastguard Workerusage: cachestat.py [-h] [-T] [interval] [count] 82*387f9dfdSAndroid Build Coastguard Worker 83*387f9dfdSAndroid Build Coastguard WorkerCount cache kernel function calls 84*387f9dfdSAndroid Build Coastguard Worker 85*387f9dfdSAndroid Build Coastguard Workerpositional arguments: 86*387f9dfdSAndroid Build Coastguard Worker interval output interval, in seconds 87*387f9dfdSAndroid Build Coastguard Worker count number of outputs 88*387f9dfdSAndroid Build Coastguard Worker 89*387f9dfdSAndroid Build Coastguard Workeroptional arguments: 90*387f9dfdSAndroid Build Coastguard Worker -h, --help show this help message and exit 91*387f9dfdSAndroid Build Coastguard Worker -T, --timestamp include timestamp on output 92