free命令

简单命令使用

写在最前面,markdown已经熟悉了,但一直没用过表格操作,刚巧整理了一篇日志,试试markdown的表格使用
free       不加参数,默认以kb为单位显示
free -m    以M为单位 
free -g    以G为单位

语法讲解

语  法: free [-bkmotV][-s <间隔秒数>]
补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参  数:
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。
 
常用操作:
free //以KB为单位,显式系统内存使用情况
free -ml -s 1  //每秒以M为单位,显式系统内存详细使用情况。
free -c 4 -s 2  //为KB为单位,每2秒显式系统内存使用情况,一共显示4次

参数讲解

||total|used|free|shared|buffers|cached
---|---|---|---|---|---|---|---
Mem:|1572988|1509260|63728|0|62800|277888
-/+ buffers/cache:||1168572|404416|||
Swap:|2096472|16628|2079844|||
分割线

||total|used|free|shared|buffers|cached
---|---|---|---|---|---|---|---
Mem:|1572988|1509260|63728|0|62800|277888
|||所有使用了的内存,包括可回收|实际剩余内存,不包括可回收|||
-/+ buffers/cache:||1168572|404416|||
|||真正使用的,不加可回收的内存|所有可用内存,包括可回收|||
Swap:|2096472|16628|2079844|||
分割线

Memory that is You'd call it Linux calls it
used by applications Used Used
used, but can be made available Free (or Available) Used (and Available)
not used for anything Free Free
Mem:表示物理内存统计
total:表示物理内存总量(total = used + free)
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。即剩余量
cached:系统分配但未被使用的cache 数量。

    Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
    windows,无论你的真实物理内存有多少,他都要拿硬盘交换文件来读
    这也就是windows为什么常常提示虚拟空间不足的原因.
    
swap:只要不用swap的交换 空间,就不用担心自己的内存太少
    
    当可用内存少于额定值的时候,就会开始进行交换.
    如何看额定值(RHEL4.0):#cat /proc/meminfo

扩展

  1. buffers与cached的区别
A buffer is something that has yet to be “written” to disk.
A cache is something that has been “read” from the disk and stored for later use.
对于应用程序来说,buffers/cached 是等于可用的,
因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached.

buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,
先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
  1. buffers/cached好处
Linux 内存管理做了很多精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),
还采取了两种主要Cache方式:Buffer Cache和Page Cache,目的就是为了提升磁盘IO的性能。
从低速的块设备上读取数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,
它可以从内存中直接读取,从而绕开低速的块设备,从而提高系统的整体性能。

而Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,
等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,
这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。

因此,可以看出,buffers/cached真是百益而无一害,
真正的坏处可能让用户产生一种错觉——Linux耗内存!
  1. 实验证明
下面通过实验来验证上面的结论:
我们先后读入一个大文件,比较两次读入的实践:
1.首先生成一个1G的大文件
#dd if=/dev/zero of=bigfile bs=1M count=1000

2.清空缓存
#echo 3 | tee /proc/sys/vm/drop_caches
3.读入这个文件,测试消耗的时间
#time cat bigfile > /dev/null
4.再次读入该文件,测试消耗的时间
posted @ 2017-10-18 13:57  陈浩然201  阅读(520)  评论(0编辑  收藏  举报