版权所有 © 2023 openEuler社区
您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名—相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问https://creativecommons.org/licenses/by-sa/4.0/ 了解CC BY-SA 4.0的概要 (但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:https://creativecommons.org/licenses/by-sa/4.0/legalcode。
修订记录
日期 | 修订 版本 | 修改描述 | 作者 |
---|---|---|---|
2023-03-13 | 1 | 初稿 | 马文烁 |
关键词:
openEuler:jemalloc-5.3.0
摘要:
文本主要描述 jemalloc-5.3.0 在 openEuler 22.03-LTS x86 和 aarch64 操作系统上的整体测试过程,详细叙述测试覆盖情况,并通过问题分析对版本整体质量进行评估和总结。
缩略语清单:
缩略语 | 英文全名 | 中文解释 |
---|---|---|
LTS | long time support | 长时间维护 |
1 特性概述
jemalloc 作为新一代内存分配器。它是一个通用的 malloc 实现,侧重于减少内存碎片和提升高并发场景下内存的分配效率。
当前openEuler 22.03-LTS 对应的jemalloc版本为5.2.1,但jemalloc官网已发布最新稳定版本5.3.0。该版本相较于5.2.1在性能和内存占用上均有所提升,同时也提高内存回收速度。
openEuler 22.03-LTS-SP1 jemalloc升级pr
2 特性测试信息
本节描述被测对象的版本信息和测试的时间及测试轮次,包括依赖的硬件。
版本名称 | 测试起始时间 | 测试结束时间 |
---|---|---|
jemalloc-5.3.0 | 2023-03-8 | 2023-03-10 |
jemalloc-5.3.0 | 2023-03-10 | 2023-03-14 |
描述特性测试的硬件环境信息
硬件型号 | 硬件配置信息 | 备注 |
---|---|---|
x86-64 | NA | NA |
aarch64 | NA | NA |
3 测试结论概述
3.1 测试整体结论
jemalloc-5.3.0版本整体测试情况,基本功能测试用例共计1135个,主要覆盖API测试及基本功能测试。失败用例个数0,无遗留问题,整体质量良好。性能测试压测用例共计12个,主要包括小内存申请与释放,大内存申请与释放。失败用例个数为0,整体测试结果,相较于5.2.1,耗时更少,性能有较明显提升。
测试活动 | 测试子项 | 活动评价 |
---|---|---|
功能测试 | 继承特性测试 | 测试用例均通过 |
功能测试 | 新增特性测试 | 测试用例均通过 |
兼容性测试 | 动态库依赖 | 无变更 |
兼容性测试 | rpm包ABI | 仅版本号变更,无兼容性问题 |
兼容性测试 | 头文件对外接口 | 仅版本号变更,无兼容性问题 |
DFX专项测试 | 性能测试 | 测试用例通过,性能提升12%~19% |
DFX专项测试 | 可靠性/韧性测试 | redis压力测试结果,无差异 |
DFX专项测试 | 安全测试 | 测试通过 |
资料测试 | / | jemalloc不涉及新增资料 |
其他测试 | / | / |
3.2 约束说明
无
3.3 遗留问题分析
3.3.1 遗留问题影响以及规避措施
无
3.3.2 问题统计
问题总数 | 严重 | 主要 | 次要 | 不重要 | |
---|---|---|---|---|---|
数目 | 0 | ||||
百分比 | 0 |
4 详细测试结论
4.1 功能测试
4.1.1 继承特性测试结论
序号 | 组件/特性名称 | 特性质量评估 | 备注 |
---|---|---|---|
1 | jemalloc/malloc | ■ | |
2 | jemalloc/free | ■ | |
3 | jemalloc/realloc | ■ | |
4 | jemalloc/mallctl | ■ |
●: 表示特性不稳定,风险高
▲: 表示特性基本可用,遗留少量问题
■: 表示特性质量良好
4.1.2 新增特性测试结论
序号 | 组件/特性名称 | 特性质量评估 | 备注 |
---|---|---|---|
1 | jemalloc/malloc | ■ | |
2 | jemalloc/free | ■ | |
3 | jemalloc/realloc | ■ | |
4 | jemalloc/mallctl | ■ |
●: 表示特性不稳定,风险高
▲: 表示特性基本可用,遗留少量问题
■: 表示特性质量良好
4.2 兼容性测试结论
兼容性测试,主要排查动态依赖库变更、rpm的ABI变更、以及头文件变更情况,jemalloc新版本无动态依赖库的变更,rpm的ABI也无变更,唯一变更点是软件版本号,无兼容性问题。
测试项 | 对比结果 |
---|---|
动态依赖库 | 未变更 |
ABI | 未变更 |
头文件 | 未变更 |
4.3 DFX专项测试结论
4.3.1 性能测试结论
指标大项 | 指标小项 | 指标值 | 测试结论 |
---|---|---|---|
业务指标 | 申请内存响应时间 | 17.34ns | jemalloc5.3.0 平均耗时为15.11ns,耗时更少 |
业务指标 | 释放内存响应时间 | 17.44ns | jemalloc5.3.0 平均耗时为15.09ns,耗时更少 |
业务指标 | ops | 80000 | 基于jemalloc5.3.0的redis,与指标项持平 |
资源指标 | 内存占用 | 284MB | 基于jemalloc5.3.0的redis,与指标项持平 |
4.3.2 可靠性/韧性测试结论
jemalloc为基础软件库,非服务类软件。采用基于jemalloc的开源软件redis进行压测。压测结果与旧版本持平。测试统计见6.3章节
测试类型 | 测试内容 | 测试结论 |
---|---|---|
可靠性 | 基于数据类型压测 | ops结果与旧版本持平 |
4.3.3 安全测试结论
针对jemalloc进行二进制包文件扫描。
测试类型 | 测试内容 | 测试结论 |
---|---|---|
开源软件漏洞检查 | 漏洞扫描 | 问题个数0 |
开源软件漏洞检查 | 漏洞级别 | 问题个数0 |
开源软件编译选项检查 | 安全编译项 | 问题个数0 |
开源软件配置项检查接口 | 鉴权会话管理 | 问题个数0 |
关键信息泄露检查 | 弱口令 | 问题个数0 |
关键信息泄露检查 | 硬编码密码 | 问题个数0 |
关键信息泄露检查 | 硬编码密钥 | 问题个数0 |
关键信息泄露检查 | url | 问题个数0 |
关键信息泄露检查 | ip地址 | 问题个数0 |
关键信息泄露检查 | 问题个数0 | |
经典代码问题检查 | 不安全函数检查 | 问题个数0 |
经典代码问题检查 | 安全函数检查 | 问题个数0 |
经典代码问题检查 | 自定义风险函数检查 | 问题个数0 |
经典代码问题检查 | 自定义安全函数检查 | 问题个数0 |
4.4 资料测试结论
无,jemalloc新版本无新增资料。
测试类型 | 测试内容 | 测试结论 |
---|---|---|
/ | / | / |
4.5 其他测试结论
测试类型 | 测试内容 | 测试结论 |
---|---|---|
/ | / | / |
5 测试执行
5.1 测试执行统计数据
本节内容根据测试用例及实际执行情况进行特性整体测试的统计,可根据第二章的测试轮次分开进行统计说明。
版本名称 | 测试用例数 | 用例执行结果 | 发现问题单数 |
---|---|---|---|
jemalloc-5.3.0 | 基本功能测试679 | 通过679,跳过0,失败0 | 0 |
jemalloc-5.3.0 | 集成测试438 | 通过438,跳过0,失败0 | 0 |
jemalloc-5.3.0 | 性能压力测试15 | 通过15,跳过0,失败0 | 0 |
数据项说明:
测试用例数--到本测试活动结束时,所有可用测试用例数;
发现问题单数--本测试活动总共发现的问题单数。
5.2 后续测试建议
后续测试需要关注点(可选)
6 附件
6.1 jemalloc 基本功能测试结果
测试套 | 通过 | 跳过 | 失败 |
---|---|---|---|
unit | 75 | 0 | 0 |
integration | 17 | 0 | 0 |
stress | 6 | 0 | 0 |
=== test/unit === Test suite summary: pass: 75/75, skip: 0/75, fail: 0/75
=== test/integration === Test suite summary: pass: 17/17, skip: 0/17, fail: 0/17
=== test/stress === Test suite summary: pass: 6/6, skip: 0/6, fail: 0/6
6.2 采用jemalloc开源自带压测代码测试,针对每一项进行压测。
6.2.1 x86环境下
版本号 | 压测项 | 迭代次数 | 压测耗时 | 测试结论 |
---|---|---|---|---|
jemalloc-5.2.1 | malloc | 1千万次 | 1734000us | / |
jemalloc-5.3.0 | malloc | 1千万次 | 1511000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降12.8% |
jemalloc-5.2.1 | mallocx | 1千万次 | 1863000us | / |
jemalloc-5.3.0 | mallocx | 1千万次 | 1508000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降19% |
jemalloc-5.2.1 | free | 1千万次 | 1744000us | / |
jemalloc-5.3.0 | free | 1千万次 | 1509000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降13.4% |
jemalloc-5.2.1 | dallocx | 1千万次 | 1906000us | / |
jemalloc-5.3.0 | dallocx | 1千万次 | 1626000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降14.6% |
jemalloc-5.2.1 | sdallocx | 1千万次 | 1762000us | / |
jemalloc-5.3.0 | sdallocx | 1千万次 | 886000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降49.7% |
6.2.2 arm环境下
版本号 | 压测项 | 迭代次数 | 压测耗时 | 测试结论 |
---|---|---|---|---|
jemalloc-5.2.1 | malloc | 1千万次 | 2948000us | / |
jemalloc-5.3.0 | malloc | 1千万次 | 2348000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降20.3% |
jemalloc-5.2.1 | mallocx | 1千万次 | 3420000us | / |
jemalloc-5.3.0 | mallocx | 1千万次 | 3324000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降2% |
jemalloc-5.2.1 | free | 1千万次 | 2956000us | / |
jemalloc-5.3.0 | free | 1千万次 | 2352000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降20.4% |
jemalloc-5.2.1 | dallocx | 1千万次 | 3104000us | / |
jemalloc-5.3.0 | dallocx | 1千万次 | 2728000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降12.1% |
jemalloc-5.2.1 | sdallocx | 1千万次 | 3672000us | / |
jemalloc-5.3.0 | sdallocx | 1千万次 | 3104000us | 新版本迭代1千万次压测,最终耗时比5.2.1下降15.4% |
6.3 采用jemalloc自带压测代码检查内存占用
版本号 | 压力测试套 | rss(bytes) | virt(bytes) |
---|---|---|---|
jemalloc5.2.1 | hookbench | 2260 | 38472 |
jemalloc5.3.0 | hookbench | 2344 | 38656 |
jemalloc5.2.1 | microbench | 2120 | 46852 |
jemalloc5.3.0 | microbench | 2228 | 46664 |
6.4 jemalloc兼容性测试
rpm | old_rpm | new_rpm | ananlyse | compare_result |
---|---|---|---|---|
jemalloc-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | header | diff(版本号变更) |
jemalloc-devel-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | header | diff(版本号变更) |
jemalloc-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | file | same |
jemalloc-devel-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | file | same |
jemalloc-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | cmd | same |
jemalloc-devel-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | cmd | same |
jemalloc-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | lib | same |
jemalloc-aarch64.rpm | jemalloc5.2.1 | jemalloc5.3.0 | symbol | diff(版本号变更) |