linux中buffer和cache的区别

来源:互联网 发布:rxjava源码分析 编辑:程序博客网 时间:2024/05/23 01:24

free命令

$free -h             total       used       free     shared    buffers     cachedMem:           62G        62G       739M       1.7M        11M       9.0G-/+ buffers/cache:        53G       9.7GSwap:          11G       5.8G       5.9G

total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量

total = used + free
buffers(第二行) = used(第二行) - buffers(第一行) - cached(第一行)
free(第二行) = free(第一行) + buffers(第一行) + cached(第一行)

buffer和cache

A buffer is something that has yet to be “written” to disk. A cache is
something that has been “read” from the disk and stored for later use.

因此,buffer是用于存放要输出到disk(块设备)的数据,而cache是存放从disk上读出的数据,二者是为了提高IO性能,并由OS管理。
个人理解,buffer主要用于写操作,cache主要用于读操作,其操作方向也不同,buffer主要由进程把数据从内存写入外部设备如磁盘,cache主要从外部设备如磁盘读入到内存以备进程读取。

buffers是被一个特定进程使用的用于临时存放数据的内存空间,这些内容不会被其他进程访问。
这篇文章用了带宽的概念来类比,非常贴切。当你试图通过网络发送大量的突发数据时,如果网卡的带宽(capacity)仅支持发送一部分时,它会将剩下的数据存在buffers中,用于后续发送。

而cached用于存放频繁访问的一些数据,目的是做到更快的数据访问。比如多个进程需要读同一个文件,此时内存可能就分配一片cached区域,用于作为CPU到磁盘之间的cache。

总结

buffers和cached的区别:
a. buffers是供单个进程使用的,而cached可供多个进程使用
b. buffers是一次性的,而cached是可以反复使用的
buffers和cached的共同之处就在于它们都是临时性的存储,如果后续有进程需要使用这些内存空间,Linux会释放(free)这些临时性占用的内存。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 13岁初中生有思想不听话怎么办 交朋友找对象喜欢颜值高的怎么办 儿子找对象不听父母怎么办 缺爱怎么办的搞笑回答 对象说有人追她怎么办 说了一句话媳妇非常生气怎么办 柔顺后头发太臭怎么办 积分兑换手机被骗了怎么办 老板对你的上级不满怎么办 如果老板不给工资怎么办 手机号码被标记为其他公司怎么办? 被标记为骚扰电话怎么办 手机被标记骚扰电话怎么办 360摄像头不支持5g怎么办 摄像头不支持5g网络怎么办 家里的wifi卡了怎么办 办信用卡没有座机号码怎么办 拨打电话时显示号码有误怎么办 个体营业执照怎么办企业支付宝 没满16岁怎么办电话卡 我的电话卡丢了怎么办 公司注销地税没有补齐怎么办 公司没有固定电话怎么办信用卡 申请信用卡公司没有固定电话怎么办 办理信用卡公司没有固定电话怎么办 江门市固话欠费停机后怎么办 物业交钥匙地面有裂缝怎么办 深圳交通卡丢了怎么办 没装etc走etc怎么办 找不到过敏源身体痒怎么办 微信客服电话打不通怎么办 华为手机网络信号不好怎么办 酷我好友动态加载不了怎么办? 米兔电话手表停机了怎么办 糖猫电话手表停机了怎么办 360电话手表停机了怎么办 小天才电话手表停机怎么办 移动手机卡不知道号码怎么办 天猫退款手机号换了怎么办 科目二考试脚抖怎么办 面试新工作没打电话怎么办