通过free命令看Linux内存
-
total:总内存大小。 -
used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 -
free:空闲的内存大小。 -
shared:进程间共享内存(一般不会用,可以忽略)。 -
buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。 -
cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。
-/+ buffers/cache看做两部分
-
-buffers/cache
:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。 -
``+buffers/cache`:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。 -
Swap:硬盘上交换分区的使用大小。
Buffer和Cache介绍
Cache
主要是针对读
操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据,即上面的Cached部分(这部分纯属个人理解,正确与否有待考证)。Buffer
主要是针对写
操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能。常见症状
症状一
:在Linux中频繁存取文件,物理内存很快用光,而cached一直在增长。解释
:Linux会对每次请求过的数据缓存在cache里,好处就是CPU的处理速度远远高于内存,所以在CPU和内存通讯的时候可以快速从cache中命中结果返回。症状二
:Swap被占用。解释
:内存可能不够了,才会占Swap,所以Swap可以作为服务器监控的一项指标,引起注意。手动清理Swap和buffers/cache
清理Swap
swapoff -a && swapon -a
清理buffers/cache:
sync; sync; sync;&& echo 3 >/proc/sys/vm/drop_caches
sleep 2
echo 0 > /proc/sys/vm/drop_caches
sync-->
将缓存的内从写回到硬盘中;echo 3 >/proc/sys/vm/drop_caches-->
修改drop_caches
的值为3,默认为0,改为3系统会清理缓存的内容;sleep 2 -->
等一下,防止上一步没执行完;echo 0 >/proc/sys/vm/drop_caches -->
改回默认值总结
-/+ buffers/cache
的值就可以知道内存到底够不够了。推荐阅读
原文始发于微信公众号(橘猫学安全):搞不懂 Linux 的内存、Swap、Cache、Buffer,就把这个给他扔过去!
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论