0%

free命令笔记

free命令用于列出Linux中缓存、物理内存以及虚拟内存的使用情况,是Linux监控中比较常用的命令之一。

命令格式及选项

命令格式

free <选项>

命令选项

-bByte为单位列出使用情况

-kKB为单位列出使用情况

-mMB为单位列出使用情况

-gGB为单位列出使用情况

-h 以合适的单位列出使用情况

-t 显示每一列的总和

-s <num>num秒刷新一次使用情况

-c <num> 刷新num次使用情况,常与-s <num>搭配使用

-o 不显示缓冲区调节列(Ubuntu 20.04 LTS不可用)

-V 显示该程序的版本信息(Ubuntu 20.04 LTS不可用)

使用实例

free

部分参数说明

共享(shared) 一般是临时文件系统使用的内存

缓冲/缓存(buff/cache) 内核缓冲区以及页面缓存和Slab分配机制使用的内存

可用(available) 预计可被新启动的应用程序使用的内存(排除交换空间,但包括页面缓存在内,并且 不是所有的可回收的Slab内存都可真正被回收,因为可能有被占用的部分)

附注

交换空间(Swap Space)

交换空间是磁盘上的一块区域,既可以是一个分区,也可以是一个文件。当物理内存使用紧张时,Linux会把内存中不常用的数据保存到交换空间,以空出更多的物理内存供其他进程使用;当系统需要访问已经存储到交换空间中的数据时,则将交换空间中相应的数据加载到内存。适当使用交换空间不会对系统运行造成负面影响,但使用过多会导致系统的读写性能有较为明显的下降(因为频繁地对磁盘读写,而磁盘的读写速度远低于内存)。

页面缓存

把进程读取过的数据尽量留在内存中,尽量把对磁盘的访问转变为对内存的访问(当有进程需要读取该数据时,首先检查该数据是否还存在于页面缓存(即内存),如果是,则直接从内存读取数据;如果不是,再从磁盘读取数据),从而减少对磁盘的读取。

备注

Linux中内存都以“”为单位进行管理,通常大小为4KB

缓冲区

当磁盘中的数据被调入内存但未被进程使用时,其被存储在缓冲区中,等待被进程调用。

Slab分配机制

如果一个进程需要频繁地申请和释放内存,那么它可以预先申请一部分的内存以供备用,当该进程需要使用内存时,则对该部分内存进行访问读写,而不需要再由操作系统分配内存,从而间接提高该进程读写内存的速度(因为省去了操作系统为该进程分配内存的时间)。该机制可有助于解决内存碎片化的问题(大量不同的进程申请和释放内存会产生不少空闲且在物理上不连续的小内存块,从而导致内存利用率的下降)。

备注

free命令列出的信息是从/proc/meminfo文件中获取的,可使用cat命令查看该文件。

cat /proc/meminfo

本文整理自

6 个例子让初学者掌握 free 命令

linux free 命令

用户进程缓冲区和内核缓冲区

【Linux 内核】内存管理(三)slab分配器

因为涉及到比较多Linux内核方面的知识,而我又是个初(菜)学(鸡)者 (つд⊂) ,因此本文可能存在或多或少的错误 (◞‸◟) ,请大佬多多指教,非常感谢 (≧∀≦)ゞ 。