位置: 编程技术 - 正文

Linux中内存buffer和cache的区别详解(linux中内存是2GB,虚拟内存应该是多少)

编辑:rootadmin

推荐整理分享Linux中内存buffer和cache的区别详解(linux中内存是2GB,虚拟内存应该是多少),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux中内存slab内存中的不可回收内存是什么含义,linux中内存是2GB,虚拟内存应该是多少,linux中内存使用率怎么看,linux中内存管理的主要概念,linux中内存划分及如何使用,linux中内存管理的作用,linux中内存划分及如何使用,linux中内存划分及如何使用,内容如对您有帮助,希望把文章链接给更多的朋友!

细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题

cache 和 buffer的区别:

Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有KB或KB L2 Cache. Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

Free中的buffer和cache:(它们都是占用内存):

buffer :作为buffer cache的内存,是块设备的读写缓冲区 cache(名词):作为page cache的内存, 文件系统的cache 如果 cache(名词) 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache(动词)住,那么磁盘的读IO 必会非常小。

先来说说free命令

其中:

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为MB,free为,buffer和cached分别为,那么我们来看看,如果我执行复制文件,内存会发生什么变化.

在我命令执行结束后,used为MB,free为4MB,buffers为8MB,cached为MB,天呐都被cached吃掉了.别紧张,这是为了提高文件读取效率的做法.为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。"那么有人说过段时间,linux会自动释放掉所用的内存,我们使用free再来试试,看看是否有释放?

MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:

[root@server test]# cat /proc/sys/vm/drop_caches0

首先,/proc/sys/vm/drop_caches的值,默认为0

[root@server test]# sync手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

Linux中内存buffer和cache的区别详解(linux中内存是2GB,虚拟内存应该是多少)

[root@server test]# echo 3 > /proc/sys/vm/drop_caches[root@server test]# cat /proc/sys/vm/drop_caches3

将/proc/sys/vm/drop_caches值设为3

再来运行free命令,发现现在的used为MB,free为MB,buffers为0MB,cached为MB.那么有效的释放了buffer和cache.有关/proc/sys/vm/drop_caches的用法在下面进行了说明/proc/sys/vm/drop_caches (since Linux 2.6.)Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to becomefree.To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; tofree dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.Because this is a non-destructive operation and dirty objectsare not freeable, the user should run sync(8) first.

buffer 与cache 的区别

  A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.  更详细的解释参考:Difference Between Buffer and Cache  对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣,请参考:What is Shared Memory?  cache 和 buffer的区别:  Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有KB或KB L2 Cache。  Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。  Free中的buffer和cache:(它们都是占用内存):  buffer : 作为buffer cache的内存,是块设备的读写缓冲区  cache: 作为page cache的内存, 文件系统的cache  如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

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="" VaryByParam="none"%>, 是将asp.net生成的HTML缓存起来,在指定的时间内不需要重新生成html, control.ascx.也有组件缓存(htmlCach)。 dataSet也是如此。DataCache,cache和buffer都是缓冲区, 在翻译上,cache翻译成高速缓冲区要好一点(因为主要是为下次访问加速), buffer翻译成缓冲区好点。都是缓冲的作用,可目的有点不同,主要是理解,不需要太咬文嚼字.

cache 和 buffer的区别

1, Buffer是缓冲区2, Cache 是高速缓存,分library cache; data dictionary cache; database buffer cacheBuffer cache 缓冲区高速缓存,用于缓存从硬盘上读取的数据,减少磁盘I/O.3, buffer有共享SQL区和PL/SQL区 , 数据库缓冲区高速缓存有独立的subcache4, pool 是共享池 用于存储最近执行的语句等5, cache:A cache is a smaller, higher-speed component that is used to speed up theaccess to commonly used data stored in a lower-speed, higher-capacitycomponent. database buffer cache:The database buffer cache is the portion of the SGA that holds copies of datablocksread from data files. All user processes concurrently (同时地,兼任地)connectedto the instance share access to the database buffer cache.buffer cache就是以block为单位读入写出的。

缓存(cache)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:

我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。修改/etc/sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~,数字越大越倾向于使用swap。默认为,可以改一下试试。-----------------------------------------两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。buffer是由各种进程分配的,被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。A buffer is something that has yet to be "written" to disk. A cache issomething that has been "read" from the disk and stored for later use. 更详细的解释参考:Difference Between Buffer and Cache  对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣,请参考:What is Shared Memory?  cache 和 buffer的区别:  Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期, Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有KB或KB L2 Cache。

  Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

  Free中的buffer和cache:(它们都是占用内存):

  buffer : 作为buffer cache的内存,是块设备的读写缓冲区  cache: 作为page cache的内存, 文件系统的cache  如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

