有人可以解释一下 memcached 中有哪些 slabs

Can someone explain what slabs are in memcached

真的,我只想知道什么是memcached中的slab。如果与之合作的人可以回答我,可能会更好。 感谢您的回答...

长时间 运行 的应用程序,如 memcached,运行 进入内存碎片问题的服务时间越长 运行s。除此之外,缓存应用程序还有一个额外的问题,即存在已缓存很长时间的内存片段以及最近分配的较新的内存片段。

Memcached 有一个 "slab" 分配器,它试图减少 memcached 进程中的内存碎片。在高层次上,slab 是一块 1MB 的内存,其中包含您存储在 memcached 中的键值对的值。对于不同的值大小也有不同的板。可能有一个用于 16B 值的 slab,一个用于 32B 值的 slab,一个用于 1024B 值的 slab,等等。当添加新的键值对时,memcached 会将值放在将保存该值的最小 slab 中。通过像这样分配内存,memcached 能够减少内存碎片,从而减少 memcached 使用的内存总量。

Slabs 和 slab 分配器是内部 memcached 实现细节。您可以通过 stats 命令获取有关它们的信息,但除非您尝试调试 memcached 本身的问题,否则检查 slab 信息不太可能有用。

有关 slab 和 slab 分配器的更多详细信息,我找到了下面链接的博客 post。

https://holmeshe.me/understanding-memcached-source-code-I/

如果您对这种架构特别感兴趣,那么请研究一下内存分配器的一般工作原理,因为它们的概念是相似的。