chantra | 75dfd5a | 2016-07-19 00:17:45 +0200 | [diff] [blame] | 1 | # ./cachetop -h |
| 2 | usage: cachetop.py [-h] [interval] |
| 3 | |
| 4 | show Linux page cache hit/miss statistics including read and write hit % per |
| 5 | processes in a UI like top. |
| 6 | |
| 7 | positional arguments: |
| 8 | interval Interval between probes. |
| 9 | |
| 10 | optional arguments: |
| 11 | -h, --help show this help message and exit |
| 12 | |
| 13 | examples: |
| 14 | ./cachetop # run with default option of 5 seconds delay |
| 15 | ./cachetop 1 # print every second hit/miss stats |
| 16 | |
| 17 | # ./cachetop 5 |
chantra | beefca9 | 2016-07-25 18:32:46 -0700 | [diff] [blame] | 18 | 13:01:01 Buffers MB: 76 / Cached MB: 114 / Sort: HITS / Order: ascending |
chantra | 75dfd5a | 2016-07-19 00:17:45 +0200 | [diff] [blame] | 19 | PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT% |
| 20 | 1 root systemd 2 0 0 100.0% 0.0% |
| 21 | 680 root vminfo 3 4 2 14.3% 42.9% |
| 22 | 567 syslog rs:main Q:Reg 10 4 2 57.1% 21.4% |
| 23 | 986 root kworker/u2:2 10 2457 4 0.2% 99.5% |
| 24 | 988 root kworker/u2:2 10 9 4 31.6% 36.8% |
| 25 | 877 vagrant systemd 18 4 2 72.7% 13.6% |
| 26 | 983 root python 148 3 143 3.3% 1.3% |
| 27 | 981 root strace 419 3 143 65.4% 0.5% |
| 28 | 544 messageb dbus-daemon 455 371 454 0.1% 0.4% |
| 29 | 243 root jbd2/dm-0-8 457 371 454 0.4% 0.4% |
| 30 | 985 root (mount) 560 2457 4 18.4% 81.4% |
| 31 | 987 root systemd-udevd 566 9 4 97.7% 1.2% |
| 32 | 988 root systemd-cgroups 569 9 4 97.8% 1.2% |
| 33 | 986 root modprobe 578 9 4 97.8% 1.2% |
| 34 | 287 root systemd-journal 598 371 454 14.9% 0.3% |
| 35 | 985 root mount 692 2457 4 21.8% 78.0% |
| 36 | 984 vagrant find 9529 2457 4 79.5% 20.5% |
| 37 | |
| 38 | Above shows the run of `find /` on a newly booted system. |
| 39 | |
| 40 | Command used to generate the activity |
| 41 | # find / |
| 42 | |
| 43 | Below shows the hit rate increases as we run find a second time and it gets it |
| 44 | its pages from the cache. |
| 45 | # ./cachetop.py |
chantra | beefca9 | 2016-07-25 18:32:46 -0700 | [diff] [blame] | 46 | 13:01:01 Buffers MB: 76 / Cached MB: 115 / Sort: HITS / Order: ascending |
chantra | 75dfd5a | 2016-07-19 00:17:45 +0200 | [diff] [blame] | 47 | PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT% |
| 48 | 544 messageb dbus-daemon 2 2 1 25.0% 50.0% |
| 49 | 680 root vminfo 2 2 1 25.0% 50.0% |
| 50 | 243 root jbd2/dm-0-8 3 2 1 40.0% 40.0% |
| 51 | 1068 root python 5 0 0 100.0% 0.0% |
| 52 | 1071 vagrant bash 350 0 0 100.0% 0.0% |
| 53 | 1071 vagrant find 12959 0 0 100.0% 0.0% |
| 54 | |
| 55 | |
| 56 | Below shows that the dirty pages increases as a file of 80M is created running |
| 57 | # dd if=/dev/urandom of=/tmp/c bs=8192 count=10000 |
| 58 | |
| 59 | # ./cachetop.py 10 |
chantra | beefca9 | 2016-07-25 18:32:46 -0700 | [diff] [blame] | 60 | 13:01:01 Buffers MB: 77 / Cached MB: 193 / Sort: HITS / Order: ascending |
chantra | 75dfd5a | 2016-07-19 00:17:45 +0200 | [diff] [blame] | 61 | PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT% |
| 62 | 544 messageb dbus-daemon 9 10 7 10.5% 15.8% |
| 63 | 680 root vminfo 9 10 7 10.5% 15.8% |
| 64 | 1109 root python 22 0 0 100.0% 0.0% |
| 65 | 243 root jbd2/dm-0-8 25 10 7 51.4% 8.6% |
| 66 | 1070 root kworker/u2:2 85 0 0 100.0% 0.0% |
| 67 | 1110 vagrant bash 366 0 0 100.0% 0.0% |
| 68 | 1110 vagrant dd 42183 40000 20000 27.0% 24.3% |
| 69 | |
| 70 | The file copied into page cache was named /tmp/c with a size of 81920000 (81920000/4096) = 20000 |