一、基本概念


举例:


linux资源管理之内存_sed


 


通过栗子,先了解一下指标类型说明和基本概念


 


linux 系统 free -m命令可查看系统内存使用情况,linux系统使用内存的机制是:当一个程序需要程序时,系统会从总内存(total)中划分出比当使用的真实内存更多的内存放在缓冲区,待应用耗内存量增加时,给应用使用。


 


下面对命令参数做如下说明:


 


第一列


Mem 内存的使用信息


Swap 交换空间的使用信息


第一行


total 系统总的可用物理内存大小


used 已被被分配掉的内存,但很多都会放在缓冲区,未被使用


free 未被分配的物理内存


shared 被共享使用的物理内存大小


buff/cache 被 buffer 和 cache 使用的物理内存大小。即,系统分配,但未被使用的buffers/cache数量


available 还可以被 应用程序 使用的物理内存大小


 


部分版本系统中有-/+ Buffers/cache维度指标:


第三行:-/+ Buffers/cache


used:实际使用的内存总量。buffers使用部分+cache使用部分


free:实际剩余的内存总量。未被分配的内存+buffers未使用部分+cache未使用部分


 


第四行:Swap


交换分区


 


buffers和cache的含义貌似还不太懂,下面是网络上给出的定义:


buffer : 作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区。


cache: 作为page cache的内存, 文件系统的cache,是memory的缓冲区


 


数据统计:


total=Mem_used+Mem_free


Mem_used=Mem_buffers+Mem_cached+(-/+ buffers/cache)_used


Mem_free=(-/+ buffers/cache)_free-Mem_buffers-Mem_cached


 


二、查看当前内存使用


1、ps命令


Linux下获取占用内存最多的10个进程


ps aux|head -n1;ps aux|grep -v PID|sort -nr -k4|head -n10


 


2、free -g/m


 


 


三、遇到的问题


 


1、free 与 available 的区别


free 是真正尚未被使用的物理内存数量。


available 是应用程序认为可用内存数量,available = free + buffer + cache (注:只是大概的计算方法)


 


扩展:


Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。