
本文共 1557 字,大约阅读时间需要 5 分钟。
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
如果加上 -h 选项,输出的结果会友好很多:
有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
free -h -s 3
上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。
输出简介:
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。total:内存总大小。
used:使用了多少内存。
free:除了buff/cache剩余了多少内存。
shared:共享内存。
buff/cache:缓冲、缓存区内存数。
available:真实剩余的可用内存数。
关系:total = used + free + buff/cache
关系:available 包含 free 和 buff/cache 剩余部分,则是真实剩余内存。
buff/cache
通过man free可以看到:
buff/cache的意思是 buffer 和 cache之和。
1.buffer:
A buffer is something that has yet to be "written" to disk.翻译过来就是:buffer是尚未“写入”到磁盘的东西。buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffer将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。
2.cache:
A cache is something that has been "read" from the disk and stored for later use.翻译过来就是:cache就是从磁盘读取数据然后存起来方便以后使用。cache实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。
free 字段与available字段
在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?
free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。
交换空间(swap space)
swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
发表评论
最新留言
关于作者
