linux buffer cache 过高_你真的理解Linux的内存监控吗?

如果你平时工作使用Windows系统,对Windows的内存监控应该不陌生,在“任务管理器”中显示90%的内存占用,这些内存就全部由进程占用了,如果这时产生了新的进程,没有内存可用,内存管理器会将一部分内存数据交换到硬盘,出现这种情况,系统性能就会显著下降。

在Linux系统中常用“free”命令查看系统的内存使用情况,这篇文章就对“free”命令做介绍。“free”命令输出系统内存使用情况的快照,实际的信息保存在文件“/proc/meminfo”中。

“free”命令输出中,“used”列显示的内存占用由两大部分组成:进程占用、操作系统缓存(cache+buffer),操作系统缓存数据是可以直接丢弃的,不需要交换到硬盘中,所以在Linux系统中,实际可用的内存除了“free”列显示的内存还要加上buffer/cache占用的内存。

使用“free”命令,输出如下(操作系统是Debian 10):

74ce6bfa4713ebe7c108d870e83dac8f.png

新版本free命令的输出

忽略Swap部分,可以发现下面数量关系:

total=used+free+buff/cache

根据上面的描述,可用的内存为“free+buff/cache”即39178612,但实际有点不一样,因为一些cache内存被活动进程使用了,如果使用这部分内存,会影响系统的性能。“available”显示的值考虑到这个情况,这里显示的内存是可以直接由新进程使用的,而不影响系统性能的。

在较早的操作系统,比如RHEL 6,“free”命令的显示如下:

0344eb28afe0e784dc3e931c3e795d67.png

较早版本free命令的输出

这种情况下,第二行显示的“used”和“free”内存没有包含buffers和cache,总内存的数值“total”等于第二行的“used”加上“free”的值,也等于第三行的“used”加上“free”的值。这里还有两个关键的等式,如下:

a092a9bcb021ea819de334b73754c875.png

used和free的计算方法

希望这篇文章能帮到你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值