Sid*_*rth 38 memory-management linux-kernel
有哪些因素有助于决定Linux内核中内存分配器的选择?
在目前的Linux内核中,我们可以选择SLAB,SLUB或SLOB.我已经读过SLOB用于较小脚印的内核.但我想知道有助于在Slab Allocator和Slub Allocator之间做出决定的因素.
Sid*_*rth 51
在寻找答案时,我在Quora上发布了同样的问题,Robert Love回答了这个问题:
我假设您从系统用户的角度来询问这个问题,或者可能是为某个特定产品构建内核的人.作为内核开发人员,您不关心正在使用的"slab"分配器; API是一样的.
首先,"slab"已成为一个通用名称,指的是采用对象缓存的内存分配策略,从而实现内核对象的有效分配和释放.它首先由Sun工程师Jeff Bonwick 1记录,并在Solaris 2.4内核中实现.
Linux目前为其"slab"分配器提供三种选择:
Slab是最初的,基于Bonwick的开创性论文,自Linux内核版本2.2起可用.这是对Bonwick提案的忠实实施,并通过Bonwick的后续文件2中描述的多处理器更改得到了增强.
Slub是下一代替换内存分配器,自2.6.23以来一直是Linux内核的默认内存分配器.它继续采用基本的"平板"模型,但修复了Slab设计中的一些缺陷,特别是在具有大量处理器的系统中.竹节比平板更简单.
SLOB(简单块列表)是一种内存分配器,针对内存非常少的嵌入式系统进行了优化 - 大小为兆字节.它在块列表上应用了一个非常简单的首先拟合算法,与旧的K&R样式堆分配器不同.在消除了几乎所有从内存分配器的overhad的,SLOB是非常适合在极端的内存限制的系统,但它提供了全没有描述的好处1,可以从病理碎片受苦.
你应该用什么?Slub,除非您为内存有限的嵌入式设备构建内核.在这种情况下,我会对Slub和SLOB进行基准测试,看看什么最适合您的工作量.没有理由使用Slab; 它可能会从未来的Linux内核版本中删除.
请参阅此链接以获取原始回复.
| 归档时间: |
|
| 查看次数: |
22223 次 |
| 最近记录: |