Buffer和Cache的区别

buffer-----比如观看视频的时候 转圈 将数据放在你的内存 存放这些数据的空间buffer区域 缓冲区 buffering

cache ---- 比如提高观看速度 主要是用来给用户读取 在内存中的区域cache 缓存区

通常称为:

写buffer 读cache
写缓冲 读缓存

[oldboy@web01 ~]$ free -h
             total       used       free     shared    buffers     cached
Mem:          222M       216M       6.5M        24K        23M        16M
-/+ buffers/cache:       176M        45M
Swap:         1.0G       359M       664M
total:总的内存量
used:已经被使用的内存量
free:空闲的内存空间
buffer:专门负责操作系统当中,与文件修改类操作有关的内存缓冲区(专门负责写操作的),可以被重复利用的内存区域
cached:专门负责操作系统当中,与文件读取有关的缓存区域(专门负责文件读取操作的),

对于操作系统可用内存量=free+buffer+cached
used:used=RSS+anon+buffer+cached

Linux操作系统内存划分的三大区域:

RSS:常驻内存集,主要负责程序运行需要的内存区域
Page Cache:文件系统缓存,主要负责文件有关的缓冲和缓存,buffer+cached
anon page: 匿名页,主要负责程序之间交互时使用到内存区域

内存管理机制

连续的地址位,定义成了page(页),并且进行了量化。

(1)基于固定大小page分配模式,他的一些不足的地方?
在申请内存时,需要整个内存进行遍历
会有大量的内存碎片,导致程序OOM(out of memory)

(2)SLAB Allocator内存管理子系统
1、将内存逻辑化成chain+chunk模式,内存区域会有多条链。每条chain下都“挂着”多个等同大小的chunk(2的幂)
2、在每条链的头部,都会有一个专门的chunk位图,来更快速的找到需要的空闲chunk,并且记录每个chunk最后被访问的时间戳。

(3)buddy system(伙伴系统)
1、提供了多种内存实现回收和整理内存碎片算法,最经典的就是LRU算法。
2、当内存free空间紧张时,会触发进行整理或释放,不再使用buffer和cached

SWAP:交换分区,当内存紧张的时候,会将内存区域当中的数据临时置换到SWAP中(由于buddy system内存管理机制)。

会交换哪些数据呢?buffer中未修改完成的,RSS,anon page

默认:在内存使用量达到60%

[root@db02 ~]# cat /proc/sys/vm/swappiness 
60
对于MySQL环境,要尽量避免swap使用,永久修改在sysctl.conf 
临时关闭修改:
[root@db02 ~]# echo 0 >/proc/sys/vm/swappiness 

转载于:https://blog.51cto.com/12083623/2354425

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值