hcache是基於pcstat的,pcstat可以查看某個文件是否被緩存和根據進程pid來查看都緩存了哪些文件。hcache在其基礎上增加了查看整個操作系統Cache和根據使用Cache大小排序的特性。
安裝
# wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache # chmod 755 hcache ;mv hcache /usr/local/bin/
使用
1、查看占用緩存最多的三個文件
# hcache -top 3 2021/06/03 21:01:28 skipping "/tmp/hsperfdata_test/531": could not open file for read: open /tmp/hsperfdata_test/531: no such file or directory +------------------------------------------------------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |------------------------------------------------------------------+----------------+------------+-----------+---------| | /home/test/softwares/jdk1.8.0_191/jre/lib/rt.jar | 66346586 | 16198 | 4559 | 028.145 | | /home/test/softwares/jdk1.8.0_191/jre/lib/amd64/server/libjvm.so | 17022752 | 4156 | 3734 | 089.846 | | /etc/udev/hwdb.bin | 7780559 | 1900 | 958 | 050.421 | +------------------------------------------------------------------+----------------+------------+-----------+---------+
結果展示含義如下:
- name:占用緩存的文件全路徑
- size:文件大小
- pages:占了多少個Block
- Cached:緩存使用了多少個Block
- Percent:Cached 與 Pages的比值
上面命令顯示的是文件全路徑,可以使用-bname選項,只顯示文件名
# hcache -top 3 -bname 2021/06/03 21:11:44 skipping "/tmp/hsperfdata_test/531": could not open file for read: open /tmp/hsperfdata_test/531: no such file or directory +-----------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |-----------+----------------+------------+-----------+---------| | rt.jar | 66346586 | 16198 | 4559 | 028.145 | | libjvm.so | 17022752 | 4156 | 3734 | 089.846 | | hwdb.bin | 7780559 | 1900 | 958 | 050.421 | +-----------+----------------+------------+-----------+---------+
查看進程的緩存使用
# hcache -pid 1397 +-----------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |-----------------------+----------------+------------+-----------+---------| | libm-2.23.so | 1088952 | 266 | 185 | 069.549 | | libstdc++.so.6.0.21 | 1566440 | 383 | 346 | 090.339 | | libz.so.1.2.8 | 104824 | 26 | 26 | 100.000 | | libdl-2.23.so | 14608 | 4 | 4 | 100.000 | | libwrap.so.0.7.6 | 36632 | 9 | 9 | 100.000 | | libaio.so.1.0.1 | 5512 | 2 | 2 | 100.000 | | libnss_compat-2.23.so | 35688 | 9 | 9 | 100.000 | | libnsl-2.23.so | 93128 | 23 | 23 | 100.000 | | libc-2.23.so | 1864888 | 456 | 456 | 100.000 | | libcrypt-2.23.so | 39224 | 10 | 10 | 100.000 | | librt-2.23.so | 31712 | 8 | 8 | 100.000 | | liblz4.so.1.7.1 | 96360 | 24 | 24 | 100.000 | | libgcc_s.so.1 | 89696 | 22 | 22 | 100.000 | | libpthread-2.23.so | 138696 | 34 | 34 | 100.000 | | libnss_nis-2.23.so | 47648 | 12 | 12 | 100.000 | | libnuma.so.1.0.0 | 43936 | 11 | 11 | 100.000 | | ld-2.23.so | 162632 | 40 | 40 | 100.000 | | mysqld | 24754056 | 6044 | 4051 | 067.025 | | libnss_files-2.23.so | 47600 | 12 | 12 | 100.000 | +-----------------------+----------------+------------+-----------+---------+