Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5639915
  • 博文数量: 291
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7924
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 14:28
个人简介

阿里巴巴是个快乐的青年

文章分类

全部博文(291)

文章存档

2018年(21)

2017年(4)

2016年(5)

2015年(17)

2014年(68)

2013年(174)

2012年(2)

分类: 架构设计与优化

2013-07-17 17:18:44

        free主要用于显示总的空闲内存、使用的物理和交换内存。
        free的常用参数是指定内存大小单位,包括-b、-k、-m,默认是-k,一般我都会用-m,比如:
        #free -m
        
        free一共输出4行:
        第1行用于指定每列的含义。
        第4行显示交换区信息,分别是交换的总共(total)、已用(used)、空闲(free)的交换区大小,以上图为例:
                总共8191M,已用11M,空闲8180M,从中不难看出:8191=11+8180,即total=used+free

        第2行表示从OS的角度来看,总共(total)、已用(used)、空闲(free)、共享(shared)、(buffers)、(cached)的内存大小,以上图为例:
                总共3823M,已用3577M,空闲246M,从中不难看出:3823=3577+246,即total=used+free。
                共享(shared)表示被几个进程共享的内存大小,不过现在已经废弃,其值总是0。
                buffers和cached二者都由OS管理,用于提供IO性能,其中,buffers表示被OS buffer住的内存,用于存放要输出到disk的数据,而cached表示被OS cache住的内存,用于存放从disk上读出的数据,举例说明之:
                1、释放掉被系统cached住的数据:
                #echo 3>/proc/sys/vm/drop_caches
                2、读一个大文件,比如2G,并记录读文件花费的时间
                3、关闭文件
                4、重新读取该大文件,并记录读文件花费的时间
                比较2次读取文件花费的时间,你会发现后者比前者花费的时间少得多,知道作用了吧。                
        第3行表示从应用程序的角度来看,已用(used)、空闲(free)的内存大小,以上图为例:
                已用1875M,空闲1948M,这两个值表示应用程序认为系统已用和空闲内存。
                结合第2行和第3行的几列值中不难看出:
                已用内存:1875=3577-36-1666,即[3][2]
=[2][2]-[2][5]-[2][6]
                空闲内存:1948=246+36+1666,即[3][3]=[2][3]+[2][5]+[2][6]。

                是不是有点头晕,仔细想想就能明白其中道理
        free命令的所有输出值都是从/proc/meminfo中读出的,具体实现可以参看procps-xxx.tar包中meminfo()函数源码。

    
                     
阅读(2380) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

scq2099yt2013-07-17 17:18:56

文明上网,理性发言...