【问题标题】:Can someone explain what slabs are in memcached有人可以解释一下 memcached 中的平板是什么吗
【发布时间】:2019-11-30 22:15:58
【问题描述】:

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

【问题讨论】:

  • 我使用 memcached 10 多年了,我不知道什么是平板。我错过了什么重要的事情吗?您是否正在寻找某个人会告诉您有关 memcached 的信息,与现有文章中众多作者之前的做法相比,它“好得多”?您能否说明问题,以便人们可以帮助您解决它?现在你的问题不值得回答。
  • @MaximSagaydachny 这是一个内部 memcached 实现细节。我不认为你错过了任何重要的事情。如果您好奇什么是平板和平板分配器,请参阅下面的答案。
  • @mikewied ,我曾经解决过一个问题,不得不查看 memcached 的内部结构以了解发生了什么。我知道什么是平板。我只是编造了一个故事来推动 OP 给我们解释,这将引起专家的注意。现在我们可能会被蒙在鼓里。

标签: memcached


【解决方案1】:

长时间运行的应用程序(如 memcached)会在服务运行时间越长时遇到内存碎片问题。除此之外,缓存应用程序还有一个额外的问题,即有些内存已经被缓存了很长时间,还有一些新的内存是最近分配的。

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

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

有关平板和平板分配器的更多详细信息,我在下面找到了一篇博客链接。

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

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

【讨论】:

  • 所以当一个键被驱逐时,它的 slap 假设它的大小为 16,memcached 仍然必须修复这个差距,因为它不能执行仅附加模型,对吧?
猜你喜欢
  • 1970-01-01
  • 2014-04-08
  • 2016-05-10
  • 2018-12-17
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多