一、hcache
Linux用户可能经常遇到的一个问题是内存大部分都被Buffer和Cache占用了,但是有时候我们想知道到底Cache了些什么内容却没有一个直观好用的工具。今天给你介绍一个可以查看Linux当前缓存了哪些文件的小工具hcache。
Hcache作者:伊布
前几天看到有个人用go写了个pcstat,可以查看某个文件是否被缓存(作者的目的是数据库调优),也可以根据进程pid来查看都缓存了哪些文件,但是不能查看整个操作系统都cache了哪些文件。因此,我基于pcstat写了个hcache,增加了查看当前操作系统cache的前top个文件的特性,你可以从这里下载下来试用,如果有什么建议的话也欢迎反馈给我:hubottle@gmail.com
官网:https://github.com/silenceshell/hcache
二、安装
hcache是使用GO开发的,安装非常简单,开箱即用。
1 2 3 |
$ wget http://7xir15.com1.z0.glb.clouddn.com/hcache $ chmod +x hcache $ mv hcache /usr/local/bin/ |
三、使用
1 2 3 4 |
$ free -m total used free shared buff/cache available Mem: 7823 1952 174 9 5696 5518 Swap: 0 0 0 |
查看使用Cache最多的3个进程。
1 2 3 4 5 6 7 8 |
$ hcache --top 3 +----------------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |----------------------------+----------------+------------+-----------+---------| | /usr/bin/dockerd | 33368760 | 8147 | 8147 | 100.000 | | /usr/bin/docker-containerd | 7115584 | 1738 | 1738 | 100.000 | | /etc/udev/hwdb.bin | 6711310 | 1639 | 1639 | 100.000 | +----------------------------+----------------+------------+-----------+---------+ |
默认情况下会显示cache文件的全路径,会比较长。可以使用--bname
选项来仅显示文件名。
1 2 3 4 5 6 7 8 |
$ hcache --top 3 --bname +-------------------+----------------+------------+-----------+---------+ | Name | Size (bytes) | Pages | Cached | Percent | |-------------------+----------------+------------+-----------+---------| | dockerd | 33368760 | 8147 | 8147 | 100.000 | | docker-containerd | 7115584 | 1738 | 1738 | 100.000 | | hwdb.bin | 6711310 | 1639 | 1639 | 100.000 | +-------------------+----------------+------------+-----------+---------+ |
查看指定进程的Cache使用情况。
1 |
$ hcache -pid 2903 -bname |
另外还可使用指定格式输出,比如:JSON、纯文本。更多使用方法可参考hcache -h
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ hcache -h Usage of hcache: -bname convert paths to basename to narrow the output -histo print a simple histogram instead of raw data -json return data in JSON format -nohdr omit the header from terse & text output -pid int show all open maps for the given pid -plain return data with no box characters -pps include the per-page status in JSON output -terse show terse output -top int convert paths to basename to narrow the output -unicode return data with unicode box characters |
完结。。