linux查询进程cache使用量,使用Hcache查看是谁占用了系统Buffer&Cache?

一、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

完结。。

如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值