判断内存是否够用需结合free和vmstat:重点看available(低于10%需警惕)、Swap used(持续非零表明内存不足),再用vmstat观察free下降趋势、so>0及b值不为0等动态指标。
看内存是否够用,不能只盯“used”数字——
free
和
vmstat
配合着看,才能看清真实压力。
free:快速摸清内存家底
执行
就能一目了然地看到当前内存整体情况。重点不是 total 或 used,而是:
available
:系统估算出的、真正能立刻分配给新进程的内存。这是判断内存是否紧张的核心指标;低于总内存的10%,就得警惕
buff/cache
:缓存和缓冲区占的内存,不是“被占用”,而是“可随时回收”。它高≠内存紧张,反而是系统在高效利用资源
Swap used
:如果这一栏持续非零,尤其数值还在涨,说明物理内存已不够,系统被迫往磁盘搬数据,性能必然下降
vmstat:追踪内存动态变化
运行
(每秒刷新一次),重点关注三类字段:
Docker Desktop(linux)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
memory 区域的 free
:持续观察它的趋势。如果 free 值不断下降、接近零,且 buff/cache 没同步上升,说明内存正在被真实占用
swap 区域的 si/so
:si(swap in)和 so(swap out)只要长期大于 0,就是在频繁换页,是内存瓶颈的明确信号
procs 区域的 r/b
:r 值长期大于 CPU 核数,b 值持续不为 0,往往伴随内存不足导致进程排队或等待 I/O
两者怎么搭配用?
先跑
快速定性:available 是否充足?Swap 是否启用?再开
持续观察 30 秒以上,看 free 是否缓慢流失、so 是否间歇跳动、b 值是否反复出现。如果 free 在掉、so 在动、available 在逼近警戒线,基本可以确认是内存资源瓶颈,而不是临时缓存抖动。
几个实用小技巧
想让
每 3 秒自动刷新:用
排查内存泄漏时,
看 swpd 是否随时间缓慢上涨,比单次快照更可靠
发现 available 很低但 buff/cache 占比极高?试试
(仅测试环境,生产慎用)释放缓存验证是否真缺内存
基本上就这些。不复杂,但容易忽略 available 和 swpd 的联动关系。
free -hvmstat 1free -hvmstat 2freefree -h -s 3vmstat 1echo 3 > /proc/sys/vm/drop_caches