新手看招 详细分析Linux操作系统的内存

来源:互联网 发布:如何运行php tp框架 编辑:程序博客网 时间:2024/05/18 01:41
前言:在Linux上不像在Windows上看内存那样方便,而且还有Swap这个新的概念,所以知道如何来看Linux内存还是有一定意义的.




在Linux下查看内存我们一般用command free


[root@nonamelinux ~]# free


total used free shared buffers cached


Mem: 386024 377116 8908 0 21280 155468


-/+ buffers/cache: 200368 185656


Swap: 393552 0 393552


下面是对这些数值的解释:


第二行(mem):


total:总计物理内存的大小。


used:已使用多大。


free:可用有多少。


Shared:多个进程共享的内存总额。


Buffers/cached:磁盘缓存的大小。


第三行(-/+ buffers/cached):


used:已使用多大。


free:可用有多少。


第四行就不多解释了。


区别:


第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。


这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.


第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。


所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.


如上例:


185656=8908+21280+155468


接下来解释什么时候内存会被交换,以及按什么方交换。


当可用内存少于额定值的时候,就会开会进行交换.


如何看额定值(RHEL4.0):


#cat /proc/meminfo


交换将通过三个途径来减少系统中使用的物理页面的个数: 


1.减少缓冲与页面cache的大小,


2.将系统V类型的内存页面交换出去, 


3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。


事实上,少量地使用swap是不是影响到系统性能的。


下面是buffers与cached的区别。


buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.


cached是用来给文件做缓冲。


那就是说:buffers是用来存储,目录里面有什么内容,权限等等。


而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。


实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。


#free


#man X


#free


#man X


#free


你可以先后比较一下free后显示buffers的大小。


另一个实验:


#free


#ls /dev


#free


你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别




本篇文章来源于源码库(www.aspku.com),转载请注明出处 原文链接:http://www.aspku.com/fuwuqi/3711.html