每天一个linux命令(35)--free命令

  free命令可以显示Linux系统中空闲的、易用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free 命令是最经常使用的命令之一。

  1.命令格式:

    free [参数]

  2.命令功能:

    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存,共享内存将被忽略

  3.命令参数:

    -b  以Byte为单位显示内存使用情况。

    -k  以KB为单位显示内存使用情况。

    -m  以MB为单位显示内存使用情况。

    -g  以GB为单位显示内存使用情况。

    -o  不显示缓冲区调节列。

    -s<间隔秒数>  持续观察内存使用状况。

    -t  显示内存总和列。

    -V  显示版本信息。

  4.使用实例:

  实例1:显示内存使用情况

  命令:free

     free -g

     free  -m

  说明: total:总计物理内存的大小。

      used:已使用多大。

      free:可用有多少。

      shared:多个进程共享的内存总额。

      buffers/cached:磁盘缓存的大小。

      第二行(mem),这是从OS的角度来看,对于OS而言,buffers/cached  都是属于被使用的,所以OS可用的内存是不包括这些的。内核(OS)+application(X, ORACLE)使用的+buffers/cached=内存大小。

      第三行(-/+  buffers/cached),这个是从应用程序角度来看的,对于应用程序而言,buffers/cached 是等于可用的,因为buffers/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffers/cached会很快的被回收。

    所以从应用程序的角度来说,可用内存=系统 free  memory+buffers+cached.

      第四行是交换内存swap。---为什么会交换,按什么方式交换?

    当内存少于额定值的时候,就会开始进行交换,如何看额定值?

    命令: cat   /proc/meminfo

    交换将通过三个途径来减少系统中使用的物理页面的个数:

    1.减少缓冲与页面cache 的大小

    2.将系统V类型的内存页面交换出去

    3.换出或者丢弃页面,(application 占用的内存页,也就是物理内存不足)。

    事实上,少量地使用swap 是不会影响到系统性能的。

    那 buffers 和 cached 都是缓存,两者有什么区别呢?

    为了提高磁盘存取效率,Linux 做了一些精心的设计,除了对dentry 进行缓存(用于VFS,加速文件路径名到inode 的转换),还采取了两种主要cache 方式:

    buffer  cache 和 page cache 。前者针对磁盘块的读写,后者针对文件inode 的读写。这cache有效缩短了 I/O 系统调用(比如 read ,write,getdents)的时间。

    磁盘的操作由逻辑级(文件系统)和物理级(磁盘块),这两种cache 就是分别缓存逻辑和物理级数据的。

  page cache 实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到 page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当 page  cache的数据需要刷新时,page cache 中的数据交给 buffer cache ,因为buffer cache 就是缓存磁盘块的。但是这种处理在 2.6版本的内核之后就变得很简单了,没有真正意义撒花姑娘的cache 操作。

  buffer  cache 是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache 中,例如,文件系统的元数据都会缓存到buffer cache中。

  简单来说,page cache 用来缓存文件数据,buffer cache 用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到 page cache ,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

  所以我们看Linux ,只要不用swap 的交换空间,就不用担心自己的内存太少,如果常常swap 用很多,可能你就要考虑加物理内存了。这也是Linux 看内存是否够用的标准。

  如果是应用服务器的话,一般只看第二行,+buffers/cache ,即对应用程序来说free 的内存太少了,也是该考虑优化程序或加内存了。

  实例2:以总和的形式显示内存的使用信息

  命令:  free -t

  实例3:周期性的查询内存使用信息

  命令:  free -s  10  没10秒执行一次。

  

      

上一篇:2019前端面试系列——CSS面试题


下一篇:2019前端面试系列——Vue面试题