1.memcached机制
a. 守护进程机制
-UNIX daemon
b. Socket事件处理机制
-non-blocked:非阻塞
-libevent:异步事件处理
-epoll/kqueue
c. 内存管理机制
-slab:内存分配机制
-LRU:对象清除机制
-Hash机制:快速检索item
d. 多线程处理机制:pthread(POSIX)线程模式
-编译时开启:./configure –enable-threads
-目前还比较粗糙,锁机制locking不够完善
-负载过重时,可以开启(-t线程数为CPU核数)
-UNIX daemon
b. Socket事件处理机制
-non-blocked:非阻塞
-libevent:异步事件处理
-epoll/kqueue
c. 内存管理机制
-slab:内存分配机制
-LRU:对象清除机制
-Hash机制:快速检索item
d. 多线程处理机制:pthread(POSIX)线程模式
-编译时开启:./configure –enable-threads
-目前还比较粗糙,锁机制locking不够完善
-负载过重时,可以开启(-t线程数为CPU核数)
2.memcached内存管理机制
a. SLAB内存处理机制
-提前分配大内存slab 1MB,再进行小对象填充chunk
-避免大量重复的初始化和清理 减轻内存管理器负担
-避免频繁malloc/free系统碎片
b. 懒惰检测机制
-不检测item对象是否超时
-get时检查item对象是否应该删除
c. 懒惰删除机制
-删除item对象时,不释放内存,作删除标记,指针放入slot回收插槽,下次分配的时候直接使用
-提前分配大内存slab 1MB,再进行小对象填充chunk
-避免大量重复的初始化和清理 减轻内存管理器负担
-避免频繁malloc/free系统碎片
b. 懒惰检测机制
-不检测item对象是否超时
-get时检查item对象是否应该删除
c. 懒惰删除机制
-删除item对象时,不释放内存,作删除标记,指针放入slot回收插槽,下次分配的时候直接使用
3.名词解释
a. slab class:内存区类别(48byte-1MB)
-slab==page:动态创建的实际内存区
-slab classid:slab class的ID
b. chunk:数据区块,固定大小
-item:实际存储在chunk中的数据项
-slab==page:动态创建的实际内存区
-slab classid:slab class的ID
b. chunk:数据区块,固定大小
-item:实际存储在chunk中的数据项