===========================================# sync# echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_cachescache释放:To free pagecache:echo 1 > /proc/sys/vm/drop_cachesTo free dentries and inodes:echo 2 > /proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes:echo 3 > /proc/sys/vm/drop_caches说明,释放前最好sync一下,防止丢数据。因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。

Linux系统中矢量图ai格式怎么打开? Linux系统不能直接打开ai矢量图,但Linux下也有开源支持ai格式的矢量图的,这软件叫Inkscape,需要我们自己安装,下面我们就来看看详细的教程。1、首先

linux插入耳机以后没有声音该怎么办? 有一台linux系统的笔记本,在播放音乐的时候发现,扬声器外放有声音,但是接入耳机却没有声音。下面我们就来看看详细的解决办法。1、首先,点击

linux系统怎么重启网卡?linux重启网卡的三种教程 在实际工作中,经常会遇到Linux系统进行重启网卡的操作。在这里整理一下,进行多种方法的网卡重启。一、servicenetworkrestart1、首先用CRT工具连接到Linux

标签: linux中内存是2GB,虚拟内存应该是多少

本文链接地址:https://www.jiuchutong.com/biancheng/364035.html 转载请保留说明!

上一篇:Linux怎么创建副本? Linux创建副本的教程(linux如何创建ftp)

下一篇:Linux系统中矢量图ai格式怎么打开?

  • 房地产企业的样板房费用计入哪个科目
  • 个人去税务局开劳务票 税点是多少
  • 单位参加社保必须全员全额申报吗
  • 零申报企业所得税季度申报表怎么填写
  • 资产负债表不平的原因有哪些
  • 外商投资企业提取储备基金
  • 资金成本加价收入能作为收入开票吗
  • 现金流管理模式
  • 外经证的项目范围
  • 本月无凭证需要结转吗
  • 哪些费用应该计税
  • 进口材料支付的关税
  • 资本公积与实收资本和盈余公积有什么区别?
  • excel单元格内换行macbook
  • 房产税税计入什么科目
  • 股权转让的印花税是按照什么金额缴纳
  • 商品赠送的内账怎么做账
  • 工地没有手续擅自开工违法吗
  • 事业单位 会计
  • 1697511073
  • win7系统怎么进
  • Mac怎么用有线网络
  • PHP:xml_get_current_byte_index()的用法_XML解析器函数
  • linux系统的
  • 企业的党员活动是什么
  • 让劳务公司代发工资
  • 净资产和净利润一样吗
  • 发票报销的账务怎么处理
  • 工厂土地被抵押厂房怎么办
  • 贴现资金是信贷资金吗
  • 采购过程中发生材料毁损,由保险公司赔偿的部分
  • 餐饮费是业务招待费还是差旅费
  • vue前端开发常见问题
  • php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
  • vue父子组件生命周期钩子执行顺序
  • 四轮电车电机价格
  • 补缴企业所得税的计算公式
  • 持有投资期间,被投资单位编制合并报表
  • 采购的技术服务费需入库吗
  • 企业坏账准备贷方核算内容
  • 有什么是即征即退税的
  • SQL Server 2005 Management Studio Express企业管理器将英文变成简体中文版的实现方法
  • 帝国cms到底好不好
  • SQL Sever 2005 Express 安装失败解决办法
  • 农副产品普通发票可以抵扣增值税吗
  • 提供学历教育服务取得收入免征增值税的有
  • 三免三减半如何申报
  • 直接材料成本总差异怎么算
  • 什么情况下不能开税票
  • 税控盘维护费280元怎么做账
  • 发工资时多打给员工的钱
  • 盘盈的固定资产怎么处理
  • 平均增长率计算公式怎么算
  • 对于资产负债表日后的非调整事项
  • 合伙人工资薪金
  • 账薄的使用规则
  • 同一个sql语句 连接两个数据库服务器
  • linux 删除重复文件
  • 怎么关闭windows更新提示
  • windows无法完成配置若要尝试恢复配置
  • win10rs2是哪个版本
  • 怎么从win8装回win7
  • xp局域网文件共享设置
  • 怎么取消桌面右下角图标隐藏
  • 3.0vray安装教程
  • 怎么让微软账户获得所有权限
  • win7未能启动怎么办
  • win7退出家庭组
  • cocos2dx ccbreader内存泄露
  • js导入图片
  • javascript中对象一般由什么组成
  • js确认框s弹出框确定和取消
  • jquery 随机函数
  • pyqt用法
  • shell 整数赋值
  • android开源app
  • jquery和css的区别
  • 如何使用jquery实现点击按钮弹出一个对话框
  • jquery新增属性
  • 出口退税 即征即退属于政府补助吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设