Linux:free指令
学习自:
Linux free命令使用教程(free指令)(查看内存、系统内存、内存占用、内存使用情况)_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区以腾出空间给新的程序页使用。