我正在考虑在操作系统内核中修改malloc()。我们目前使用dlmalloc,但我想要一个自制的解决方案,我们可以编辑而无需处理千行文件。
我决定调查slab分配器(Bonwick94),我相信这是正确的选择。到目前为止,我理解这个概念,并准备实施它。但是,在开始工作之前,我想先了解一下性能比较的图片。
假设malloc(vmem,pmem等)下面的层有可忽略的影响,slab分配器与dlmalloc和其他常见的malloc实现(buddy,best-fit / first-fit)相比如何? ,混合动力车)?
答案 0 :(得分:3)
我认为slab分配器至少是dlmalloc灵感的一部分,基本概述被认为是通用分配器系统权衡的最佳整体组合。通用的“一刀切”分配器 - 在“最佳适合”,“下一个适合”等抽象层面上没有任何双关语,通常不会削减它;单个算法太有限了。因此,与板坯分配器一起使用的最佳配合组合将表现得更令人满意。
使用“子分配器”层次结构,其行为适合您环境中的使用情况配置文件比听起来更容易 - 例如,为“小”块使用一个分配系统(但可能在您的环境中定义)另一个“大”可以极大地影响速度和碎片性能,我个人感兴趣的是使用块“生命周期”特性作为分配器选择的辅助。
但是底线,我不相信单一的分配策略;但是你可以通过只有2或3个(最多)子分配器的混合来获得很多性能提升;与此同时,你可能最终会采用相同的1000线大小。