cache 和 buffer

简介:

顺序:cpu---cache---mem(内存)---buffer---hard drive(硬盘)

cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题

cached是高速缓存,buffer是缓冲。

buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的

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

例子:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7869 7651 218 1 191 5081
-/+ buffers/cache: 2378 5490
Swap: 478 139 339

计算:

这里使用1、2 分别代表第一行和第二行的数据

total1:表示物理 内存总量
used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
free1:未被分配的内存
shared1:共享内存,一般系统不会用到,这里也不讨论
buffers1: 系统分配但未被使用的buffers 数量
cached1:系统分配但未被使用的cache 数量
used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量
free2:未被 使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存

可以整理出如下等式

total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1

具体计算

7869 = 7651 + 218
7869 = 2378 + 5490 #7868基本相等,因为有shared)
7651 = 191 + 5081 + 2378 #7650 基本相等,因为有shared)
5490 = 191 + 5081 + 218

参考:https://www.cnblogs.com/chenpingzhao/p/5161844.html

感谢!




      本文转自flayber  51CTO博客,原文链接:http://blog.51cto.com/406647516/2069703,如需转载请自行联系原作者




相关文章
|
4月前
|
数据库 关系型数据库 MySQL
innodb_buffer_pool_size
【8月更文挑战第13天】
42 1
|
7月前
|
存储 算法 关系型数据库
Buffer Pool
Buffer Pool
65 1
|
7月前
|
缓存 算法 安全
深入解析InnoDB的Buffer Pool
深入解析InnoDB的Buffer Pool
76 2
Cache 和 Buffer 有什么区别?
Cache 和 Buffer 有什么区别?
132 0
|
缓存 Linux 存储