当前位置:首页 > PHP教程 > PHP总结归纳

简单理解Memcached的SlabAllocation

简单理解memcached的slab allocation包含如下内容: slab allocation growth factor slab allocation的缺点 slab allocation slab allocation的原理——将分配的内存分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(chunk的集合),每个chunk集合被

简单理解memcached的slab allocation包含如下内容:

  • slab allocation
  • growth factor
  • slab allocation的缺点
  • slab allocation

    slab allocation的原理——将分配的内存分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(chunk的集合),每个chunk集合被称为slab。

    memcached的内存分配以page为单位,page默认值为1m,可以在启动时通过-i参数来指定。

    slab是由多个page组成的,page按照指定大小切割成多个chunk。其结构图如下:

    growth factor

    memcached在启动时通过-f选项可以指定 growth factor因子。该值控制slab之间的差异,chunk大小的差异。默认值为1.25。

    通过memcached-tool查看指定memcached实例的不同slab状态,可以看到各item所占大小(chunk大小)差距为1.25

    slab allocation的缺点

    slab allocation可以有效的解决内存碎片问题,但是在如下情况下,会导致内存的浪费:

  • 每个slab的chunk大小是固定的,当item的占用空间实际小于chunk大小时,会出现内存浪费
  • 每个slab的大小是固定的(因为page是固定的),当slab不能被他所拥有的chunk整除时,会出现内存浪费
  • 按照growth factor因子生成指定大小的slab,而某slab id根本未被使用时,会出现内存浪费
  • 参考资料

    memcached全面剖析–2.理解memcached的内存存储
    memcache内存分配策略
    memcached二三事儿


    【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!