Linux Cache被哪些进程占用解决

Buffer和Cache

Buffer 是缓冲区,而 Cache 是缓存,两者都是数据在内存中的临时存储。
Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。
磁盘是一个块设备,可以划分为不同的分区;在分区之上再创建文件系统,挂载到某个目录,之后才可以在这个目录中读写文件。
Linux 中“一切皆文件”,平时提到的“文件”是普通文件,磁盘是块设备文件。
在读写普通文件时,会经过文件系统,由文件系统负责与磁盘交互;而读写磁盘或者分区时,就会跳过文件系统,也就是所谓的“裸I/O“。这两种读写方式所使用的缓存是不同的,也就是文中所讲的 Cache 和 Buffer 区别。
Buffers 是内核缓冲区用到的内存,对应的是 /proc/meminfo 中的 Buffers 值。
Cache 是内核页缓存和 Slab 用到的内存,对应的是 /proc/meminfo 中的 Cached 与 SReclaimable 之和。

查看Buffer&Cache使用率高的进程有哪些

wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache

chmod 755 hcache && mv hcache /usr/local/bin/

hcache命令

全局显示10个最大的被缓存文件
hcache --top10
[root@nginx1 work]# hcache --top 10
+---------------------------------------------------------+----------------+------------+-----------+---------+
| Name                                                    | Size (bytes)   | Pages      | Cached    | Percent |
|---------------------------------------------------------+----------------+------------+-----------+---------|
| /usr/local/jdk1.8.0_151/jre/lib/rt.jar                  | 66266965       | 16179      | 4418      | 027.307 |
| /usr/local/jdk1.8.0_151/jre/lib/amd64/server/libjvm.so  | 17014509       | 4154       | 4154      | 100.000 |
| /usr/local/percona/pmm2/exporters/node_exporter         | 13661974       | 3336       | 3336      | 100.000 |
| /usr/local/percona/pmm2/exporters/vmagent               | 13047474       | 3186       | 3186      | 100.000 |
| /usr/local/ilogtail/ilogtail_1.4.0                      | 11936928       | 2915       | 2915      | 100.000 |
| /usr/local/share/assist-daemon/assist_daemon            | 6899196        | 1685       | 1685      | 100.000 |
| /usr/local/nginx/sbin/nginx                             | 6773421        | 1654       | 1654      | 100.000 |
| /usr/local/share/aliyun-assist/2.2.3.421/aliyun-service | 29966853       | 7317       | 1409      | 019.257 |
| /usr/local/percona/pmm2/bin/pmm-agent                   | 34498089       | 8423       | 937       | 011.124 |
| /usr/local/aegis/aegis_update/AliYunDunUpdate           | 3834824        | 937        | 937       | 100.000 |
+---------------------------------------------------------+----------------+------------+-----------+---------+

然后定位进程信息
[root@nginx1 work]# lsof /usr/local/jdk1.8.0_151/jre/lib/rt.jar
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    14008 devops  mem    REG  252,1 66266965 1071202 /usr/local/jdk1.8.0_151/jre/lib/rt.jar
java    14008 devops    3r   REG  252,1 66266965 1071202 /usr/local/jdk1.8.0_151/jre/lib/rt.jar

 手动回收Cache
[root@nginx1 work]# echo 1 > /proc/sys/vm/drop_caches
[root@nginx1 work]# free -g
             total       used       free     shared    buffers     cached
Mem:            31          9         22          0          0          0
-/+ buffers/cache:          9         22
Swap:            0          0          0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值