Linux系统如何查看使用内存情况
[root@R2 ~]# free
Mem:
-/+ buffers/cache:
Swap:
我们研究一下上面的free命令输出参数值及含义
Mem:
-/+ buffers/cached : 表示物理内存的缓存统计
Swap: 表示硬盘上交换分区的使用情况,这个我们不去关心。
total1: 总计物理内存的大小
used1: 已使用多大内存(包含buffers 与cache),但其中可能部分缓存并未实际使用
free1: 可用内存多少
shared1: 多个进程共享的内存总额
buffers1/cached1: 磁盘缓存的大小,这些是系统分配但未被使用的buffers 和 cache
used2: 实际使用的buffers 与cache的总量,也是实际使用的内存总量。
free2: 未被使用的buffers 与cache和未被分配的内存之和,这就是系统当前实际可用内存。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached
179620 = 72928 + 19736 + 86956
我们可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 +used2
free2 = buffers1 + cached1 + free1
Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。
接下来我们解释什么时候内存会被交换,以及按什么方式交换。当可用内存少于额定值的时候,就会开始进行交换。
如何看额定值:
[root@R2 ~]# cat /proc/meminfo
MemTotal:
MemFree:
Buffers:
Cached:
SwapCached:
Active:
Inactive:
HighTotal:
HighFree:
LowTotal:
LowFree:
SwapTotal:
SwapFree:
Dirty:
Writeback:
AnonPages:
Mapped:
Slab:
PageTables:
NFS_Unstable:
Bounce:
CommitLimit:
Committed_AS:
VmallocTotal:
VmallocUsed:
VmallocChunk:
用free -m 查看的结果:
[root@R2 ~]# free -m
Mem:
-/+ buffers/cache:
Swap:
查看/proc/kcore文件的大小(内存镜像):
[root@R2 ~]# ll -h /proc/kcore
-r-------- 1 root root 219M Apr
备注:
占用内存的测量
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法, /proc 目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址
/proc/pid/statm 进程所占用的内存
我们通过free命令查看机器空闲内存时,有时候会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
所以 空闲内存=free+buffers+chached=total-used
转自:http://blog.sina.com.cn/s/blog_6238358c0100r3wg.html