buffercachelinux
A. linux 内存 buffer 和 cache 的区别
,
buffer是缓冲,cache是缓存,也就是说cache可以永久保留数据,而buffer只能是在使用的时候起到一个提速的作用,关机或重启后悔消失
B. Linux中内存buffer和cache的区别
cache是高速缓存,用于CPU和内存之间的缓冲;
buffer是I/O缓存,用于内存和硬盘的缓冲
cache最初用于cpu cache, 主要原因是cpu 与memory, 由于cpu快,memory跟不上,且有些值使用次数多,所以放入
cache中,主要目的是,重复使用, 并且一级\二级物理cache速度快,
buffer主要用于disk与 memory,主要是保护硬盘或减少网络传输的次数(内存数据表现dataSet).当然也可以提高速度(不会立即写入硬盘或直接从硬盘中读出的数据马上显示),重复使用,最初最主要的目的是保护disk,
asp.net的cache有outputcahe与数据cache, 主要目的是重复使用,提高速度,outputcache主要存储Reader后的页,一般是多次使用同一个HTML,建议不要varybyparam,不要存多version,
数据cache,如dataSet, dataTable, 等
@page buffer="true", 使用buffer,让buffer满后再显示读出或写入,(c中文件输出也是如此,主要目的是保护硬盘), 也可以提高下次的访问速度. 在client browse端表现是: true是一次性显示,要么不显示, 中间等, false是一次显示一些,
这在网络输出也是如此表现.
对于文件访问c中默认采用的是buffer = true, 这与asp.net一样,
相当于Response.write();中当buffer满后输出,以减少网络的传输次数
<%@ OutputCache Duration="60" VaryByParam="none"%>, 是将asp.net生成的HTML缓存起来,在指定的时间内不需要重新生成html, control.ascx.也有组件缓存(htmlCach)。 dataSet也是如此。DataCache,
cache和buffer都是缓冲区, 在翻译上,cache翻译成高速缓冲区要好一点(因为主要是为下次访问加速), buffer翻译成缓冲区好点。都是缓冲的作用,可目的有点不同,主要是理解,不需要太咬文嚼字.
C. Linux内存中的 buffer 和 cache 到底是个什么东东
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.
先来说说free命令
[root@server ~]# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/cache: 58 191
Swap: 511 0 511
其中:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache 的内存数:used - buffers - cached
+buffers/cache 的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94
那么我们来看看,如果我执行复制文件,内存会发生什么变化.
[root@server ~]# cp -r /etc ~/test/
[root@server ~]# free -m
D. linux内存在buff/cache中
两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。 缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。
E. linux buffer cache 过高
你可以手动free linux的cache
- echo 1 > /proc/sys/vm/drop_caches # 仅清除页面缓存
- echo 2 > /proc/sys/vm/drop_caches # 清除目录项和inode
- echo 3 > /proc/sys/vm/drop_caches # 清除页面缓存、目录项以及inode
但是这种放时只能在执行的当时起作用,过一段时间之后又会发现内存被占满,怎么办呢?
实际上内核提供了vm.vfs_cache_pressure参数用来控制缓冲区的回收频率,我们可以调整它。
这个参数是用来控制内核回收VFS缓存的频率。修改这个值会提高或者降低回收VFS缓存的频率。值可以设置为0-200中的任意值。越大回收频率越快,可以把vm.vfs_cache_pressure赋值为200来获得最快的回收频率。这个值默认值一般为100。
F. linux中的buffer cache和page cache有何区别
Page cache是vfs文件系统层的cache,例如 对于一个ext3文件系统而言,每个文件都会有一棵radix树管理文件的缓存页,这些被管理的缓存页被称之为page cache。所以,page cache是针对文件系统而言的。例如,ext3文件系统的页缓存就是page cache。Buffer cache是针对设备的,每个设备都会有一棵radix树管理数据缓存块,这些缓存块被称之为buffer cache。通常对于ext3文件系统而言,page cache的大小为4KB,所以ext3每次操作的数据块大小都是4KB的整数倍。Buffer cache的缓存块大小通常由块设备的大小来决定,取值范围在512B~4KB之间,取块设备大小的最大公约数。
G. Linux中Buffer和Cache的区别
1、buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。
2、cache(缓存)
从CPU角度考虑,是为了提高cpu和内存之间的数据交换速度而设计的,例如平常见到的一级缓存、二级缓存、三级缓存。 cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,但是造价高,又由于在cpu内不能集成太多集成电路,所以一般cache比较小,以后intel等公司为了进一步提高速度,又增加了二级cache,甚至三级cache,它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据往往在集中的某一块,所以把这块内容放入cache后,cpu就不用在访问内存了,这就提高了访问速度。当然若cache中没有cpu所需要的内容,还是要访问内存的。