青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

memcache內存池的設計原理

memcache中管理內存的數據結構如下:

typedef struct {
    unsigned 
int size;      /* sizes of items */
    unsigned 
int perslab;   /* how many items per slab */

    void 
**slots;           /* list of item ptrs */
    unsigned 
int sl_total;  /* size of previous array */
    unsigned 
int sl_curr;   /* first free slot */

    void 
*end_page_ptr;         /* pointer to next free item at end of page, or 0 */
    unsigned 
int end_page_free; /* number of items remaining at end of last alloced page */

    unsigned 
int slabs;     /* how many slabs were allocated for this class */

    void 
**slab_list;       /* array of slab pointers */
    unsigned 
int list_size; /* size of prev array */

    unsigned 
int killing;  /* index+1 of dying slab, or zero if none */
} slabclass_t;

程序中有一個全局的數組
static slabclass_t slabclass[POWER_LARGEST + 1]用于保存slab,預分配內存池時調用的是void slabs_init(const size_t limit, const double factor) 函數,其中limit是內存池的最大容量,factor是分配時的增長因子.
比方說,加入factor是2,第一個在slabclass數組中的slab的每個item大小是128字節,那么下一個slab每個item的大小就是128*2,再下一個就是128*2*2(注意,為了簡化問題的說明,上面沒有考慮地址對齊的因素).

在預分配內存池時,最多給每個slab保存item的容量是1M內存,這個數值由#define POWER_BLOCK 1048576決定.
因此,slab中的幾個元素在預分配內存時是這么定的:
size有一個起始值,這個值以后的增長由factor決定,增長的過程前面已經闡述過了;
perslab保存的是一個slab存放的item數量,因此perslab = POWER_BLOCK / slabclass[i].size;
如果預先分配一段內存供使用的話,也就是沒有定義DONT_PREALLOC_SLABS宏,那么就調用slabs_preallocate進行預分配內存.
其中,end_page_ptr指向這個預分配好的指針,end_page_free表示的是目前空閑可用item的數量,在預分配時,這個值與perslab相同.
在這個內存池模型中,每個page實際上是一個數組,數組中每個元素的大小就是這個slab中item的大小.

另外,slots保存的是釋放出來的item指針,sl_total表示總的數量,sl_curr表示的是目前可用的已經釋放出來的item數量.

每一次要分配內存的時候,首先根據需要分配的內存大小在slabclass數組中查找索引最小的一個大于所要求內存的slab,如果slots不為空,那么就從這里返回內存,否則去查找end_page_ptr,如果也沒有,那么就只能返回NULL了.
每一次釋放內存的時候,同樣的找到應該返回內存的slab元素,改寫前面提到的slot指針和sl_curr數.

有點倉促,以后再完善~~


posted on 2008-01-21 23:34 那誰 閱讀(7455) 評論(1)  編輯 收藏 引用 所屬分類: C\C++算法與數據結構服務器設計

評論

# re: memcache內存池的設計原理  回復  更多評論   

