Linux内存使用信息
简介
内存 ( memory )是操作系统管理的一项重要指标,对内存使用量进行监控,有助于提前发现内存问题,避免因内存耗尽而造成的故障。
如果出现内存快被耗尽,一般会出现 OOM 的现象。
命令查看
使用 free 命令查看
free
total used free shared buff/cache available
Mem: 16045460 2493184 10043920 568668 3508356 12683216
Swap: 0
查看统计
free -t
free -t
total used free shared buff/cache available
Mem: 16189224 3981536 7458680 1902204 4749008 10029104
Swap: 0 0 0
Total: 16189224 3981536 7458680
默认是使用 byte 位单位,也可以使用 -k 或 -m 或 -g 来切换值单位
详细指标
Linux 内核负责统计内存使用量并暴露在 /proc 伪文件系统中,路径是 /proc/meminfo 。一般而言,需要重点关注的指标如下: 内存使用量指标(字节):
total 物理内存总量
free 空闲内存(未使用)
buffers 内核缓冲区
cached 文件缓冲页
slab 内核 slab 数据结构
cache cached 以及 slab 之和
g_free 广义空闲内存
used 已使用内存
active 活跃内存
inactive 非活跃内存
available 可用内存
total
total 表示 物理内存总量 ,单位为 字节 ,对应 /proc/meminfo 的 MemTotal 字段。
free
free 表示 空闲内存量 ,单位为 字节 , 对应 /proc/meminfo 的 MemFree 字段。
buffers
buffers 表示 内核缓冲区 ,单位为 字节 ,对应 /proc/meminfo 的 Buffers 字段。
cached
cached 表示 文件缓冲页 ,单位为 字节 ,对应 /proc/meminfo 的 Cached 字段。
slab
slab 表示 内核 slab 数据结构 ,单位为 字节 ,对应 /proc/meminfo 的 Slab 字段。
cache
cache 与 free 命令中的 cache 相同,即 cached 以及 slab 之和:
cache = cached + slab
g_free
g_free 表示 广义空闲内存 ( generalized free ),单位为 字节 ,计算方式如下:
g_free = free + buffers + cache
buffers 和 cache 是系统为了提升性能而使用的缓存,内存紧张时可随时回收另做它用。因此,这部分内存在某种意义上可以认为是空闲的,这就是 广义空闲内存 的由来。
used
used 表示 已用内存 ,单位为 字节 ,计算方式如下:
used = total - g_free = total - free - buffers - cache
active
active 表示 活跃内存 ,单位为 字节 ,对应 /proc/meminfo 的 Active 字段。
活跃内存 是指最近经常访问的内存,通常不会被重新分配,除非非常必要。
inactive
inactive 表示 非活跃内存 ,单位为 字节 ,对应 /proc/meminfo 的 Inactive 字段。
非活跃内存 是指最近较少访问的内存,需要新分配内存时,这部分优先选择。
available
从 3.14 内核版本开始提供在 /proc/meminfo 的 MemAvailable 字段,available 表示 可用内存 ,单位为 字节。
可用内存 指的是可用于启动一个新应用进程的内存,该指标是内核提供的一个估计值。它同样结合 free 以及 cache 两部分内存,但是考虑到 cache 因使用而不能释放的情况。因此,可以认为:
free <= available <= g_free
总结
在 CentOS 7 上基本都是看 available 来判断可用内存。
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2020/2020-03/linux_memory/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。