极简、硬核、无损。 本项目对
rpmalloc的庞大源码进行了核心骨架抽离,在完全不损失任何性能的前提下,为高并发内存分配器的学习者提供一个核心机制实现参考。
许多人面对原版 rpmalloc 几千行的工程代码望而却步,本项目旨在降低阅读源码的门槛:
- 核心代码抽离:砍掉一切工程冗余,整套项目仅保留
rpmalloc、rpfree以及 初始化 3 个最核心的对外物理接口。从3000行代码变成 1250行代码 - 保留纯粹机制:完整保留了
rpmalloc赖以生存的核心内存池机制、Span/Page/Block 级拓扑、多线程完全隔离以及免自旋无锁链表 (Mailbox) 交互。 - 轻量化做减法:去除了对学习核心机制毫无帮助的
Huge缓存机制,避免学习者陷入工程细节泥潭(详细可阅读原版)。环境:Ubuntu 24.04.4 LTS + GCC 13.3.0(去除了原版的跨平台可移植性,x86-64 物理底层)。 - 性能完全无损:由于底层的物理内存池结构、位运算对齐算法和无锁 CAS 路径完全基于原版高标准保留,经过虚拟机二核实测,经虚拟机多线程压力测试,重构版吞吐性能(除Huge)与原版无明显差异!
- 📁 1. 代码:精炼、干净、带有中文深度物理级注释的重构版核心源码。
- 📁 2. 图解:
01.图解_基础篇.png:攻克多线程隔离、Heap/Span/Page 物理堆栈基础拓扑以及设计理念。02.图解_进阶篇.png:攻克获取SPAN PAGE的机制, 线程死亡时机制, 多核并发硬件理论及具体原子操作解释。
- 📁 3. 学习过程:记录攻克底座、死磕位运算逻辑的心路历程与推导草稿。
- 📊 简单测试_性能对比.png:高并发多线程压力下,精简版与原版、标准内存分配器的吞吐性能物理实测对比。
本项目在 1.代码/ 目录下提供了完整的测试源码。学习者可以使用 GCC 直接编译并运行性能测试,亲眼见证重构后的高并发吞吐实力。
gcc my_rpmalloc.c main_5.c -o test_main_5_mine -lpthread -O3
gcc rpmalloc.c main_5.c -o test_main_5_orig -lpthread -O3
gcc my_rpmalloc.c main_6.c -o test_main_6_mine -lpthread -O3
gcc rpmalloc.c main_6.c -o test_main_6_orig -lpthread -O3
上述的main_5.c 第13行开关 教学/原版,第38行 5是去除Huge,6是加上Huge
本项目采用双重授权(详见根目录 LICENSE 文件):
- 代码部分:严格遵守原作者的 MIT 许可证。
- 图解与剖析文档:采用 CC BY-NC-SA 4.0 (署名-非商业性使用-相同方式共享) 国际协议保护。
一共只在Github和Gitee平台记录
GitHub:https://github.com/YQwQ/rpmalloc-analysis
Gitee:https://gitee.com/onetwoyi/rpmalloc-analysis