簡單理解Memcached的Slab Allocation
簡單理解Memcached的Slab Allocation包含如下內容:
slab Allocation
Slab Allocation的原理——將分配的記憶體分割成各種尺寸的塊(chunk), 並把尺寸相同的塊分成組(chunk的集合),每個chunk集合被稱為slab。
Memcached的記憶體分配以Page為單位,Page預設值為1M,可以在啟動時通過-I引數來指定。
Slab是由多個Page組成的,Page按照指定大小切割成多個chunk。其結構圖如下:
Growth Factor
memcached在啟動時通過-f選項可以指定 Growth Factor因子。該值控制slab之間的差異,chunk大小的差異。預設值為1.25。
通過memcached-tool檢視指定memcached例項的不同slab狀態,可以看到各Item所佔大小(chunk大小)差距為1.25
Slab Allocation的缺點
Slab Allocation可以有效的解決記憶體碎片問題,但是在如下情況下,會導致記憶體的浪費:
- 每個slab的chunk大小是固定的,當item的佔用空間實際小於chunk大小時,會出現記憶體浪費
- 每個slab的大小是固定的(因為page是固定的),當slab不能被他所擁有的chunk整除時,會出現記憶體浪費
- 按照Growth Factor因子生成指定大小的slab,而某slab id根本未被使用時,會出現記憶體浪費
參考資料
memcached全面剖析–2.理解memcached的記憶體儲存
Memcache記憶體分配策略
轉載:http://www.xiaoxiaozi.com/2013/04/29/2432/
相關文章
- memcached快取知識簡單梳理快取
- memcached全面剖析--2.理解memcached的記憶體儲存記憶體
- PHP socket 的簡單理解PHP
- MongoDB索引的簡單理解MongoDB索引
- 對CSRF的簡單理解
- ThreadLocal的簡單理解thread
- 快速排序的簡單理解排序
- Java的簡單理解(2)Java
- 簡單理解promisePromise
- Restful簡單理解REST
- EJB簡單理解
- BFC簡單理解
- 正確理解memcached,才能更好的使用
- vue cli 3的簡單理解Vue
- 關於BFC的簡單理解
- 簡單的理解 Object.defineProperty()Object
- 關於RabbitMQ的簡單理解MQ
- 氣泡排序的簡單理解排序
- 選擇排序的簡單理解排序
- 基數排序的簡單理解排序
- 歸併排序的簡單理解排序
- 簡單理解回撥
- 簡單理解OAuth 2.0OAuth
- Object.keys()的簡單理解Object
- 插值查詢的簡單理解
- 如何簡單的理解TDD與DDT
- centos7下安裝php+memcached簡單記錄CentOSPHP
- 簡單理解flex佈局Flex
- node.js簡單理解Node.js
- 簡單理解C++引用C++
- 簡單理解:ML、DB、NLP
- Spring Aop簡單理解Spring
- java介面和抽象類的簡單理解Java抽象
- 簡單的理解Vuex,手把手教會Vue
- 二分查詢的簡單理解
- 關於JDK15的簡單理解JDK
- 談一談對vuex的簡單理解Vue
- 簡單理解Vue中的nextTickVue