Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Memcached内存管理
Search
jiangbo
August 31, 2012
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Memcached内存管理
jiangbo
August 31, 2012
More Decks by jiangbo
See All by jiangbo
HDFS RAID
jiangbo
0
4k
HDFS
jiangbo
0
200
awk
jiangbo
4
330
vim
jiangbo
8
510
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
410
Mobile First: as difficult as doing things right
swwweet
225
10k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Writing Fast Ruby
sferik
630
63k
Google's AI Overviews - The New Search
badams
0
1.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Believing is Seeing
oripsolob
1
190
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Balancing Empowerment & Direction
lara
6
1.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
940
Transcript
Memcached ଘཧ jiangbo$_ @mokeyj Friday, August 31, 12
Slab, Page, Chunk, Item Chunk ^ +------------------|------------------------------------------------------------+ | Memory |
| | +---------------|---------------------------------------------------------+ | | | +--------|---------------------+ +------------------------------+ | | | | |Page1 +-|---+ +-----+ +-----+ | |Page2 +-----+ +-----+ +-----+ | | | | | Slab |(1M) | 96B | | 68B | | 72B | | |(1M) | 92B | | 76B | | 84B | | | | | | 1 | +-----+ +-----+ +-----+ | | +-----+ +-----+ +-----+ | | | | | +------------------------------+ +------------------------------+ | | | +-------------------------------------------------------------------------+ | | | | +-------------------------------------------------------------------------+ | | | +------------------------------+ +------------------------------+ | | | | |Page1 +------+ +------+ | |Page2 +------+ +-------+ | | | | | Slab | (1M) | 128B | | 120B | | |(1M) | 128B | | 97B | | | | | | 2 | +------+ +------+ | | +------+ +-------+ | | | | | +------------------------------+ +------------------------------+ | | | +-------------------------------------------------------------------------+ | +-------------------------------------------------------------------------------+ Friday, August 31, 12
Item +---------------------------------------+ | key-value | cas | suffix | item
head | +---------------------------------------+ 实际ଘ์తਾ Item Size= data size + 32bytes item head Friday, August 31, 12
Chunk +------------------------------+ | data item | empty space | +------------------------------+
ଘ์ਾత࠷খ单ݩ Friday, August 31, 12
Page +-------------------------------------+ | chunk1 | chunk2 | chunk3 | chunk4
| +-------------------------------------+ ਃ请༻ଘత࠷খۭ间ɼ ᘍ认为1M Friday, August 31, 12
Slab +--------------------------------+ | Page1 | Page2 | Page3 | Page4
| +--------------------------------+ ҈chunkେখෆಉ䎞কଘ䎞ଟslabۭ间 Friday, August 31, 12
Slabॳ࢝Խ • ࠜਾෆಉతchunk_size䎞为ଟslabۭ间 • ॳ࢝࠷খchunk_sizeʢᘍ认为80=48+32ʣ • ࠜਾfactor҈ൺྫ递⃧ʢᘍ认1.25ʣ ࢀ⻅见 slabs.cதslabs_init() Friday,
August 31, 12
ਾଘ储 • 计ࢉitemେখɼፙ౸߹㭕తslab • ਗ਼ཧ该slabதత过ظchunk • ༗过ظchunkɼ则ਃ请৽ۭ间(slab_alloc) • ਃ请ۭ间ࣦ败ɼ༻LRUஞग़ ࢀ⻅见item.cதdo_item_alloc()
Friday, August 31, 12
ਃ请Slab • ဓSlotsྻදதਃ请 • ༗则ਃ请ҰPageత৽ۭ间 • ਃ请ۭ间ੋձઌஅslab_reasignɼᘍ认ෆ 䇖启 ࢀ⻅见slabs.cதslab_alloc() Friday,
August 31, 12
ଘ࿘费 • Item Size <= Chunk Size • Page Size%Chunk
Size ? • ቮ给slabతۭ间ᘍ认ෆճᏅ Friday, August 31, 12
Ҋྫੳ • ఆ⻓长问题导கେྔஞग़ Friday, August 31, 12
THX Friday, August 31, 12