#每日一记#Linux 缓存 cache 和 buffer
  

sailyang 1967

{{ttag.title}}


在Linux 中,查看内存最常用的命令为: free [options]





free -m :查看内存情况,单位为MB。
total 内存总数
used 已经使用的内存数(我的程序使用内存数量+系统缓存使用的内数量)
free 空闲的物理内存数(是真正的空闲,未被任何程序占用)
shared 多个进程共享的内存总额
buffers 磁盘缓存(Buffer Cache)的大小(可提高系统I/O调用的性能)
cached  磁盘缓存(Page Cache)的大小(可提高系统I/O调用的性能)
-buffers/cache 表示已被我们的程序使用的内存数,计算方法:used - buffers - cached
+buffers/cache 表示还可已被我使用的内存数,计算方法:free + buffers + cached

操作系统目前可用内存总量=free + buffers + cached,上图差不多是2574M

buffers是用来给块设备做的缓冲大小、buffers是用来存储目录里面有什么内容,权限等等
cached用来给文件做缓冲,用来记忆我们打开的文件.

即使你的程序运行结束后,Cache Memory也不会自动释放。
这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存(free)会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。

如果你觉得这样看着难受,你可以手动去释放Cache Memory。

手动释放缓存
---------------------------------------
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:

cat /proc/sys/vm/drop_caches   查看默认值

先手动执行sync命令,sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

# echo 3 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3

再来运行free命令。可以看出来有效的释放了buffer和cache。

清cache:echo 1 > /proc/sys/vm/drop_caches
清buffer:echo 2 > /proc/sys/vm/drop_caches
清cache+buffer:echo 3> /proc/sys/vm/drop_caches

清缓存的另一种方法:
sysctl -w vm.drop_caches=3

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

发表新帖
热门标签
全部标签>
有一说一
设备维护
新版本体验
山东区技术晨报
纪元平台
每日一问
功能体验
虚拟机
安装部署配置
解决方案
排障笔记本
测试报告
授权
技术盲盒
2024年技术争霸赛
问题分析处理
标准化排查
GIF动图学习
原创分享
资源访问
齐鲁TV
云化安全能力
信服课堂视频
日志审计
每日一记
sangfor周刊
地址转换
「智能机器人」
场景专题
2025年技术争霸赛
专家问答
技术圆桌
升级
玩转零信任
升级&主动服务
VMware替换
产品连连看
畅聊IT
上网策略
运维工具
用户认证
信服故事
平台使用
排障那些事
西北区每日一问
高手请过招
高频问题集锦
全能先锋系列
安全攻防
华北区交付直播
每周精选
安全效果
专家说
产品知识周周练
技术笔记
SDP百科
北京区每日一练
故障笔记
社区新周刊
行业实践
流量管理
产品动态
技术顾问
答题自测
在线直播
MVP
VPN 对接
项目案例
存储
产品预警公告
技术争霸赛
追光者计划
2023技术争霸赛专题
技术晨报
关键解决方案
声音值千金
网络基础知识
功能咨询
卧龙计划
华北区拉练
【 社区to talk】
工具体验官
终端接入
迁移
秒懂零信任
POC测试案例
专家分享
S豆商城资讯
天逸直播
SANGFOR资讯
以战代练
文档捉虫
产品解析
产品体验官
热门活动

本版达人

feeling

本周分享达人

新手29676...

本周提问达人