一、hcache
Linux用户可能经常遇到的一个问题是内存大部分都被Buffer和Cache占用了,但是有时候我们想知道到底Cache了些什么内容却没有一个直观好用的工具。今天给你介绍一个可以查看Linux当前缓存了哪些文件的小工具hcache。
Hcache作者:伊布
前几天看到有个人用go写了个pcstat,可以查看某个文件是否被缓存(作者的目的是数据库调优),也可以根据进程pid来查看都缓存了哪些文件,但是不能查看整个操作系统都cache了哪些文件。因此,我基于pcstat写了个hcache,增加了查看当前操作系统cache的前top个文件的特性,你可以从这里下载下来试用,如果有什么建议的话也欢迎反馈给我:hubottle@gmail.com
二、安装
hcache是使用GO开发的,安装非常简单,开箱即用。
$ wget http://7xir15.com1.z0.glb.clouddn.com/hcache
$ chmod +x hcache
$ mv hcache /usr/local/bin/
1
2
3
$wgethttp://7xir15.com1.z0.glb.clouddn.com/hcache
$chmod+xhcache
$mvhcache/usr/local/bin/
三、使用
$ free -m
total used free shared buff/cache available
Mem: 7823 1952 174 9 5696 5518
Swap: 0 0 0
1
2
3
4
$free-m
totalusedfreesharedbuff/cacheavailable
Mem:78231952174956965518
Swap:000
查看使用Cache最多的3个进程。
$ 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 |
+----------------------------+----------------+------------+-----------+---------+
1
2
3
4
5
6
7
8
$hcache--top3
+----------------------------+----------------+------------+-----------+---------+
|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选项来仅显示文件名。
$ 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 |
+-------------------+----------------+------------+-----------+---------+
1
2
3
4
5
6
7
8
$hcache--top3--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使用情况。
$ hcache -pid 2903 -bname
1
$hcache-pid2903-bname
另外还可使用指定格式输出,比如:JSON、纯文本。更多使用方法可参考hcache -h。
$ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$hcache-h
Usageofhcache:
-bname
convertpathstobasenametonarrowtheoutput
-histo
printasimplehistograminsteadofrawdata
-json
returndatainJSONformat
-nohdr
omittheheaderfromterse&textoutput
-pidint
showallopenmapsforthegivenpid
-plain
returndatawithnoboxcharacters
-pps
includetheper-pagestatusinJSONoutput
-terse
showterseoutput
-topint
convertpathstobasenametonarrowtheoutput
-unicode
returndatawithunicodeboxcharacters
完结。。
如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。