为什么在写了30W的数据到共享内存后,空闲slab还是跟没写的时候一样,依然是157个呢?
文章内容

    空闲的 slab 是指没有被使用的,写入的 30w 数据所创建的 slab 全都是被使用的状态
    所以空闲的 slab 还是跟没写的一样,这个是没有问题的

    doujiang24 观察空闲slab有31个处于[128B - 256B),而新写入的30W个数据都是处于[128B - 256B)的,在我的理解中,理论上这写入的30W个数据会使用到这31个才对的。

      最早的那些 free slab 是之前作为元数据预留的,不能用于用户自己的数据的。

      agentzh 我今天看了《OpenResty 与 Nginx 共享内存区的内存碎片问题》一文,也有一些疑惑:

      1. 例子里40m的共享缓存只写了255个key?我测试有325727的key;
      2. 文中提到,”有趣的是,中间那些空闲 slab (绿色)无法被更大的 slab 重新使用,尽管两者彼此接近。 显然,这些原本预留的空 slab 并不会被自动合并成更大的空闲 slab。“,应该是说,不能被使用的原因是因为它们是预留给slab分配器存放元数据的,而并不是因为它们不会被自动合并为更大的slab而不能使用的吧。
        Write a Reply...