memcached的内存分配器是如何工作的?为何要使用slabs?

Posted 四猿外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcached的内存分配器是如何工作的?为何要使用slabs?相关的知识,希望对你有一定的参考价值。

实际上, 这是一个编译时选项。默认会使用内部的slab 分配器。您确实确实应该使用内建的slab 分配器。最早的时候,memcached 只使用malloc/free 来管理内存。然而,这种方式不能与OS 的内存管理以前很好地工作。反复地malloc/free造成了内存碎片, OS 最终花费大量的时间去查找连续的内存块来满足malloc 的
请求,而不是运行memcached 进程。如果您不同意,当然可以使用malloc!只是不要在邮件列表中抱怨啊

slab 分配器就是为了解决这个问题而生的。内存被分配并划分成chunks,一直被重复使用。因为内存被划分成大小不等的slabs,如果item 的大小与被选择存放它的slab 不是很合适的话, 就会浪费一些内存。Steven Grimm 正在这方面已经做出了有效的改进。

以上是关于memcached的内存分配器是如何工作的?为何要使用slabs?的主要内容,如果未能解决你的问题,请参考以下文章

memcached 的内存分配器是如何工作的?为什么不适用 malloc/free!?为何要使用 slabs?

为何要使用数据库缓存

memcached注意事项

memcached源码分析-----slab内存分配器

memcached内存分配

为何Redis要比Memcached好用