free命令(buffer and cache)

一、free命令

[[email protected]_202_12 /]# free -m

total       used       free     shared    buffers     cached

Mem:          3072       2459        612          0        207       1803

-/+ buffers/cache:        447       2624

Swap:         1913          0       1913

第2行:

total 内存总数: 3072

used 已经使用的内存数: 2459

free 空闲的内存数: 612

shared 当前已经废弃不用,总是0

buffers: Buffer Cache内存数: 13220

cached: Page Cache内存数: 2720160

关系:total = used + free

第3行:

-/+ buffers/cache的意思:

-buffers/cache 的内存数: 447 (等于第1行的 used - buffers - cached)

+buffers/cache 的内存数: 2624 (等于第1行的 free + buffers + cached)

注:此处的内存数在用上面式子计算后,在大小上有一点点出入(还不知道是什么原因)。

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第4行单独针对交换分区。

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:

Buffer Cache和Page Cache

前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(如read,write,getdents)的时间。

第2行(mem)的used/free与第3行(-/+ buffers/cache) used/free的区别:

这两个的区别在于使用的角度.

第2行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是612MB,已用内存是2059MB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第3行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是可用的,因为buffer/cached是为了提高文件读取的性能而设,当应用程序要用到内存的时候,buffer/cached会很快地被回收。所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.

如上例:

2624= 612+207+1803

二、buffers与cached的区别:

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

cached用来给文件做缓冲。

即:buffers是用来存储目录里面有什么内容,权限等等,而cached用来记忆我们打开的文件.

如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man kill ,你就可以明显的感觉到第二次的开打的速度快很多。

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

#free

#man kill

#free

#man kill

#free

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

另一个实验:

#free

#ls /dev

#free

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

因为Linux会将暂时不使用的内存作为文件和数据缓存,以提高系统性能,当应用程序需要这些内存时,系统会自动释放(不像windows那样,即使你有很多空闲内存,他也要访问一下磁盘中的pagefiles)

内存交换条件及方式:

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

如何看额定值(RHEL4.0)

#cat /proc/meminfo

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

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

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

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

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

来自为知笔记(Wiz)

时间: 2024-11-10 16:47:34

free命令(buffer and cache)的相关文章

【转】free命令、buffer与cache的区别

freefree 命令相对于top 提供了更简洁的查看系统内存使用情况: # free total used free shared buffers cached Mem: 255988 231704 24284 0 6432 139292 -/+ buffers/cache: 85980 170008 Swap: 746980 0 746980 Mem:表示物理内存统计 -/+ buffers/cached:表示物理内存的缓存统计 Swap:表示硬盘上交换分区的使用情况,这里我们不去关心.系统

Linux操作系统中内存buffer和cache的区别--从free命令说起(转)

原文链接:http://os.51cto.com/art/200709/56603.htm 我们一开始,先从Free命令说起. Free free 命令相对于top 提供了更简洁的查看系统内存使用情况: $ free total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000 Mem:表示物理内存统计

free命令(buffer与cache区别/linux查看空闲内存)

freefree 命令相对于top 提供了更简洁的查看系统内存使用情况: # free total used free shared buffers cached Mem: 255988 231704 24284 0 6432 139292 -/+ buffers/cache: 85980 170008 Swap: 746980 0 746980 Mem:表示物理内存统计 -/+ buffers/cached:表示物理内存的缓存统计 Swap:表示硬盘上交换分区的使用情况,这里我们不去关心.系统

linux free命令中buffer与cache的区别

linux free命令中buffer与cache的区别 ~$ free total             used           free     shared   buffers     cached Mem:       1025204     981636      43568          0      38244     387808 -/+ buffers/cache:       555584      469620 Swap:      1931256    162

Linux内存学习之buffer和cache的区别详解

本文和大家分享的主要是linux 中 内存buffer 和 cache 的区别相关内容,一起来看看吧,希望对大家 学习linux有所帮助. 细心的朋友会注意到, 当你在 linux 下频繁存取文件后 , 物理内存会很快被用光 , 当程序结束后 , 内存不会被正常释放 , 而是一直作为 caching. 这个问题 , 貌似有不少人在问 , 不过都没有看到有什么很好解决的办法 . 那么我来谈谈这个问题 . 先来说说free 命令 [[email protected] ~]# free -m tota

Buffer与Cache

Buffer(缓冲) Buffer(缓冲)是为了提高内存和硬盘(或者其他I/O设备)之间的数据交换的速度而设计的.根据磁盘的读写设计的.把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,提高性能. 主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以*减少响应次数*,通常其中的数据在操作完成之后,buffer不会被继续使用:(比如从网上下电影,你不能下一点点数据就写一下硬盘,而是积攒一定量的数据以后一整块一起写,不然硬盘都要被你玩坏了)缓和冲击嘛.

buffer 和cache的区别

Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器. 由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率. Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域.通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不

Linux中Buffer和Cache的区别

1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而  Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能. Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元):Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制

buffer和cache怎么让你们解释的那么难理解?

对于一个即将踏上“系统运维”或者更加高大尚的工作“系统调优”,如果这不跟这两哥们搞好关系了,坑的不只有内存,更坑的是你拿着调优的钱却干着随时被调的活.因为作为一个系统运维人员来说监控和优化IO性能这是最有可能你生存下来的技能,为啥呢?因为你不仅给老板省了钱,还提高了机器的工作效率..虽然钱都进了老板兜里,但你渐渐地植入了他深深地脑海里,总有一天你比钱重要!好了闲话少扯,接下来说说这两个哥们到底是什么? 之前我自己也对到底buffer和cache是什么,有什么不同,什么时候用buffer,什么时候

buffer与cache的理解

buffer与cache的理解 A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use. 也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据.这二者是为了提高IO性能的,并由OS管理. 释