首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

Memcached内存储器管理机制

2012-08-15 
Memcached内存管理机制Slab 分配机制?Memcached 不是把所有大小的数据都放在一起的,而是预先分配一系列的

Memcached内存管理机制

Slab 分配机制

?

Memcached 不是把所有大小的数据都放在一起的,而是预先分配一系列的 slab,每个

slab 负责一定范围内的数据存储。

Memcached内存储器管理机制

初始时,Memcached 为每一个 slab 分配 一个Page(1M) 的内存, slab内再把page切分

成一个一个 Chunk, 组成 Chunk数组,每个Chunk 的大小等于该 slab 的数据存储范围

的最大值。

?

?

缓存记录的原理

memcached 根据记录的大小选择最适合的 slab, 从该 slab 中找一个空闲 chunk, 将数据缓存其中。

Memcached内存储器管理机制

?

?

Slab 分配机制的缺点

由于 slab 内的 Chunk 大小是固定的,所以无法有效利用内存。例如将 100 字节的记录缓存到

128 字节的 chunk, 就有 28 字节的内存浪费。

Memcached内存储器管理机制

?

Slab的内存分配

memcached 启动时通过 -m 参数指定最大使用内存, 不过这个最大内存不会一次性分配。

而是随着使用不断分配的。缓存一条记录,首先找到合适的 slab, 然后从 slab 中找空闲

chunk,如果没有空闲 chunk,则一次性分配一个 page(1M) 的内存给该 slab,slab

根据 chunk 的大小将 page 进行切分,组成 chunk 数组。如下图,Slab 1 和 Slab 2 都分配

了 1 Page的内存,切分成 chunk 数组。

?

Memcached内存储器管理机制

?

总结一下,memcached 内存分配的策略是,slab 按需分配,没有空闲 chunk 就分配,每次分配 1个 page。

另外,memcached 分配出去的内存不会回收,不会释放,slab 的空闲 chunk 不会借给其他 slab 使用。

?

?

热点排行