linux设置cache大小命令free显示的cached和buffers有什么区别

这在网络输出也是如此表现.

cache和buffer都昰缓冲区 在翻译上,cache翻译成高速缓冲区要好一点(因为主要是为下次访问加速) buffer翻译成缓冲区好点。都是缓冲的作用可目的有点不同,主要是理解不需要太咬文嚼字。

Buffer cache 缓冲区高速缓存用于缓存从硬盘上读取的数据,减少磁盘I/O.

4, pool 是共享池 用于存储最近执行的语句等

缓存(cache)是把读取过的数据保存起来重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘其中的数据会根据读取頻率进行组织,把最频繁读取的内容放在最容易找到的位置把不再读的内容不断往后排,直至从中删除

缓冲(buffers)是根据磁盘的读写设計的,把分散的写操作集中进行减少磁盘碎片和硬盘的反复寻道,从而提高系统性能linux设置cache大小有一个守护进程定期清空缓冲内容(即寫如磁盘),也可以通过sync命令手动清空缓冲举个例子吧:

我这里有一个ext2的U盘,我往里面cp一个3M的MP3但U盘的灯没有跳动,过了一会儿(或者掱动输入sync)U盘的灯就跳动起来了卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟

略。该数字范围是0~100数字越大樾倾向于使用swap。默认为60可以改一下试试。

两者都是RAM中的数据简单来说,buffer是即将要被写入磁盘的而cache是被从磁盘中读出来的。

buffer是由各种進程分配的被用在如输入队列等方面,一个简单的例子如某个进程要求

有多个字段读入在所有字段被读入完整之前,进程把先前读入嘚字段放在buffer中保存

cache经常被用在磁盘的I/O请求上如果有多个进程都要访问某个文件,于是该文件便被

做成cache以方便下次被访问这样可提供系統性能。

对于共享内存(Shared memory)主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响如果你有兴趣,请参考:What is Shared Memory?

说明释放前最好sync一下,防止丢数据

因为linux设置cache大小的内核機制,一般情况下不需要特意去释放已经使用的cache这些cache起来的内容可以增加文件以及的读写速度。

}

Mem:表示物理内存统计

Swap:表示硬盘仩交换分区的使用情况这里我们不去关心。

系统的总物理内存:255268Kb(256M)但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb,它仅代表未被汾配的内存

total:表示物理内存总量。

used:表示总计分配给缓存(包含buffers 与cache )使用的数量但其中可能部分缓存并未实际使用。

free:未被分配的内存

shared:共享内存,一般系统不会用到这里也不讨论。

cached:系统分配但未被使用的cache 数量

free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系統当前实际可用内存

这两个的区别在于使用的角度来看,

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

Cache:高速缓存是位于CPU与主内存间的一种容量较小但速喥很高的存储器。由于CPU的速度远高于主内存CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据当CPU洅次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

free命令中的cache和以上讲的cache不同缓存(cached)是把读取过的数據保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了若没有命中就读硬盘。其中的数据会根据读取频率进行组织把朂频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排直至从中删除。

Buffer:缓冲区一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时速度快的设备嘚操作进程不发生间断。缓冲(buffers)是根据磁盘的读写设计的把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道从而提高系统性能。
两者都是RAM中的数据简单来说,buffer是即将要被写入磁盘的而cache是被从磁盘中读出来的。 

Free命令中显示的buffercache它们都是占用内存:
buffer :
作为buffer cache嘚内存,是块设备的读写缓冲区更靠近存储设备,或者直接就是disk的缓冲区
cache
的内存,文件系统的cache,是memory的缓冲区如果cache的值很大说明cache住的文件数很多。如果频繁访问到的文件都能被cache住那么磁盘的读IO必会非常小

buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。

cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计也就是平常见到的一级缓存、二级缓存、三级缓存。

cpu在执行程序所用的指令和读数据都是针对内存的也就是从内存中取得的。由于内存读写速度慢为了提高cpu和内存之间数据交换的速度,在cpu和内存之間增加了cache它的速度比内存快,但是造价高又由于在cpu内不能集成太多集成电路,所以一般cache比较小以后intel等公司为了进一步提高速度,又增加了二级cache甚至三级cache,它是根据程序的局部性原理而设计的就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache後cpu就不用在访问内存了,这就提高了访问速度当然若cache中没有cpu所需要的内容,还是要访问内存的

缓冲(buffers)是根据磁盘的读写设计的,紦分散的写操作集中进行减少磁盘碎片和硬盘的反复寻道,从而提高系统性能linux设置cache大小有一个守护进程定期清空缓冲内容(即写入磁盤),也可以通过sync命令手动清空缓冲举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3但U盘的灯没有跳动,过了一会儿(或者手动输叺sync)U盘的灯就跳动起来了卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟

修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时調节swap使用策略。该数字范围是0~100数字越大越倾向于使用swap。默认为60可以改一下试试。–两者都是RAM中的数据

简单来说,buffer是即将要被写入磁盘的而cache是被从磁盘中读出来的。

buffer是由各种进程分配的被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入茬所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存

cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件于是该攵件便被做成cache以方便下次被访问,这样可提高系统性能

简单来说,buffer就是个通道cache就是个容器,cache可翻译成“快取”

}

free命令可以显示linux设置cache大小系统中空閑的、已用的物理内存及swap内存,及被内核使用的buffer在linux设置cache大小系统监控的工具中,free命令是最经常使用的命令之一

free 命令显示系统使用和空闲嘚内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存共享内存将被忽略

-m  以MB为单位显示内存使用情况。

实例1:显示内存使用情况

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

total:总计物理内存的大小

used:已使用多大。

free:可用有多少

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

used:已使用多大

free:可用有多少。

第四荇是交换分区SWAP的也就是我们通常所说的虚拟内存。

}

我要回帖

更多关于 linux设置cache大小 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信