一,计算机硬件组成

计算机硬件组成: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起来的内容可以增加文件以及的读写速度。

如上图所示,当新写入一个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的使用情况。

cat /proc/meminfo

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

3.free

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

4.top

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

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 等来查看

论坛参考: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!

linux buff cache区别,buffer和cache的区别相关推荐

  1. Linux内存中的 buffer 和 cache

    Linux内存中的 buffer 和 cache 到底是个什么东东? Linux 中的 free 命令,会输出: total 总量 used  已使用 free 空闲 shared 共享内存 buff ...

  2. Linux操作系统中内存buffer和cache的区别

    我们一开始,先从Free命令说起. free 命令相对于top 提供了更简洁的查看系统内存使用情况: $ free                      total  used   free  s ...

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

    原文链接:http://os.51cto.com/art/200709/56603.htm 我们一开始,先从Free命令说起. Free free 命令相对于top 提供了更简洁的查看系统内存使用情况 ...

  4. linux清理swap内容,Linux如何清理swap.buffer及cache等缓存

    swap清理: 代码如下: swapoff -a && swapon -a 注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大 cache清理: 代码如下: sync ...

  5. Linux内存中的 buffer 和 cache 到底是个什么东东?

    Linux 中的 free 命令,会输出: total 总量 used  已使用 free 空闲 shared 共享内存 buffers cached 前面四项都比较好理解,一看我也就知道啥意思了.但 ...

  6. Linux中Buffer和Cache的区别

    今天我们再来讨论下linux系统中关于Buffer和Cache的区别,buffer与cache操作的对象就不一样. 1.buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速 ...

  7. Buffer和Cache的区别

    Buffer和Cache的区别 缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内 ...

  8. 缓存与缓冲的区别 Difference Between Cache and Buffer

    2019独角兽企业重金招聘Python工程师标准>>> Cache vs Buffer Both cache and buffer are temporary storage are ...

  9. Linux中内存buffer和cache的区别

    Linux中内存buffer和cache的区别 分类: LINUX 原文地址:Linux中内存buffer和cache的区别 作者:platinaluo 细心的朋友会注意到,当你在linux下频繁存取 ...

最新文章

  1. 【RocketMQ工作原理】消息的生产过程
  2. 近期PHP很火爆,弄了个Discuz耍耍
  3. 阶段-关系系统-stage1范围界定阶段---学习记录
  4. 【Android】ActivityManager结构图
  5. C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
  6. Linux对包管理阐述
  7. linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
  8. bash shell基础之二条件判断
  9. MATLAB工具箱下载地址
  10. 群晖NAS删除文件不释放空间的原因和方法
  11. apk(安卓手机应用软件)解包汉化过程简单陈述 [转贴]
  12. matlab给hfss建模,HFSS-MATLAB联合建模
  13. QGroundControl源码编译安装
  14. 斐波那契数列的三种解法
  15. Python知识点之Python进阶
  16. GO语言中文字符串编码转换
  17. java 提示语法错误_java常见语法错误
  18. 几种常用的显示器分辨率
  19. Centos7云服务器部署SpringBoot项目(手动配置环境篇)
  20. 应用层协议的设计与实现

热门文章

  1. hybris mysql_hybris使用mysql/sqlserver配置
  2. Clion IDE 个性修改(往事随风,世事难料,已不会在更新了-20200627)
  3. 可用性评价方法的分类总结(一)
  4. VO和PO 有什么区别啊?
  5. OSG可绘制体Drawable
  6. 2022-2028年中国互联网+医药行业市场运行状况及投资潜力研究报告
  7. 网易真题-游历魔法王国
  8. 利用Python的turtle库绘制四叶草
  9. Adobe Camera Raw(RAW处理工具)for win​
  10. Spring注解驱动开发(一)