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起来的内容可以增加文件以及的读写速度。
如上图所示,当新写入一个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的区别相关推荐
- Linux内存中的 buffer 和 cache
Linux内存中的 buffer 和 cache 到底是个什么东东? Linux 中的 free 命令,会输出: total 总量 used 已使用 free 空闲 shared 共享内存 buff ...
- Linux操作系统中内存buffer和cache的区别
我们一开始,先从Free命令说起. free 命令相对于top 提供了更简洁的查看系统内存使用情况: $ free total used free s ...
- Linux操作系统中内存buffer和cache的区别--从free命令说起(转)
原文链接:http://os.51cto.com/art/200709/56603.htm 我们一开始,先从Free命令说起. Free free 命令相对于top 提供了更简洁的查看系统内存使用情况 ...
- linux清理swap内容,Linux如何清理swap.buffer及cache等缓存
swap清理: 代码如下: swapoff -a && swapon -a 注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大 cache清理: 代码如下: sync ...
- Linux内存中的 buffer 和 cache 到底是个什么东东?
Linux 中的 free 命令,会输出: total 总量 used 已使用 free 空闲 shared 共享内存 buffers cached 前面四项都比较好理解,一看我也就知道啥意思了.但 ...
- Linux中Buffer和Cache的区别
今天我们再来讨论下linux系统中关于Buffer和Cache的区别,buffer与cache操作的对象就不一样. 1.buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速 ...
- Buffer和Cache的区别
Buffer和Cache的区别 缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内 ...
- 缓存与缓冲的区别 Difference Between Cache and Buffer
2019独角兽企业重金招聘Python工程师标准>>> Cache vs Buffer Both cache and buffer are temporary storage are ...
- Linux中内存buffer和cache的区别
Linux中内存buffer和cache的区别 分类: LINUX 原文地址:Linux中内存buffer和cache的区别 作者:platinaluo 细心的朋友会注意到,当你在linux下频繁存取 ...
最新文章
- 【RocketMQ工作原理】消息的生产过程
- 近期PHP很火爆,弄了个Discuz耍耍
- 阶段-关系系统-stage1范围界定阶段---学习记录
- 【Android】ActivityManager结构图
- C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
- Linux对包管理阐述
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- bash shell基础之二条件判断
- MATLAB工具箱下载地址
- 群晖NAS删除文件不释放空间的原因和方法
- apk(安卓手机应用软件)解包汉化过程简单陈述 [转贴]
- matlab给hfss建模,HFSS-MATLAB联合建模
- QGroundControl源码编译安装
- 斐波那契数列的三种解法
- Python知识点之Python进阶
- GO语言中文字符串编码转换
- java 提示语法错误_java常见语法错误
- 几种常用的显示器分辨率
- Centos7云服务器部署SpringBoot项目(手动配置环境篇)
- 应用层协议的设计与实现
热门文章
- hybris mysql_hybris使用mysql/sqlserver配置
- Clion IDE 个性修改(往事随风,世事难料,已不会在更新了-20200627)
- 可用性评价方法的分类总结(一)
- VO和PO 有什么区别啊?
- OSG可绘制体Drawable
- 2022-2028年中国互联网+医药行业市场运行状况及投资潜力研究报告
- 网易真题-游历魔法王国
- 利用Python的turtle库绘制四叶草
- Adobe Camera Raw(RAW处理工具)for win​
- Spring注解驱动开发(一)