Memcached記憶體管理模型與LRU演算法優化

2021-10-08 16:24:51 字數 995 閱讀 9603

memcached 採用的是 slab allocation 記憶體模型,如下圖:

說明:1、最大記憶體預設64兆,通過-m調整,記憶體空間有slab class構成,記憶體以slab page為單位申請,分配到對應的slab class

2、slab page: 最大1兆,由乙個或多個chunk組成

3、chunk: 實際儲存資料的單元96位元組 ~ 1兆

4、slab class增長的幅度,由增長因子決定 (預設1.25)

5、調整slab的增長因子,根據業務需求調整,進行調優

memcached lru 策略

(老版本1.4x之前 用的單鏈表,碰撞機率太高,導致互斥鎖競爭)

新版架構圖

說明:每個slab-class安排乙個lru,每個lru拆分四個lru型別,每個儲存的資料都有兩個標誌位:fetched、active

fetched: 該資料曾被請求過

active: 該資料有兩次或兩次以上被請求,資料被移動時移除

temp: 該佇列中的item ttl通常只有幾秒,不會被挪動

具體時間可配置 stats settings temporary_ttl選項

hot: 熱點佇列,資料不會長久存在此鍊錶,一旦資料達到隊尾,則開始移動。如果資料處於活動狀態,將被移動到warm,非活動狀態,被移動到cold

warm: 訪問量不大的資料

如果物品處於活動狀態,將被移動到warm頭部,非活動狀態,移動到cold

cold: 最不活躍的資料

**時如果處於active狀態,則移動warm,否則刪除

Memcached 記憶體管理

memcached是乙個高效的分布式記憶體cache,了解memcached的記憶體管理機制,便於我們理解memcached,讓我們可以針對我們資料特點進行調優,讓其更好的為我所用。這裡簡單談一下我對 memcached的記憶體管理的一些認識,在沒有特別註明的情況下,這裡談到的memcached是1...

memcached記憶體管理

原文 基本概念 slab,page,chunk。slab,是乙個邏輯概念。它是在啟動memcached例項的時候預處理好的,每個slab對應乙個chunk size,也就是說不同slab有不同的chunk size。具體分配多少個slab由引數 f 增長因子 和 n chunk最小尺寸 決定的。pa...

Memcached工作原理以及記憶體管理

memcached工作原理 包括服務端和客戶端,以鍵值對的形式儲存。key根據乙個 hash 演算法得到乙個 hashkey 根據這個值來確定選擇哪台伺服器儲存。客戶端根據 key的值用相同的方法計算出 hash 值,確定是哪個伺服器,然後進行連線,獲取 value值 快取策略 當服務端的hash ...