zoukankan      html  css  js  c++  java
  • Memcached内存管理机制

    内存碎片

    1. 内部碎片是由于采用固定大小的内存分区,当一个进程不能完全使用分给它的固定内存区域时就产生了内部碎片,通常内部碎片难以完全避免; 

    2. 外部碎片是由于某些未分配的连续内存区域太小,以至于不能满足任意进程的内存分配请求,从而不能被进程利用的内存区域。

    Memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存

    Slab Allocator的基本原理是按照预先规定的大小,将分配的内存以page(分配给Slab的内存空间,默认是1MB。可以通过-I参数在启动时指定)为单位,分割成各种尺寸的chunk(用于缓存记录的内存空间), 并把尺寸相同的块分成Slab Class(相同大小的chunk组成的组)

    memcached根据收到的数据的大小, 选择最适合数据大小的chunk组。
    memcached 中保存着 slab class 内空闲 chunk 的列表, 根据该列表选择空的 chunk, 然后将数据缓存于其中。

    *如果有 100byte 的数据,但122byte大小的仓库中的chunk满了,此时会把122byte仓库的旧数据剔除掉,然后存储[Memcachedd的删除机制]。

    固定大小chunk的内存浪费

    由于分配的是特定长度的内存,因此无法有效利用分配的内存。
    例如: 将100byte数据存入128byte的chunk,则浪费了28byte。

    因为不能自定义chunk的大小,所以无法彻底解决chunk空间浪费问题。
    问题缓解: 如果预先知道客户端发送的数据的公用的大小,或者仅缓存大小相同的数据的情况下。只要使用适合数据大小的组的列表,就可以减少浪费。

    增长因子

    通过缓存中item长度进行统计,通过参数调整slab class大小的增长速度,即增长因子(growth factor),从而制定合理的chunk大小。

    启动时指定growth factor因子,就可以在某种程度上控制slab之间的差异,默认值为1.25
    Memcached –f 2 –vv
    (查看growth factor为2时slab中chunk size的差异)
    Memcached引入时,最好重新计算一下数据的预期平均长度,调整growth factor,以获得最恰当的设置。

    [root@localhost ~]# /usr/local/memcached/bin/memcached -unobody -p11211 -m64 -f2 -vvv slab class 1: chunk size 80 perslab 13107 slab class 2: chunk size 160 perslab 6553 slab class 3: chunk size 320 perslab 3276 slab class 4: chunk size 640 perslab 1638 slab class 5: chunk size 1280 perslab 819 slab class 6: chunk size 2560 perslab 409 slab class 7: chunk size 5120 perslab 204 slab class 8: chunk size 10240 perslab 102 slab class 9: chunk size 20480 perslab 51 slab class 10: chunk size 40960 perslab 25 slab class 11: chunk size 81920 perslab 12 slab class 12: chunk size 163840 perslab 6 slab class 13: chunk size 524288 perslab 2

  • 相关阅读:
    如何修改dmesg log buffer size
    phpmyadmin的初始账号密码是多少
    DirectFB 之 FillRectangle 绘制矩形
    DFB系列 之 Clear清空surface缓存
    DFB系列 之 Flip()更新buffe
    DFB系列 之 Bilp叠加
    DFB系列 之 SetCooperativeLevel协作级别
    DirectFB 之 实例图像不断右移
    DirectFB 之 环境配置
    DirectFB 之 简介
  • 原文地址:https://www.cnblogs.com/yhq-qhh/p/10158547.html
Copyright © 2011-2022 走看看