Linux 内核将弃用并删除 SLOB 内存分配器


早在 Linux 2.6.23 版本,SLUB 内存分配器成为 Linux 内核的默认值。仅当 CONFIG_SLAB 标志被禁用时,内核才会回退到使用 SLOB 分配器。而据外媒 Phoronix 报道,Linux 内核开发人员正在考虑弃用并最终删除 SLOB 内存分配器。

SLOB (simple list of blocks)分配器是 Linux 内核中三个可用的内存分配器之一。另外两个是 SLAB ( slab allocator ) 和 SLUB(the unqueued slab allocator)。

SLOB 分配器被设计为仅需要很少的内存来实现和管理,常用于嵌入式系统等小型系统。

来自 SUSE 的 Vlastimil Babka 发送了弃用并删除 SLOB 的内核邮件,邮件中提到 SLOB、SLAB  三个内存分配器通同时维护,导致内核开发人员的负担太大。此外,SLOB 只有部分功能与分配器子集兼容,这也导致在 SLOB 功能上的开发要花费更多精力,间接阻塞了 API 的改进。

但最大的问题还是 SLOB 的适用范围太小,它最初的设计主要是面向小内存设备的分配器,通过将所有对象放在一起处理来争取最小的内存占用。这也导致其 CPU 性能成本很大(锁定、缺乏 percpu 缓存、搜索可用空间等......),而且很容易被外部碎片严重影响,导致性能问题。现在内存已经不值钱了,硬件设备最低 RAM 都得来个 128 MB,SLOB 早已经过了发力的年代。

Vlastimil 在邮件中提到的是放弃 SLOB 和 SLAB 两个内存分配器,只留下 SLUB 。到目前为止,其他上游开发人员都赞成弃用和移除 SLOB,而移除 SLAB 可能需要更多时间。在接下来的几个版本, SLOB 将会被标记为损坏或声明弃用,最终被从内核源码树中剥离。


相關推薦

2023-06-15

谷歌即将弃用  Android 开源项目 AOSP 中的拨号器和消息应用程序,在破坏 AOSP 方面迈出了相当大的一步。 现在 AOSP 的拨号器和消息应用源码页面显示以下消息: 此应用程序不受积极支持,源码仅供参考。该项目将在未

2022-04-08

提议介绍,在今年晚些时候发布的 Fedora 37 中,开发人员将弃用传统的 BIOS 支持,并使 UEFI 成为 x86_64 系统的要求。 现阶段 Fedora 团队将会先在 Fedora 37 中弃用(并非移除)传统的 BIOS 支持,届时用户将无法在非 UEFI 下安装新的

2023-07-20

此,mysqlpump将进行降级处理,使用时将有警告提示,未来将弃用该产品。 用于复制的服务器变量“sync_relay_log_info”、“binlog_format”,在此版本中降级处理,未来将弃用该变量。因此,与其关联的“log_bin_trust_function_creators”和

2023-01-17

在去年年初,SUSE 的开发者向 Linux 内核提交了一个 v2 补丁,该补丁将 ReiserFS 文件系统标记为已弃用,并将会在 2025 年从内核中正式删除它。删除的原因主要是过去十多年该文件系统都不再活跃,并且在现代内核的生产用例中也

2022-06-09

thon 3.10 中的一些新的主要新特性和变化有: PEP 623  - 弃用并准备删除 PyUnicodeObject 中的 wstr member PEP 604 - 允许将联合类型写为 X | Y PEP 612 - 参数规范变量 PEP 626  - 用于调试和其他工具的精确行号 PEP 618  - 添加可选的

2022-02-25

长期 Linux 内核开发人员 Matthew Wilcox 发起了一项“是时候删除 reiserfs 了吗?”的讨论。Wilcox 删除 ReiserFS 的动机是由于,他正在追求的内核基础设施的变化,但 ReiserFS 遗留在一定程度上对他的工作造成了阻碍。 Wilcox 指出

2022-08-04

的 commit,以及其他新特性和优化。 PEP 623 – 弃用并准备移除 PyUnicodeObject 中的 wstr 成员 PEP 604 – 支持以 X | Y 的形式编写联合类型 (union types) PEP 612 – 引入参数规范变量 (Parameter Specification Variables) PEP 626&nbs

2023-09-03

微软方面宣布,将在未来的 Windows 更新中弃用写字板。“写字板不再更新,并将在 Windows 的未来版本中删除。” 对于 .doc 和 .rtf 等富文本文档,该公司建议使用 Microsoft Word 作为替代品;对于 .txt 等纯文本文档,则建议使用 Windo

2022-09-09

3.9 相比,3.10 系列中的主要新功能包括有: PEP 623 – 弃用并准备移除 PyUnicodeObject 中的 wstr 成员 PEP 604 – 支持以 X | Y 的形式编写联合类型 (union types) PEP 612 – 引入参数规范变量 (Parameter Specification Variables) PEP 626 – 为调

2023-07-12

根文件系统,再恢复所有用户空间服务,而无需重新启动内核。 systemd 内核安装脚本已用 C 重写 支持启动内存设置 systemctl clean 命令可用于清除服务的 FDSTORE …… 详情 & 下载。

2023-04-27

员更好地管控哪些人可以访问系统。它最初是作为 Linux 内核的一系列补丁,由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成。SELinux 于 2000 年发布到开源社区,并于 2003 年集成到上游 Linux 内核中。 SELinux 定义了每个

2022-08-25

式 GA cgroups 是在节点上组织和管理容器资源的关键 Linux 内核功能之一。在 Kubernetes 的早期,所有容器运行时都是使用 cgroup v1 构建的,现在 cgroups v2 支持已经升级到 GA 状态。使用 cgroups v2,容器工作负载将更安全地工作,包括

2023-09-05

复、性能改进和即用型硬件支持。Nitrux 3.0 由 Linux 6.4.12 内核驱动,在 Wayland 的基础上采用了最新的 KDE Plasma 5.27.7 LTS 桌面环境,并使用了即将发布的 Mesa 23.3 开源图形栈的 Git 快照。 更新了以下组件: Firefox 更新至版本 117.0

2023-05-15

ix_builder ti.types.sparse_matrix_builder 不再弃用 Taichi 内核中的内置 min/max 函数。 弃用了计算图参数声明中的一些参数,它们将在 v1.7.0 中删除。包括: scalar 和 ndarray 的element_shape参数 texture 的shape、channel_format和num_chann