Memcache 存储及slab page chunk
基本概念:Slab和chunk
memcache内存分配有几个概念:
page:一个固定大小的内存,1M,每次申请都是申请一个page,也就是1M内存大小
chunk:是一个分配给用户使用的最小单元,在一个page下,也就是1M内存大小下,会平均分成相同大小的chunk,
不同的page,内部的chunk不一定相同大小,但是同一个page内的chunk一定一样。
item:用户存储的数据,包含key和value,都存储在chunk中。
slab:同一个page内,相同chunk统称为一个slab。
slab class:这是将slab给分类了,不同大小的slab分为不同的slab class,
slab class按小到大分为多个种类,每一个slab class会比上一个slab class分配的chunk大小大上一些,
默认是按1.25的比例增长。
用户每次申请内存都是申请1M,也即一个page,然后根据数据大小,进行chunk大小设定,
接着使用其中的一个chunk,余下的chunk等以后有相同范围内大小的数据存储使用。
如果该slab class的一个chunk不够使用,会去判断使用哪个范围大小内的slab class,然后去申请内存使用。
当然了,如果一个slab class内的所有chunk都使用完毕,然后又有相同范围大小的需要存储,
则会继续申请同一个slab class的page,然后去存储数据。