[root@hadoop001 ~]# free -m
total used free shared buffers cached
Mem: 3830 3142 687 0 180 1559
-/+ buffers/cache: 1403 2427
Swap: 0 0 0
[root@hadoop001 ~]#
//我们是以2核4G为例,4G*1024=4096M,除去系统占用,还剩3830M;used表示已经使用了多少内存,正常使用total-used=free.
total表示系统总物理内存3830m
used表示总计分配给缓存(包含buffers和cached),但其中部分缓存未实际使用
free表示未分配的内存
shared表示共享内存
buffers表示系统分配但未被使用的buffers数量
cached表示系统分配但未被使用的cache的数量
在free命令中显示的buffer和cache,他们都是占用内存
buffer:作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区
cached:作为page cache的内存,文件系统的cache,是memory的缓冲区。
如果cache的值很大,说明cache住的文件数很多,如果频繁访问的文件的文件都能被cache住,那么磁盘的读IO势必会非常小。
free: 表示未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可能内存(所以一般linux机器看可用内存就看此值)
实际可用内存大小:(-/+ buffers/cached).free=mem.free+mem.buffers+mem.cached
手工清除缓存
# sync
# echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
cache释放:
a.To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
b.To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
c.To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
说明,释放前最好sync一下,防止丢数据。
具体详解可参考大佬博客:http://blog.itpub.net/30089851/viewspace-2131678/