Linux - buff和cache的区别

news2024/10/2 20:36:51

free -h命令可以查看内存的使用情况

[root@zabbix-server ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        432M        894M         10M        492M        1.2G
Swap:          2.0G          0B        2.0G

为什么free 比 available要小?

free = total - used - shared - buff/cache

available=total -used

为什么需要buff/cache?

计算机三大核心组件:cpu,内存,硬盘

cpu的吞吐量每秒可以达到1000G以上

        每秒可以写入1000G的数据,同时可以往外吐1000G的数据

内存的吞吐率比cpu要低很多,虽然比cpu吞吐率低,但是也有每秒几千MB/s

硬盘的吞吐率:例如sata接口的硬盘吞吐率最大600MB/s ,

硬盘上存储了大量的程序,一个程序要执行,首先要把数据从硬盘读到内存,然后从内存读到CPU,cpu进行逻辑运算,然后将运算结果返回给内存,内存再写入硬盘,CPU是不能直接从硬盘读取数据的,原因之一就是CPU和硬盘之间的吞吐率差距太大了,CPU直接从硬盘读取数据效率太低了,此外,CPU在进行运算的时候是有会产生很多临时数据的,如果CPU先把数据写到内存再写到硬盘,内存中是有回收机制的,会自动清理掉临时数据,如果直接写入硬盘,那么临时数据也会写入硬盘保存起来,要清理只能手动清理,种种原因下,CPU是不会直接写数据到硬盘的。

 虽然CPU不直接将数据写入硬盘,但是CPU,内存,硬盘之间的吞吐率还是十分不对等,于是buff和cache就发挥了作用

内存的吞吐率由几千MB/s,而硬盘(sata)的吞吐率600M/s,内存往硬盘里面写数据的时候,处在内存和硬盘之间的buff缓冲区就起到了作用,内存往外吐数据的速度是很快的,硬盘往里面写的数据是很慢的,如果直接写的话肯定是会堵塞的,假设内存往硬盘写数据的速度是6000MB/s而硬盘往里面写数据的速度是600MB/s,那么数据肯定是不能及时写入的,如果一直就这么等待写入,数据是肯定有丢失的风险的,buff缓冲区就起到了一个水池的作用,内存先将数据写入缓冲区,然后再慢慢的写入硬盘,当然buff缓冲区的容量也是有极限的,如果一个程序产生了大量的数据将缓冲区也填满了的话,那就只能等待慢慢写入了。所以buff缓冲区就在内存和硬盘之间的一个不同吞吐率起到了一个平衡作用。

cache缓存区与buff缓冲区的方向相反, 内存写入数据的速度是很快的,但是硬盘往外面吐数据的数据相对来说还是比较慢的,如果内存一直等着硬盘将程序的数据读出来,那么程序就会一直处于等待状态,程序就会处于很卡的状态,影响程序的执行效率,cache缓存就是为了解决这个问题的,将经常需要从硬盘中读出的数据提前将它放到cache缓存区里面,然后内存需要数据的时候直接从cache缓存区获取数据,这样就能降低内存载入数据的时间,从而提高程序的执行效率。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音小程序实践四:实现小程序分享

有时候我们要把一个小程序分享给别人,去看套餐、买东西之类的,是一个很常见的功能,但是在接入抖音小程序的时候,初始化右上角三个点并没有分享的入口,那看来不是要申请,就是有别的开发的口子了。下面我们一…

《SQL基础》17. InnoDB引擎

InnoDB引擎InnoDB引擎逻辑存储结构架构内存结构磁盘结构后台线程事务原理事务基础redo logundo logMVCC基本概念隐式字段undo log版本链readView原理分析InnoDB引擎 逻辑存储结构 InnoDB的逻辑存储结构如下图所示: 表空间 表空间是InnoDB存储引擎逻辑结构的最高层…

React18 setState是同步还是异步?

相信大家对于react的setState肯定是不陌生了, 这是一个用于更新状态的函数. 但是在之前有一道非常经典的面试题就是关于setState是同步还是异步的问题, 具体可以参考我之前写的一篇文章: 一篇文章彻底理解setState是同步还是异步!. 对于react 18之前的版本, 上文说的…

2019年MathorCup数学建模A题数据驱动的城市轨道交通网络优化策略解题全过程文档及程序

2019年第九届MathorCup高校数学建模挑战赛 A题 数据驱动的城市轨道交通网络优化策略 原题再现: 截至 2018 年 12 月 31 日,中国内地累计共有 35 座城市建成并投运城市轨道交通,里程共计 5766.6 公里。进入“十三五”以来,三年累…

Spring Bean实例创建装载过程分析-spring源码学习(2)

随着Spring框架的应用越来越广泛,对Spring Bean的实例创建装载过程的了解就显得尤为重要。本文将围绕这一主题,为大家详细介绍Spring Bean实例创建装载的整个过程,并透彻解析其细节。 时序图 一、Spring Bean实例的创建过程 Spring Bean实例…

Web前端学习:章三 -- JavaScript预热(二)

六五:作用域与function function:函数,不是数学上的函数,与写代码有关 JS中的函数:运用它,起个名字,然后对函数进行调用,即可将函数中的内容执行一遍 1、function 最基本的作用域…

CNCF x Alibaba云原生技术公开课 第五章 应用编排与管理

1、元数据的组成 用来识别资源的具有标识型的标签:Labels key valueselector(筛选/组合资源):多个相等条件,逻辑与的关系; 集合型,in notin 用来描述资源的非标识型的注解:Annotations 扩展资源的spec/status可以包含特殊字符可以结构化也可…

企业管理经典书籍推荐

几乎每一位成功的商业人士都有着良好的阅读习惯。并且他们阅读涉猎的范围也大多与企业管理和领导力有关。而关于企业管理经典书籍,我推荐你看以下这两本。一本是《经理人参阅:企业管理实务》,另一本是《经理人参阅:领导力提升》。…

无刷高速风筒方案介绍--【PCBA方案】

疫情三年过去,春节后,一个新的开始,大家满怀希望畅谈今年好气象。 三年来一波一波的封城、隔离、核酸,经济压抑到了无以复加的地步,也导致了诸多社会问题的出现。消费力被磨平,人们小心翼翼的生活。 常跟…

【第六课】Arcgis中基本操作

一、前言 前面课程已经对Arcgis主页面,相关板块进行介绍,相信大家也有了一定的了解,当然这部分内容其实不需要大家死记硬背,有一个初步印象即可,这一节课程可能更需要掌握,之后会慢慢有实例给大家展现&…

数据结构刷题(二十):17电话号码的字母组合、39组合总和、40组合总和II

一、电话号码的字母组合题目链接思路:回溯三部曲。确定回溯函数参数:题目中给的 digits,还要有一个参数就是int型的index(记录遍历第几个数字,就是用来遍历digits的,同时也代表了递归的深度)&am…

【牛客刷题专栏】0x10:JZ8 二叉树的下一个结点(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录前言问题…

@Component实现原理

直接从关键代码开始: 直接找到org.springframework.context.support.AbstractApplicationContext#refresh方法,找到invokeBeanFactoryPostProcessors(beanFactory)方法,最终找org.springframework.context.support.PostProcessorRegistratio…

各种各样的锁

1.悲观锁和乐观锁 一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个数据,所以每次操作前都会上锁,这样其他线程想操作这个数据拿不到锁只能阻塞了。 synchronized 和 ReentrantLock是典型的悲观锁 共享…

Linux学习记录——십사 进程控制(1)

文章目录1、进程创建1、fork函数2、进程终止1、情况分类2、如何理解进程终止3、进程终止的方式3、进程等待1、进程创建 1、fork函数 fork函数从已存在进程中创建一个新进程&#xff0c;新进程为子进程&#xff0c;原进程为父进程。 #include <unistd.h> pid_t fork(vo…

论文阅读:Syntax-Aware Network for Handwritten Mathematical Expression Recognition

论文阅读&#xff1a;Syntax-Aware Network for Handwritten Mathematical Expression Recognition1 主要观点&#xff1a; 1、提出将语法信息纳入编码器-解码器网络的方法。使用一组语法规则&#xff0c;用于将每个表达式的LaTeX标记序列转换为解析树&#xff1b;用深度神经…

【vue create】一.使用vue creat搭建项目

场景&#xff1a;使用vue create脚手架快速搭建vue的项目 前提&#xff1a;需要安装node.js和cnpm以及yarn 并且cnpm需要设置为淘宝镜像&#xff0c;cnpm和yarn安装教程网上很多可以自行搜索 1.使用dos命令安装vue-cli脚手架 //这个是从镜像源下载 cnpm install -g vue/cli 查…

Google三大论文之GFS

Google三大论文之GFS Google GFS&#xff08;Google File System&#xff09; 文件系统&#xff0c;一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS 虽然运行在廉价的普遍硬件设备上&#xff0c;但是它依然了提供灾难冗余的能力&#xff0c;为大量客户机提供了…

接口自动化测试——多套被测环境的切换

文章目录一、意义二、实现目标三、实现方案1、使用环境管理文件2、使用不同的文件管理不同的环境&#xff08;建议使用&#xff09;3、在接口用例中指定path&#xff0c;不指定url4、环境切换a、通过环境变量进行切换b、通过命令行参数进行切换四、代码实现1、通过环境变量进行…

GPT格式的磁盘扩容

GPT格式的系统盘已经满了&#xff0c;现在需要扩充系统盘 1.怎么查看是不是GPT格式&#xff1a;fdisk -l 2.查看磁盘挂载分区情况 lsblk 2.使用parted对分区进行操作 parted /dev/sda 3.开始分区 mkpart 4.格式化sda4分区后&#xff0c;会发现分区4的文件系统已经显示为xfs…