free命令

释放双眼,带上耳机,听听看~!

简单命令使用


1
2
3
4
1free       不加参数,默认以kb为单位显示
2free -m    以M为单位
3free -g    以G为单位
4

语法讲解


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

参数讲解

Mem:
1572988
1509260
63728
0
62800
277888
-/+ buffers/cache:

1168572
404416

Swap:
2096472
16628
2079844


Mem:
1572988
1509260
63728
0
62800
277888

所有使用了的内存,包括可回收
实际剩余内存,不包括可回收

-/+ buffers/cache:

1168572
404416

真正使用的,不加可回收的内存
所有可用内存,包括可回收

Swap:
2096472
16628
2079844


used by applications
Used
Used
used, but can be made available
Free (or Available)
Used (and Available)
not used for anything
Free
Free


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1Mem:表示物理内存统计
2total:表示物理内存总量(total = used + free)
3used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
4free:未被分配的内存。
5shared:共享内存,一般系统不会用到,这里也不讨论。
6buffers:系统分配但未被使用的buffers 数量。即剩余量
7cached:系统分配但未被使用的cache 数量。
8
9    Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
10    windows,无论你的真实物理内存有多少,他都要拿硬盘交换文件来读
11    这也就是windows为什么常常提示虚拟空间不足的原因.
12    
13swap:只要不用swap的交换 空间,就不用担心自己的内存太少
14    
15    当可用内存少于额定值的时候,就会开始进行交换.
16    如何看额定值(RHEL4.0):#cat /proc/meminfo
17

扩展

  1. buffers与cached的区别


1
2
3
4
5
6
7
8
9
10
11
12
1A buffer is something that has yet to be “written” to disk.
2A cache is something that has been “read” from the disk and stored for later use.
3对于应用程序来说,buffers/cached 是等于可用的,
4因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
5所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached.
6
7buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
8cached是用来给文件做缓冲。
9那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
10而cached直接用来记忆我们打开的文件,
11先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
12
  1. buffers/cached好处


1
2
3
4
5
6
7
8
9
10
11
12
1Linux 内存管理做了很多精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),
2还采取了两种主要Cache方式:Buffer Cache和Page Cache,目的就是为了提升磁盘IO的性能。
3从低速的块设备上读取数据会暂时保存在内存中,即使数据在当时已经不再需要了,但在应用程序下一次访问该数据时,
4它可以从内存中直接读取,从而绕开低速的块设备,从而提高系统的整体性能。
5
6而Linux会充分利用这些空闲的内存,设计思想是内存空闲还不如拿来多缓存一些数据,
7等下次程序再次访问这些数据速度就快了,而如果程序要使用内存而系统中内存又不足时,
8这时不是使用交换分区,而是快速回收部分缓存,将它们留给用户程序使用。
9
10因此,可以看出,buffers/cached真是百益而无一害,
11真正的坏处可能让用户产生一种错觉——Linux耗内存!
12
  1. 实验证明


1
2
3
4
5
6
7
8
9
10
11
1下面通过实验来验证上面的结论:
2我们先后读入一个大文件,比较两次读入的实践:
31.首先生成一个1G的大文件
4#dd if=/dev/zero of=bigfile bs=1M count=1000
5
62.清空缓存
7#echo 3 | tee /proc/sys/vm/drop_caches
83.读入这个文件,测试消耗的时间
9#time cat bigfile > /dev/null
104.再次读入该文件,测试消耗的时间
11

给TA打赏
共{{data.count}}人
人已打赏
安全技术安全运维

Windows服务器如何发现被黑

2018-5-20 12:24:31

安全技术

详解Node.js API系列C/C++ Addons(1) API文档

2021-12-21 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索