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

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,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 那誰 閱讀(7466) 評論(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>
            一本色道久久综合亚洲91| 亚洲午夜精品一区二区| 久久婷婷国产麻豆91天堂| 99视频超级精品| 亚洲欧洲一区二区三区| 狠久久av成人天堂| 狠狠入ady亚洲精品经典电影| 国产色产综合色产在线视频| 国产欧美日韩三区| 国产揄拍国内精品对白| 国产欧美日韩综合一区在线播放| 国产美女在线精品免费观看| 国产精品一区二区在线观看网站 | 国产精品日韩在线播放| 国产精品国产三级国产专播品爱网 | 亚洲最新中文字幕| 一本色道久久综合亚洲91| 亚洲免费大片| 亚洲伊人观看| 久久精品观看| 久久久久一本一区二区青青蜜月| 久久综合伊人77777尤物| 欧美va天堂va视频va在线| 欧美成人精精品一区二区频| 欧美激情免费观看| 亚洲人成毛片在线播放女女| 亚洲伦理久久| 亚洲视频免费在线| 校园激情久久| 免播放器亚洲| 欧美日本国产精品| 国产精品jizz在线观看美国| 国产精品久久久久三级| 国产精品久久91| 国产精品青草久久| 国产精品美女黄网| 国产亚洲综合在线| 亚洲国产日韩一区二区| 亚洲一级在线观看| 久久人人超碰| 亚洲精品日韩一| 亚洲综合首页| 欧美xart系列在线观看| 欧美视频观看一区| 精品av久久久久电影| 一本久久知道综合久久| 久久精品av麻豆的观看方式| 亚洲风情亚aⅴ在线发布| 99成人在线| 久久精品国产99| 久热成人在线视频| 亚洲一区二区日本| 美女视频一区免费观看| 亚洲精品久久久久久下一站| 午夜精品视频在线| 欧美肥婆在线| 激情六月婷婷综合| 亚洲免费在线| 亚洲欧洲精品一区二区三区不卡| 午夜精品久久久久久久久久久久久 | 99精品国产在热久久下载| 亚欧美中日韩视频| 亚洲茄子视频| 久久中文欧美| 国产精品一区二区女厕厕| 最新中文字幕一区二区三区| 久久久久久欧美| 一本色道久久综合亚洲精品不| 久久深夜福利| 国产日产欧美a一级在线| 亚洲美女诱惑| 欧美成人精品在线| 欧美一区二区三区在线看| 欧美揉bbbbb揉bbbbb| 亚洲第一页中文字幕| 亚洲欧美视频在线| 亚洲清纯自拍| 蘑菇福利视频一区播放| 国产一区二区三区四区hd| 亚洲一区国产| 亚洲国产小视频在线观看| 欧美亚洲日本一区| 欧美性猛交一区二区三区精品| 国产一区二区av| 一本色道久久综合亚洲精品小说 | 狠狠色狠色综合曰曰| 一区二区福利| 久久精品中文字幕免费mv| aa国产精品| 欧美在线观看视频一区二区| 久久高清国产| 亚洲一区视频| 国产精品观看| 亚洲字幕在线观看| 日韩天天综合| 欧美日韩国产成人高清视频| 亚洲精品你懂的| 麻豆精品一区二区av白丝在线| 欧美有码在线观看视频| 国产九九精品| 欧美一区二区三区久久精品茉莉花 | 欧美日韩亚洲一区二区三区四区| 亚洲人成在线免费观看| 欧美福利精品| 欧美mv日韩mv亚洲| 亚洲精品国产精品国自产观看浪潮| 欧美1区3d| 久久精品国产91精品亚洲| 伊人久久婷婷| 欧美aⅴ一区二区三区视频| 久久精品一区二区三区不卡牛牛| 国内在线观看一区二区三区| 久久一区二区三区超碰国产精品| 久久国产福利国产秒拍| 精品盗摄一区二区三区| 欧美α欧美αv大片| 免费在线看一区| 99精品免费视频| 一区二区三区四区五区视频| 欧美日韩一区在线观看视频| 亚洲一区自拍| 亚洲欧美日韩精品在线| 国产综合久久久久久| 欧美wwwwww| 欧美高清不卡在线| 99精品视频免费在线观看| 一区二区三区精品视频| 国产精品一区二区三区四区| 久久天天躁夜夜躁狠狠躁2022 | 亚洲精品小视频在线观看| 欧美视频在线视频| 欧美一区亚洲二区| 久久久久免费视频| 亚洲精品乱码久久久久| 日韩视频一区二区| 欧美视频在线观看| 久久久福利视频| 欧美jizzhd精品欧美巨大免费| 一区二区三区日韩精品| 欧美日韩喷水| 久久福利精品| 久久久久久久久久久久久久一区| 亚洲国产人成综合网站| 99pao成人国产永久免费视频| 国产欧美精品一区| 免费观看久久久4p| 欧美色欧美亚洲另类七区| 欧美在线一级视频| 另类专区欧美制服同性| 亚洲综合精品四区| 久久久久久一区| 亚洲在线一区二区| 久久高清免费观看| 亚洲视频第一页| 久久精品国内一区二区三区| 精品成人免费| 免费影视亚洲| 欧美 日韩 国产 一区| 91久久久久久国产精品| 亚洲欧洲一区二区在线观看| 欧美日韩高清在线观看| 日韩一级精品视频在线观看| 亚洲福利视频一区二区| 美女视频黄免费的久久| 一区二区成人精品| 在线中文字幕一区| 韩日精品在线| 亚洲国产一区二区三区在线播| 宅男精品视频| 国产精品自拍小视频| 久久久久久色| 国产精品一区二区你懂的| 午夜精品一区二区三区在线播放| 亚洲自拍电影| 午夜国产精品视频免费体验区| 先锋影音久久久| 亚洲女同同性videoxma| 国产丝袜一区二区| 亚洲一级黄色av| 老色批av在线精品| 亚洲图片欧美日产| 国产精品一级二级三级| 亚洲网站视频| 国产综合久久久久久鬼色| 欧美高清一区二区| 欧美午夜寂寞影院| 欧美国产日韩在线观看| 国产精品第一区| 亚洲国产91| 影音先锋久久资源网| 亚洲午夜av电影| 亚洲砖区区免费| 噜噜噜躁狠狠躁狠狠精品视频 | 欧美中文字幕在线观看| 欧美gay视频激情| 久久久久久穴| 国产精品亚洲综合久久| 99国产精品99久久久久久粉嫩 | 久久亚洲国产精品一区二区| 亚洲视频观看|