我覺得有個圖的話會描述得更清楚
2008-03-20 14:20 | ycc
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲激情国产| 亚洲卡通欧美制服中文| 午夜欧美大尺度福利影院在线看| 老鸭窝毛片一区二区三区| 久久久五月天| 欧美成年人网站| 欧美激情第1页| 亚洲国产日韩美| 亚洲精品国产精品国自产观看浪潮 | 欧美精品一二三| 欧美激情1区2区3区| 欧美成人性生活| 欧美精品一区二区三区蜜臀| 欧美日本一区二区三区| 国产精品久久久久影院色老大| 国产伦精品一区二区| 国内精品久久久久影院薰衣草| 狠狠色综合网| 一区二区三区欧美亚洲| 久久欧美肥婆一二区| 亚洲国产精品成人一区二区| 一区二区三区精密机械公司| 久久国产精品久久w女人spa| 欧美国产一区视频在线观看| 国产女主播视频一区二区| 亚洲国产高清高潮精品美女| 亚洲自啪免费| 农夫在线精品视频免费观看| 日韩网站在线观看| 久久精品国产99精品国产亚洲性色| 欧美福利在线| 国产在线国偷精品产拍免费yy| 91久久久亚洲精品| 久久精品视频一| 99热免费精品| 免费成人av资源网| 国产精品影片在线观看| 亚洲精品欧洲| 麻豆精品在线视频| 亚洲伊人一本大道中文字幕| 久久综合一区二区三区| 欧美日韩国产首页在线观看| 亚洲国产精品成人久久综合一区| 亚洲伦理在线免费看| 久久精品国产免费观看| 日韩视频专区| 美女亚洲精品| 国产综合激情| 亚洲中字黄色| 99re66热这里只有精品4| 久久久亚洲影院你懂的| 国产伦精品一区二区三区照片91 | 久久九九全国免费精品观看| 国产精品久在线观看| 日韩午夜免费| 欧美www在线| 久久久久欧美精品| 国产一区二区三区网站| 亚洲欧美乱综合| 亚洲裸体在线观看| 欧美国产第二页| 亚洲国产精品嫩草影院| 免费视频亚洲| 久久久久久网站| 1000部国产精品成人观看| 久久久精品久久久久| 欧美影院一区| 海角社区69精品视频| 久久免费少妇高潮久久精品99| 午夜精品久久久久久久久久久| 欧美日本精品| 亚洲最新色图| 日韩一区二区免费看| 欧美午夜精品久久久久久超碰| 一本色道婷婷久久欧美| 99国产精品久久| 国产精品成人一区二区艾草| 午夜精品久久久久久久白皮肤| 亚洲精品美女| 国产精品v欧美精品v日本精品动漫| 亚洲欧美日韩另类| 久久国产精品网站| 亚洲国产婷婷| 一区二区动漫| 国产在线一区二区三区四区| 欧美国产免费| 欧美无乱码久久久免费午夜一区| 欧美一区二区视频网站| 久久精品在线视频| 99国内精品| 欧美在线不卡| 亚洲三级视频在线观看| 亚洲一区二区三区精品视频| 在线成人黄色| 国户精品久久久久久久久久久不卡| 欧美xx69| 国产精品久久一区主播| 免费观看成人网| 欧美日韩一级视频| 老司机aⅴ在线精品导航| 国产一二三精品| 亚洲精品国产日韩| 国产日产精品一区二区三区四区的观看方式 | 日韩手机在线导航| 国产亚洲精品综合一区91| 欧美承认网站| 国产女人精品视频| 亚洲区一区二| 国内欧美视频一区二区| 一区二区三区久久久| 亚洲黄色免费| 欧美一区二区三区精品电影| 在线亚洲免费视频| 久久在线视频在线| 久久国产欧美精品| 国产精品久久久久久福利一牛影视| 欧美激情二区三区| 黄色小说综合网站| 亚洲综合清纯丝袜自拍| 中文在线资源观看视频网站免费不卡| 久久久成人网| 久久久久久伊人| 国产精品揄拍500视频| 亚洲久久一区| 亚洲精品日韩在线观看| 久久久久久亚洲精品杨幂换脸 | 免费在线观看日韩欧美| 国产精品日日摸夜夜添夜夜av| 亚洲激情电影中文字幕| 影视先锋久久| 久久免费精品视频| 久久一区免费| 国产亚洲欧美日韩一区二区| 亚洲欧美日本伦理| 午夜精品久久久久久久99水蜜桃| 欧美精品一区在线发布| 亚洲福利视频网| 亚洲人成亚洲人成在线观看图片| 久久天堂成人| 欧美大片第1页| 亚洲国产精品va在线看黑人动漫| 久久久久成人精品免费播放动漫| 久久久精品午夜少妇| 国产日韩在线视频| 欧美呦呦网站| 美女啪啪无遮挡免费久久网站| 国产一区二区视频在线观看| 性色av香蕉一区二区| 久久久亚洲人| 亚洲国产成人精品久久| 美女国内精品自产拍在线播放| 亚洲二区精品| 一区二区三区精品| 国产精品欧美日韩久久| 欧美一区=区| 欧美成人一品| 日韩天堂在线观看| 欧美色图麻豆| 性久久久久久久久| 国产视频亚洲| 久久免费黄色| 欧美一区二区三区在线观看视频 | 久久一二三国产| 亚洲精品一区二区三区不| 亚洲欧美中文日韩在线| 国产亚洲在线观看| 美女视频黄免费的久久| 亚洲人成人99网站| 欧美在线观看视频一区二区三区 | 亚洲电影成人| 亚洲欧美999| 国产日韩视频一区二区三区| 久久综合色天天久久综合图片| 亚洲精品一区二区三区不| 欧美在线观看一区二区| 亚洲欧洲一二三| 国产日韩精品视频一区| 免费成人网www| 亚洲自拍16p| 亚洲国产成人porn| 久久精品国产免费观看| 一本色道久久综合亚洲精品按摩| 国产精品丝袜白浆摸在线| 欧美国产三区| 欧美一区二区三区免费视| 亚洲精品自在在线观看| 久久婷婷国产综合精品青草| 夜夜夜精品看看| 一区久久精品| 国产麻豆一精品一av一免费| 欧美大胆成人| 久久久综合激的五月天| 亚洲专区在线| 亚洲精品字幕| 欧美激情一区| 免费成人在线观看视频| 久久成人这里只有精品| 亚洲视屏一区| 一区二区三区成人精品| 最新高清无码专区|