内存基础概念
先执行一下 top 命令,看结果中关于内存的相关部分
# top
其中的 VIRT、RES、SWAP 都是什么呢?
分别是下面的3个概念
物理内存 Resident - RES 实际的内存空间 RAM 交换区 Swapped - SWAP 当物理内存不足时,操作系统会把内存中不常用的页换出到磁盘空间 当被换出的页需要被访问时,再换入到物理内存 所以交换区就是用来临时存放内存中不常用的内容的,感觉就想内存的一个小仓库 虚拟内存 Virtual - VIRT
虚拟内存 = 物理内存 + 交换区 程序操作内存时,实际就是操作虚拟内存中的地址,操作系统再负责映射到物理地址,或者交换区
快速了解内存状态
# free
主要指标 total - 物理内存总大小 used - 已经使用的物理内存大小 free - 空闲的物理内存 shared - 多个进程共享内存的大小 buffers/cached - 做为缓存的内存大小 swap - 交互空间的使用状态
关于内存的几个常见问题
1
空闲空间少,是不是内存不够了?
其实linux中空闲的物理空间经常是很少的,和linux使用内存的思路有关 linux会尽量提高内存使用率,经常会把磁盘上的内容缓存到内存,用来加速 linux认为内存闲着也是闲着,还不如拿来做缓存 当内存不足时,linux就会释放缓存部分,让给真正需要的程序使用
2
buffer 和 cache 是什么区别?
buffer 缓存的是磁盘文件的元数据,例如文件属性、目录结构等等 cache 缓存的是真正的文件内容
3
如何判断内存真正不足?
内存不足主要有2个明显的表现 (1)持续的内存换入换出 (2)较多的主缺页中断 主缺页中断的概念: 缺页中断包含主/次缺页中断 次缺页中断,是在内存中可以找到目标页 主缺页中断,是在内存中找不到,需要到磁盘中找 所以较多的主缺页中断意味着较多的访问磁盘 可以通过 sar 命令查看指标 # sar -B 1 3
pgpgin/pgpgout 就是内存的换入换出 fault 次缺页中断 majflt 主缺页中断 vmstat 命令也可以查看一些内存信息 # vmstat 1 5
memory 部分是内存信息 si/so 是交换区的换入换出 补充技巧 执行top命令后,通常不会显示SWAP列,需要自己指定显示 在top的界面中点击‘f’,进入列编辑模式,按下字母‘p’, 会看到SWAP列被选中,然后按回车键返回top界面,SWAP列便显示出来了