MEMCACHED(3) SLAB内存池
来源:互联网 发布:暗黑破坏神3 数据库 编辑:程序博客网 时间:2024/05/01 18:18
1. 对这个SLAB内存池实在没什么好说的,比较直白。
简单介绍一下各个参数吧。
2. setting的与SLAB相关的参数
chunk_size:这是SLAB所存储的最小对象大小,包括sizeof(item) + key + value。
item_size_max:这是SLAB所存储的最大对象大小。默认是1MB。
factor:默认系数1.25. 比如说,第一个SLAB缓存大小为32字节的对象,那么第二个SLAB缓存大小为40字节的对象。以此类推,1MB为上限。
maxbytes:内存池所能占有的内存上限。
3. slabclass_t中的参数
void **slab_list; /* array of slab pointers */
unsigned int list_size; /* size of prev array */
可以想象成是void* slab_list[list_size];
每个SLAB槽(总共不超过200个),可以分配多个相同的SLAB页,在此管理;
每个SLAB页都是一块连续内存,大小为该SLAB槽的 size * perslab。 前者是所缓存的对象尺寸,后者是该SLAB页能存储该对象的最大个数。
unsigned int slabs; /* how many slabs were allocated for this class */
上面这个参数就是所分配的页数目
void **slots; /* list of item ptrs */
unsigned int sl_total; /* size of previous array */
unsigned int sl_curr; /* first free slot */
这里保存被释放的对象,显然不是连续的内存。slots改名字叫做freeslots更合适点。
sl_total表示slots数组的大小,而sl_curr表示当前可用的空闲slots,如果sl_curr等于sl_total,就需要重新分配slots了。
void *end_page_ptr; /* pointer to next free item at end of page, or 0 */
unsigned int end_page_free; /* number of items remaining at end of last alloced page */
第一个参数指向当前slab槽中可用的那个slab页;
第二个参数指示该slab页还可以缓存多少个对象。
- MEMCACHED(3) SLAB内存池
- memcached-内存管理机制slab allocator
- memcached源码学习-内存管理机制slab allocator
- memcached源码分析-----slab内存分配器
- 深入Memcached内部 --- slab内存分配
- memcached 内存分配(slab和chunk)
- zz : memcached源码学习-内存管理机制slab allocator
- 内存碎片和memcached slab控制碎片方法
- 内存碎片和memcached slab控制碎片方法
- 内存碎片和memcached slab控制碎片方法
- 内存碎片和memcached slab控制碎片方法
- Memcached内存分配机制—— Slab Allocator
- slab内存分配------内存池mempool
- Memcached的item和slab
- slab内存管理
- 内存的slab算法
- 内存分配器slab
- Nginx slab内存管理
- joomla源代码探析续(二十九) JHTML 与JHTMLSelect 类的使用
- 安装 Debian
- 应用程序基础
- 任务与活动栈
- 改变自己,想让你不离不弃!
- MEMCACHED(3) SLAB内存池
- ASP.NET 控件焦点和默认按钮
- svn常用命令
- 浅谈Android系统开发中LOG的使用
- Ubuntu 10.4 LAMP installation
- Ext FormPanel submit 提交success 与Ext.Ajax.request提交的success 区别
- 开始TI OMAP4 项目
- Eclipse初始安装配置及常见问题总结
- php: strpos返回值为0的问题