简单命令使用
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
扩展
-
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
-
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
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