linux buff cache区别,buffer和cache的区别

一,计算机硬件组成

计算机硬件组成:CPU,存储器,输入输出设备(I/O),其他(主板,电源等)

CPU:运算器,控制器

存储器:内部存储器(ROM/RAM),外部存储器(磁盘等)

I/O:输入设备(鼠标/键盘),输出设备(显示器/打印机)

从性能分析:

-CPU缓存>内存>磁盘>数据库

从性能来看内存是介于CPU和磁盘,在实际中内存是CPU和磁盘的桥梁。buffer和cache是内存的不同的体现,接下来简单分析对buffer和cache的理解。

二,buffer和cache

1.buffer:

A buffer is something that has yet to be "written" to disk.翻译过来就是:buffer就是写入到磁盘。buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffer将数据缓冲下来,解决速度慢和快的交接问题;速度快的需要通过缓冲区将数据一点一点传给速度慢的区域。例如:从内存中将数据往硬盘中写入,并不是直接写入,而是缓冲到一定大小之后刷入硬盘中。

2.cache:

A cache is something that has been "read" from the disk and stored for later use.翻译过来就是:cache就是从磁盘读取数据然后存起来方便以后使用。cache实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。例如:将硬盘中的数据读取出来放在内存的缓存区中,这样以后再次访问同一个资源,速度会快很多。

3.buffer和cache的特点

共性:

都属于内存,数据都是临时的,一旦关机数据都会丢失。

差异:(先理解前两点,后两点有兴趣可以了解)

A.buffer是要写入数据;cache是已读取数据。

B.buffer数据丢失会影响数据完整性,源数据不受影响;cache数据丢失不会影响数据完整性,但会影响性能。

C.一般来说cache越大,性能越好,超过一定程度,导致命中率太低之后才会越大性能越低。buffer来说,空间越大性能影响不大,够用就行。cache过小,或者没有cache,不影响程序逻辑(高并发cache过小或者丢失导致系统忙死除外)。buffer过小有时候会影响程序逻辑,如导致网络丢包。

D.cache可以做到应用透明,编写应用的可以不用管是否有cache,可以在应用做好之后再上cache。当然开发者显式使用cache也行。buffer需要编写应用的人设计,是程序的一部分。

三.关于buffer和cache测试

buffer前者针对磁盘块的读写,cache针对文件inode的读写

sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

cache释放:

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

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

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

596d3b78dc3a81d00b5a0515db43bbec.png

19622be25171e0fe9f02a5330566a924.png

如上图所示,当新写入一个test.txt时,buff/cache这条有83M增加到186,

执行sync和echo 3 > /proc/sys/vm/drop_caches后,减小到71M,主要是echo 3 > /proc/sys/vm/drop_caches起到的作用,说明cache释放了100多M。

四.linux系统如何查看内存

查看的内存的方式有很多种,萝卜青菜各有所爱,所有我介绍几种,可以根据个人喜欢选择。

从图形化到命令的顺序简单介绍。

1.gnome-system-monitor

显示CPU历史,内存和交换历史,以及网络历史。能实时查看内存的使用情况,但是没能看到buffer和cache的使用情况。

22a7eba90f71661432cf9b2d4a91fd28.png

cat /proc/meminfo

查看动态更新的虚拟文件。内容比较全面,可以查看到许多关于内存的信息。

814438808e387c11aec742fe8c3afa28.png

3.free

快速查看内存的方法,也是经常使用的命令。-h 更人性化的显示内存的单位 -m 以M的形式显示

e082f0be25b51ec195e8d156c5b9df0b.png

4.top

top命令提供了实时的运行中的程序的资源使用统计。可以根据内存的使用和大小来进行排序。

c26385a3e4320d0552ea0ba2b17cc979.png

5.sar

Linux统计/监控工具sar详细介绍:要判断一个系统瓶颈问题,有时需要几个 sar 命令选项结合起来使用,例如:怀疑CPU存在瓶颈,可用 sar -u 和 sar -q deng 等来查看 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

25bf59d78d6e2e6c2cb069c36b267e2d.png

论坛参考:https://www.zhihu.com/question/26190832

英文参考:http://www.differencebetween.net/technology/hardware-technology/difference-between-cache-and-buffer/

共勉:I hear and I forget , I see and I remember, I do and I understand!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值