|
系列文章導(dǎo)航:
memcached完全剖析–1. memcached的基礎(chǔ)
memcached全面剖析–2. 理解memcached的內(nèi)存存儲
memcached全面剖析–3. memcached的刪除機制和發(fā)展方向
memcached全面剖析–4. memcached的分布式算法
memcached全面剖析–5. memcached的應(yīng)用和兼容程序
下面是《memcached全面剖析》的第二部分。
發(fā)表日:2008/7/9
作者:前坂徹(Toru Maesaka)
原文鏈接:http://gihyo.jp/dev/feature/01/memcached/0002
我是mixi株式會社研究開發(fā)組的前坂徹。 上次的文章介紹了memcached是分布式的高速緩存服務(wù)器。 本次將介紹memcached的內(nèi)部構(gòu)造的實現(xiàn)方式,以及內(nèi)存的管理方式。 另外,memcached的內(nèi)部構(gòu)造導(dǎo)致的弱點也將加以說明。
Slab Allocation機制:整理內(nèi)存以便重復(fù)使用
最近的memcached默認(rèn)情況下采用了名為Slab Allocator的機制分配、管理內(nèi)存。 在該機制出現(xiàn)以前,內(nèi)存的分配是通過對所有記錄簡單地進行malloc和free來進行的。 但是,這種方式會導(dǎo)致內(nèi)存碎片,加重操作系統(tǒng)內(nèi)存管理器的負(fù)擔(dān),最壞的情況下, 會導(dǎo)致操作系統(tǒng)比memcached進程本身還慢。Slab Allocator就是為解決該問題而誕生的。
下面來看看Slab Allocator的原理。下面是memcached文檔中的slab allocator的目標(biāo):
the primary goal of the slabs subsystem in memcached was to eliminate memory fragmentation issues totally by using fixed-size memory chunks coming from a few predetermined size classes.
也就是說,Slab Allocator的基本原理是按照預(yù)先規(guī)定的大小,將分配的內(nèi)存分割成特定長度的塊, 以完全解決內(nèi)存碎片問題。
Slab Allocation的原理相當(dāng)簡單。 將分配的內(nèi)存分割成各種尺寸的塊(chunk), 并把尺寸相同的塊分成組(chunk的集合)(圖1)。

NET技術(shù):memcached全面剖析–2. 理解memcached的內(nèi)存存儲,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。