Linux 使用 free 命令查看内存使用状况

一、free 命令的选项

使用 free 命令查看服务器内存使用状况。node

free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]

(1)-b,-k,-m,-g   表示输出显示的单位为 bytes, KB, MB, or GB,不添加选项的话默认以 KB 为单位显示linux

(2)-h  以人类可读的方式显示,即后边会自动带上单位windows

(3)-l  显示详细的低内存和高内存统计信息(增长了 Low 和High 这两行显示)缓存

(4)-o   使用旧的格式显示(不显示 -/+buffers/cache 这一行)服务器

(5)-t  增长显示 Total 行,Total = Mem + Swap性能

(6)-s delay  每 delay 秒重复打印一次,delay 为具体的秒数测试

(7)-c count   重复打印 count 次后退出,count 为具体的次数。须要配合 -s delay 使用阿里云

(8)-V  显示版本信息设计

二、free命令显示结果

如下是咱们测试环境的参数:code

第一行Mem,表示物理内存统计:

(1)total  物理内存总量,total = used + free

(2)used  总计分配给缓存(包含 buffers 与 cache)使用的数量,但其中可能部分缓存并未实际使用

(3)free  未被分配的内存

(4)shared  共享内存,通常系统不会用到,老是0

(5)buffers  系统分配但未被使用的 buffers 数量

(6)cached  系统分配但未被使用的 cache 数量

第二行-/+ buffers/cache:

(1)used  实际使用的内存,等于第一行的 used - buffers - cached

(2)free  实际可用内存,等于第一行的 free + buffers + cached

第三行Swap表示交换区的使用状况,也就是咱们一般所说的虚拟内存。

(1)total  总量

(2)used  使用

(3)free  空闲

三、linux的缓存设计

(1)Linux内存管理作了不少精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采起了两种主要Cache方式:Buffer Cache 和 Page Cache,目的就是为了提高磁盘IO的性能。

即 buffer (Buffer Cache) 用于存放要输出到磁盘的数据,而 cache(Page Cache) 是从磁盘读出存放到内存中等待之后使用的数据。它们的引入都是为了提高IO的性能。

(2)从低速的块设备(硬盘)上读取数据会暂时保存在内存中,即便数据在当时已经再也不须要了,但在应用程序下一次访问该数据时,它能够从内存中直接读取,从而绕开低速的块设备(硬盘),从而提升系统的总体性能。

Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,等下次程序再次访问这些数据速度就快了。

(3)若是程序要使用内存而系统中内存又不足时,这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。

所以,能够看出,buffers/cached真是百益而无一害,真正的坏处可能让用户产生一种错觉——Linux耗内存!其实否则,Linux并无吃掉你的内存,只要还未使用到交换分区,你的内存所剩无几时,你应该感到高兴,由于Linux缓存了大量的数据,也许下一次你就访问的是这些缓存数据。

windows系统内存是软件用多少给多少。而linux是你有多少物理内存,我所有用,正在运行的软件占用的活动内存以外,其他空闲内存基本都被用来预加载了一些其余系统或者应用数据。这样你打开软件的时候才会很快。

内存闲着就是浪费,不如多放点数据,指不定下次须要访问的数据就可以直接从内存得到而不用访问很慢的硬盘。必定程度上说,linux和mac流畅度比windows好,这个占很重要一部分缘由。

附录:

下面这个是阿里云服务器T5突发型实例的内存:显示略有不一样

相关文章
相关标签/搜索