Linux:free指令

学习自:

Linux free命令使用教程(free指令)(查看内存、系统内存、内存占用、内存使用情况)_free命令看到的内存-CSDN博客

free命令详解-CSDN博客

1、概述

free指令用于显示系统中未使用已使用物理swap区总量

2、语法

free [-bkmght] [ -s 秒数 ]

3、参数

参数 用途
b 以B为单位
k KB
m MB
g GB
h 以人类易读的方式输出
t 加入total行,用于计算某类内存总数
s 后跟数字,每隔几秒显示一次

4、输出

free
              total        used        free      shared  buff/cache   available
Mem:         828592      148124      422124        5740      258344      546268
Swap:       1952764           0     1952764

free -h
              total        used        free      shared  buff/cache   available
Mem:          809Mi       144Mi       412Mi       5.0Mi       252Mi       533Mi
Swap:         1.9Gi          0B       1.9Gi

1)指标

指标 说明
total 总量
used 已使用
free 剩余可用
shared 多进程共享内存
buff/cache buff+cache大小
available 可被新应用程序使用的内存大小

2)解释

①buff、cache

buffer和cache是两种不同的存储:

buffer:缓冲区。介于内存、硬盘之间,目的是提高内存与硬盘之间的数据交换速度。当数据从内存写入硬盘时,并不是直接写入,而是先存到buffer中,待buffer积累到一定大小后统一写入硬盘。

cache:高速缓存。介于CPU、内存之间,为了解决CPU运算速度与内存的读写速度不匹配的问题。Cache中存放频繁访问的数据,以便CPU可以快速访问这些数据。

当OS要读取某个文件(如/etc/hosts),它会先检查这个文件的数据是否已经在Cache中,如果在,就放弃访问磁盘而是直接从内存中读取。该过程称为命中。如果未命中,此时OS要去调度I/O去磁盘中读取数据,再将读来的数据页放到Cache中。

在Linux2.4版本之前,cache和buffer是完全分离的,此时对于文件数据会被缓存两次,这种方式虽然简单,但是低效,浪费内存空间(【性能】Linux系统上free命令看到的buff/cache到底是什么 - 简书)。

Linux2.4版本将cache和buffer统一了,如果一个页加载到了cache,那么在buffer中只需要维护一个指向该页的指针就可以了。只有那些没有文件表示的块才会放到buffer里。

②free、available

free:可用内存空间

available:应用程序可用的内存空间

free是真正尚未被使用的物理内存数量。available是从应用程序视角看到的可用内存数量。Linux为了提高磁盘操作性能,会消耗部分内存去缓存磁盘数据,即buff/cache。因此对于内核来说,buff和cache都属于已被使用的内存

当应用程序需要内存时,如果没有足够的free使用,内核会从buff和cache中回收内存来满足应用程序的需求。因此从应用程序角度来看,available=free+buffer+cache。当然,这只是理想的计算方式,实际中的数据往往有较大误差。

③swap区

swap区是磁盘上的一片空间,也称为虚拟内存。

当内存空间不足时,会将部分页调入到swap区以腾出空间给新的程序页使用。

具体见:Linux:vmstat指令 - ShineLe - 博客园

posted @ 2024-10-31 16:35  ShineLe  阅读(23)  评论(0编辑  收藏  举报