Linux下内存buffer和cache的区别

  滥觞:网海拾贝




Free
  free 命令相干于top 供应了更简便的查察体系内存运用环境:


   $ free
  total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/ buffers/cache: 26408 228860Swap: 265000 0 265000

  Mem:示意物理内存统计
  -/ buffers/cached:示意物理内存的缓存统计
  Swap:示意硬盘上交换分区的运用环境,这里我们不去关切。

  体系的总物理内存:255268Kb(256M),但体系此后真正可用的内存b并不是第一行free 标志的 16936Kb,它仅代表未被分拨的内存。

  我们运用total1、used1、free1、used2、free2 等称呼来代表下面统计数据的各值,1、2 拜别代表第一行和第二行的数据。

  total1:示意物理内存总量。

  used1:示意总计分拨给缓存(包含buffers 与cache )运用的数目,但其中可以部门缓存并未幻想运用。

  free1:未被分拨的内存。

  shared1:共享内存,普通体系不会用到,这里也不联系。

  buffers1:体系分拨但未被运用的buffers 数目。

  cached1:体系分拨但未被运用的cache 数目。buffer 与cache 的区别见后面。

  used2:幻想运用的buffers 与cache 总量,也是幻想运用的内存总量。

  free2:未被运用的buffers 与cache 和未被分拨的内存之和,这就是体系此后幻想可用内存。

  可以摒挡整顿出如上等式:
  total1 = used1 free1total1 = used2 free2used1 = buffers1 cached1 used2free2 = buffers1 cached1 free1

  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外部,稀有的容量有256KB或512KB L2 Cache。

  Buffer:缓冲区,一个用于存储速度分歧步的装备或优先级分歧的装备之间传输数据的地域。议决缓冲区,可以使历程之间的相互称候变少,从而使赶紧率慢的装备读入数据时,速度快的装备的独霸历程不迸发连续。

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

  buffer : 作为buffer cache的内存,是块装备的读写缓冲区

  cache: 作为page cache的内存, 文件体系的cache

  要是 cache 的值很大,申明cache住的文件数很多。要是频繁会见到的文件都能被cache住,那么磁盘的读IO bi会奇怪十分小。




版权声明: 原创作品,容许转载,转载时请务必以超链接体式格局标明文章 原始情由 、作者信息和本声明。不然将追究法令责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1976184.html