* Slab Allocation機制:整理內存以便重復使用
memcached默認情況采用slab allocator的機制來分配管理內存,在該機制出現之前,內存的分配是通過對所有記錄簡單進行malloc和free來進行,但是這種方式會導致內存碎片,加重操作系統內存管理的負擔。
* Slab Allocation的原理
將分配的內存分割成各種尺寸的塊(chunk),并把尺寸相同的塊分成組(chunk的集合)

術語:
Page:
分配給Slab的內存空間,默認為1MB,分配給slab之后根據slab的大小分成chunk
chunk:
用于緩存記錄的內存空間
slab class:
特定大小的chunk的組
* memcached如何針對客戶端發送的數據選擇slab并緩存到chunk中
memcached根據收到的數據的大小,選擇最適合數據大小的slab,memcached中保存著slab內空閑chunk的列表,根據該列表選擇chunk,然后數據緩存與其中
* slab allocator的缺點
由于分配的是特定長度的內存,因此無法有效利用分配的內存,例如將100字節的數據緩存到128字節的chunk中,剩余28字節就浪費
* 使用Growth Factor進行調優
使用增長因子,在某種程度上控制slab之間的差異,默認為1.25,我們可以通過編寫/etc/sysconfig/memcached中options=" -f 1.1"
6、查看stats的使用狀況
~~~
[root@node7 ~]# memcached-tool localhost:11211
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
1 96B 4s 1 1 yes 0 0 0
2 120B 44s 1 1 yes 0 0 0
~~~
說明:
#: 表示slab class的編號
Item_Size chunk大小
Max_age 從創建開始到現在,過了多久咯(生存時間)
pages: 分配給slab的內存頁數
count: slab內的記錄數
full?: slab內是否仍有空閑chunk