gpt4 book ai didi

firefox - jemalloc 是如何工作的?有什么好处?

转载 作者:行者123 更新时间:2023-12-03 01:30:53 26 4
gpt4 key购买 nike

Firefox 3 附带了一个新的分配器:jemalloc

我在几个地方听说这个新的分配器更好。不过,Google 的顶级结果并未提供任何进一步的信息,我对它到底是如何工作的很感兴趣。

最佳答案

jemalloc 最初出现在 FreeBSD 中,是“Jason Evans”的创意,因此称为“je”。如果我没有写过一个名为 paxos 的操作系统,我会 mock 他太自负了:-)

参见this PDF了解完整详情。这是一份详细描述算法如何工作的白皮书。

主要好处是多处理器和多线程系统的可扩展性,部分是通过使用多个竞技场(进行分配的原始内存块)来实现的。

在单线程情况下,多个 arena 没有真正的好处,因此使用单个 arena。

但是,在多线程情况下,会创建许多竞技场(竞技场数量是处理器数量的四倍),并且线程会以循环方式分配给这些竞技场。

这意味着可以减少锁争用,因为虽然多个线程可能同时调用 mallocfree,但它们只有在共享同一区域时才会发生争用。两个不同 arena 的线程不会互相影响。

此外,jemalloc 尝试优化缓存局部性,因为从 RAM 获取数据的行为比使用 CPU 缓存中已有的数据慢得多(在概念上与快速获取之间的差异没有什么不同)从 RAM 获取与从磁盘缓慢获取)。为此,它首先尝试最大限度地减少总体内存使用量,因为这更有可能确保应用程序的整个工作集都在缓存中。

并且,如果无法实现这一点,它会尝试确保分配是连续的,因为一起分配的内存往往会一起使用。

从白皮书来看,这些策略似乎为单线程使用提供了与当前最佳算法相似的性能,同时为多线程使用提供了改进。

关于firefox - jemalloc 是如何工作的?有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1624726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com