上一篇文章简单介绍了分布式内存对象缓存系统Memcached,本文将从内存管理和分布式算法两个方面介绍Memcached的内部实现原理。
一、Slab Allocation机制
Memcached默认采用Slab Allocation机制分配管理内存。在该机制之前,Memcached简单地通过malloc和free进行内存分配,这种分配方式会产生大量的内存碎片,同时加重操作系统内存管理的负担。在最坏的情况下, 操作系统会比memcached进程本身还慢。Slab Allocation机制的出现,解决了内存管理上的一系列问题。
1.1 Slab Allocation原理
Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块, 以完全解决内存的外部碎片问题。如图1,内存被分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(Slab Class)。
图1 Slab Allocation基本原理