page、slab、chunk、item

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,然后去存储数据。
上一篇:C#夯实基础之接口(《CLR via C#》读书笔记)


下一篇:链串的定义