文章目录
前言
free 支持查看空闲的和已使用的物理内存和交换分区所占用的系统内存情况,改信息是通过解析/proc/meminfo文件中的内容进行获取。
这里简单描述一下展示几列内容的含义:
-
total系统总内存 ,显示的Mem和Swap为/proc/meminfo中的MemTotal and SwapTotal项 -
used被使用的内存,通过total - free所得 -
free未使用的内存,为/proc/meminfo中的MemFree and SwapFree项 -
shared共享内存,大多被tmpfs使用的内存,为/proc/meminfo中的Shmem选项,内核版本2.6.32以上可用,如果不可用,则会显示0 -
buffers被内核使用的缓冲区,/proc/meminfo中的Buffers -
cache被操作系统页缓存和slabs占用的内存,/proc/meminfo中的Cached和Slab。关于slab的介绍可以参考Linux内存管理中的slab分配器 -
buff/cachebuffers和cache占用的内存之和 -
available可用的内存
语法格式
free [options]
以指定单位显示内存占用情况
-
-b指定输出单位为Bytes -
-k指定输出单位为KB -
-m指定输出单位为MB -
-g指定输出单位为GB,还可以指定--tera–TB,peta–PB 不过一般不会有这么大的单节点内存了 -
-h以人性化的输出查看内存,超过M的显示为M,超过G的显示为G
打印所有内存占用(RAM + SWAP)
free -tfree -th
打印间隔以及次数
free -s 1 -c 10 -h 每隔一秒打印一次,总共打印10次
打印所有的列(将buff和cache分开)
free -wh
free各个空间含义
swap交换空间
swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
内核提供 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度,默认为60,表示内存可以将不常使用的数据60%迁移到swap分区。
使用/sbin/sysctl -a|grep swappiness 查看配置情况
在/etc/etc/sysctl.conf 修改配置 vm.swappiness = 70
使用/sbin/sysctl -p /etc/sysctl.conf 应用配置
cache页高速缓存
参考linux 文件IO与内存映射:page cache页高速缓存
free 与 available
free 是真正尚未被使用的物理内存数量,至于 available它是从应用程序的角度看到的可用内存数量,Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差