KQMalloc介绍

项目简介

KQMalloc是专为鲲鹏处理器设计的内存分配器,针对Linux操作系统下4KB和64KB系统页大小、48位内存虚拟地址的系统场景进行了适配与优化。 KQMalloc使用透明大页等技术,可最大限度地减少页表缓冲未命中、降低缓存碎片和缓存别名问题。 该分配器支持单线程和多线程应用场景,可极大地提升应用性能。

适用场景:内存的申请、释放等。

特性介绍

表1 KQMalloc特性介绍

特性名称 特性介绍
多级无锁缓存快速路径 每个线程拥有独立的本地缓存,小对象分配仅需10条以内指令,全程无需加锁。未命中时逐级回退到Quick Cache(CAS原子操作的无锁缓存)和Fast Cache(自适应容量的共享缓存)分配。
大页(THP)惰性释放与原地扩缩 释放内存时使用 MADV_FREE 惰性回收,标记页面可回收但不立即归还,减少系统调用。大对象realloc通过虚拟内存提交/取消提交(commit/decommit)原地调整大小,避免分配新内存再拷贝。
精细的大小分级与低碎片堆选择 将对象按大小划分为100+级别,小对象以4字节为步进、大对象以缓存行为步进,每次分配匹配最接近的槽位。
双向堆脏页回收 尾部裁剪(tail clean):当堆驻留超过阈值,通过MADV_DONTNEED释放尾部多余页面。
堆压缩(compression)回收尾部虚拟地址空间。
中部回收(body clean):对释放后的中间区域排序合并,向相邻空闲cell扩展以凑齐页面对齐边界后统一释放。

版本说明

KQMalloc内存分配器的版本说明,包括各版本KQMalloc的详细说明,具体请参见《版本说明书》。

安装部署

KQMalloc内存分配器的安装指南,包括动态库获取和使用方法等,具体请参见《安装指南》。

快速入门

KQMalloc内存分配器的快速入门,包括环境变量和加速示例等,具体请参见《快速入门》。

文档

资源名称 资源简介
版本说明书 记录各版本的功能更新、问题修复和已知限制等信息。
快速入门 介绍KQMalloc的基本概念、安装部署、使用方法及性能验证,帮助用户快速上手。
安装指南 详细介绍KQMalloc的环境要求、软件包获取、安装步骤及卸载方法。
API参考 提供malloc、calloc、realloc、free等函数的详细说明和使用示例。

贡献声明

欢迎大家为社区做贡献,如果使用过程中有任何问题/建议,或者需要反馈特性需求和bug报告,可以提交issues联系我们,具体贡献方法可参考这里

免责声明

此代码仓计划参与KQMalloc软件开源,仅作为KQMalloc功能扩展或性能提升,编码风格遵照原生开源软件,继承原生开源软件安全设计,不破坏原生开源软件设计及编码风格和方式,软件的任何漏洞与安全问题,均由相应的上游社区根据其漏洞和安全响应机制解决。请密切关注上游社区发布的通知和版本更新。鲲鹏计算社区对软件的漏洞及安全问题不承担任何责任。

License

本项目的文档适用CC-BY 4.0许可证,具体请参见LICENSE文件。