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秒执行一次。

  

      

每天一个linux命令(35)--free命令的更多相关文章

  1. 每天一个linux命令(46):vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...

  2. 每天一个linux命令目录

    出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每 ...

  3. 每天一个linux命令(44):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...

  4. 每天一个linux命令(42):kill命令

    Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...

  5. 每天一个linux命令(36):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是 一个动态显示过程,即可以通过用户按键来不断刷 ...

  6. 每天一个linux命令(34):kill命令

    Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对于一个后台进程 ...

  7. 每天一个linux命令-转载

    每天一个linux命令目录 转载自: http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html   开始详细系统的学习linux常用命令 ...

  8. [转]每天一个linux命令目录

    [转]每天一个linux命令目录 http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 开始详细系统的学习linux常用命令,坚持每 ...

  9. 每天一个linux命令(56)--crontab命令

    上一节学习了 at  命令是针对仅运行一次的任务,循环运行的例行性计划任务,Linux 系统则是由 cron(crond)这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

随机推荐

  1. ZOJ 1012 Mainframe

    题目大意:有一台主机,有m个cpu和n的内存,有l个任务,每个任务需消耗一定的cpu和内存,给出任务的开始时间和截止时间,完成任务可获得一定的金钱,同时提前完成有奖金,延后完成要扣钱.计算到某个时间所 ...

  2. post请求时2种传参方式

    @Testpublic void dopost(){ String httpurl = "https://jin.caimao.com/api/user/loginSalt"; M ...

  3. ThinkPHP 自动验证实例

    //array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),protected $_validate = array( ); ThinkPHP 自动验证定义的附加规则如下: r ...

  4. #DP# ----- OpenJudge山区建小学

    没有记性.到DP不得不写博了,三天后又忘的干干净净.DP是啥 :-) 一道久到不能再久的题了. OpenJudge  7624:山区建小学 总时间限制: 1000ms     内存限制: 65536k ...

  5. C# 定时器计划任务

    函数类: public class MyPlan { public void RunMyplan(object source, ElapsedEventArgs e) { //读取配置文件设定的日期时 ...

  6. CentOS7系统安装DNS服务

    CentOS7系统安装DNS服务 30.1.DNS是什么? DNS ( Domain Name System )是"域名系统"的英文缩写,简单来说就是一个数据库,用于存储网络中IP ...

  7. leetcode刷题总结

    题外话 今年大三,现正值寒假时间,开学就开始大三下学期的生活了. 在大三临近结束的时间,也就是复习考试的时间里,我每天都会用早上的时间来刷codewars.刚开始玩的时候,一到8kyu的题目如果稍微难 ...

  8. 使用Navicat Premium 链接本地数据库的方法

    在工作中,为了更方便的使用数据库,不免会用到Navicat Premium: 于是在重新安装电脑系统之后,原本想在其中链接一下本地数据库, 只是在链接途中要写的密码一项却不晓得应该写什么,想了很久密码 ...

  9. [html5]学习笔记一 新增的主题结构元素

    html5 新增的主体结构元素有:article,section,nav,aside,time,pubdate元素. 1. article元素代表文档.页面或应用程序中独立的.完整的.可以独自被外部引 ...

  10. WebForm 控件(二)

    控件 Calendar:日历控件 但是html代码量太大不适用 FileUpdate: 文件上传 HiddenField:隐藏域 Image: 图片  可以直接给URL 不适用可用html代码写 Ta ...