memcached内存分配

Posted 蚂蚁力量

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcached内存分配相关的知识,希望对你有一定的参考价值。

1. page(页)为内存分配的最小单位

Memcached 的内存分配以page为单位,默认情况下一个page是1M,可以通过-I参数在启动时指定。如果需要申请内存时,memcached会划分出一个新的 page并分配给需要的slab区域page一旦被分配在重启前不会被回收或者重新分配

技术分享

2. Chunk(块)才是存放缓存数据的单位。

Chunk 是一系列固定的内存空间,这个大小就是管理它的slab的最大存放大小。例如:slab 1的所有chunk都是104byte,而slab 4的所有chunk都是280byte。chunk是memcached实际存放缓存数据的地方,因为chunk的大小固定为slab能够存放的最大值, 所以所有分配给当前slab的数据都可以被chunk存下。如果时间的数据大小小于chunk的大小,空余的空间将会被闲置,这个是为了防止内存碎片而设 计的。例如下图,chunk size是224byte,而存储的数据只有200byte,剩下的24byte将被闲置。

技术分享

以上是关于memcached内存分配的主要内容,如果未能解决你的问题,请参考以下文章

简单理解memcached的内存分配

memcached学习——memcached的内存分配机制Slab Allocation内存使用机制LRU常用监控记录

memcached源码分析-----slab内存分配器

memcached注意事项

memcached的内存分配器是如何工作的?为何要使用slabs?

Memcache 内存分配策略和性能(使用)状态检查