新手必看:openeuler/sra_test配置文件详解,轻松调整线程数与NUMA参数
新手必看:openeuler/sra_test配置文件详解,轻松调整线程数与NUMA参数
【免费下载链接】sra_testFor testing the Kunpeng SRA feature项目地址: https://gitcode.com/openeuler/sra_test
前往项目官网免费下载:https://ar.openeuler.org/ar/
想要充分利用openeuler/sra_test框架进行高性能向量检索算法测试吗?作为一款专为鲲鹏SRA特性设计的统一测试框架,openeuler/sra_test提供了灵活的配置选项,让您能够轻松调整线程数与NUMA参数,从而优化算法性能。本文将为您详细解析配置文件的结构和关键参数设置,帮助您快速上手并掌握性能调优技巧。😊
什么是openeuler/sra_test配置文件?
openeuler/sra_test配置文件是框架运行的核心组成部分,它定义了算法参数、运行参数以及测试环境配置。这些配置文件位于项目的configs/目录下,按照不同的算法和数据集进行分类组织。
配置文件采用简单的键值对格式,支持注释(以#开头),易于理解和修改。每个配置文件对应特定的算法和数据集组合,例如configs/hnsw/hnsw_sift-128-euclidean.config就是HNSW算法在sift数据集上的配置文件。
核心配置参数详解
线程数配置:num_threads参数
线程数是影响性能的关键参数之一,它控制着算法并行执行的程度。在openeuler/sra_test中,您可以通过num_threads参数来设置:
# 在配置文件中设置线程数 num_threads = 32调优建议:
- 对于CPU密集型任务,建议设置为物理核心数
- 对于I/O密集型任务,可以适当增加线程数
- 在多NUMA系统中,通常设置为单个NUMA节点的核心数
NUMA参数配置:优化内存访问性能
NUMA(非统一内存访问)是现代多处理器系统中的重要概念。openeuler/sra_test框架提供了两种NUMA配置方式:
KBest算法专用参数:
# 在kbest配置文件中 NUMA_ENABLED = false多NUMA测试脚本: 使用
test_multi-numas.sh脚本可以方便地进行多NUMA节点测试:# 基本用法 sh test_multi-numas.sh hnsw sift 0-1 # 复杂NUMA节点选择 sh test_multi-numas.sh ivfpq glove 0,2,4,7
NUMA配置技巧:
0-1表示选择NUMA节点0到1(包含0和1)0,2,4,7表示选择特定的NUMA节点- 脚本会自动根据选择的NUMA节点调整线程数
配置文件结构解析
算法参数区
每个配置文件的前半部分包含算法特定的参数:
# Faiss HNSW 配置示例 k_f = 16 # 邻居数 efs = 120 # 搜索时的候选集大小 efc = 500 # 构建时的候选集大小 metric = L2 # 距离度量方式(L2或IP)运行参数区
配置文件的后半部分包含运行时的控制参数:
# 运行参数 nloop = 5 # 循环次数 num_threads = 32 # 线程数 top_k = 10 # 返回的最近邻数量 batch_mode = false # 是否启用批处理模式 batch_size = 100 # 批处理大小(当batch_mode=true时生效) save_or_load = save # 保存或加载索引 index_path = indexes/hnsw/sift.faiss # 索引文件路径实际配置示例
示例1:HNSW算法配置
查看configs/hnsw/hnsw_sift-128-euclidean.config文件:
# Faiss HNSW 配置 k_f = 16 efs = 120 efc = 500 metric = L2 nloop = 5 num_threads = 32 top_k = 10 batch_mode = false batch_size = 100 save_or_load = save index_path = indexes/hnsw/sift.faiss示例2:KBest算法配置
查看configs/kbest/kbest_sift-128-euclidean.config文件:
# KBest 配置 k_f = 32 efs = 96 efc = 200 A = 16 graph_opt_iter = 9 metric = L2 init_builder_type = RNNDescent index_type = TSDG consecutive = 20 reorder = 1 level = 0 adding_pref = 23 patience = 32 nloop = 5 num_threads = 80 top_k = 10 NUMA_ENABLED = false batch_mode = false batch_size = 100 index_path = indexes/kbest/sift.kbest save_or_load = save性能调优实战指南
步骤1:确定硬件配置
首先了解您的系统配置:
- CPU核心数
- NUMA节点数量
- 内存大小
步骤2:选择合适的算法配置
根据数据集特点选择算法参数:
- 高维数据:使用较大的
k_f和efs值 - 大规模数据:调整
batch_size和batch_mode - 精度要求高:增加
efs和efc值
步骤3:优化线程数与NUMA配置
单NUMA节点测试:
# 使用默认配置 sh test.sh hnsw多NUMA节点测试:
# 测试NUMA节点0和1 sh test_multi-numas.sh hnsw sift 0-1性能对比分析:
- 比较不同线程数下的性能
- 分析不同NUMA配置下的内存访问效率
- 根据结果调整配置参数
步骤4:监控与调整
使用系统监控工具观察:
- CPU利用率
- 内存带宽
- 缓存命中率 根据监控结果进一步优化配置。
常见问题解答
Q1:如何确定最佳的线程数?
A:从物理核心数开始测试,逐步增加线程数,观察性能变化。当性能不再提升或开始下降时,找到最佳值。
Q2:NUMA_ENABLED参数有什么作用?
A:这是KBest算法特有的参数,用于控制是否启用NUMA感知的内存分配。设置为true可以改善多NUMA系统中的内存访问性能。
Q3:batch_mode和batch_size如何配合使用?
A:当batch_mode = true时,框架会以批处理方式处理查询,batch_size控制每批的大小。这对于大规模查询可以提高缓存效率。
Q4:如何保存和加载索引?
A:通过save_or_load参数控制:
save:构建并保存索引load:加载已保存的索引进行测试
配置文件的组织结构
openeuler/sra_test的配置文件按照以下结构组织:
configs/ ├── hnsw/ # HNSW算法配置 │ ├── hnsw_sift-128-euclidean.config │ ├── hnsw_glove-100-angular.config │ └── ... ├── hnsw_fp16/ # FP16精度的HNSW配置 ├── hnswlib/ # hnswlib算法配置 ├── ivfflat/ # IVFFlat算法配置 ├── ivfpq/ # IVFPQ算法配置 ├── kbest/ # KBest算法配置 └── ...每个目录对应一种算法,文件命名格式为:算法名_数据集名.config。
总结
掌握openeuler/sra_test的配置文件设置是进行高效向量检索测试的关键。通过合理调整线程数和NUMA参数,您可以充分发挥硬件性能,获得最佳的测试结果。记住这些要点:
- 线程数:根据CPU核心数和任务类型调整
- NUMA配置:利用多NUMA节点提升内存访问效率
- 算法参数:根据数据集特点优化
- 批量处理:大规模查询时启用批处理模式
现在您已经掌握了openeuler/sra_test配置文件的核心知识,可以开始进行自己的性能测试和优化了!🚀
小贴士:建议在修改配置文件前备份原始文件,这样如果修改后出现问题,可以快速恢复到原始状态。同时,每次只修改一个参数进行测试,这样可以清楚地了解每个参数对性能的影响。
【免费下载链接】sra_testFor testing the Kunpeng SRA feature项目地址: https://gitcode.com/openeuler/sra_test
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考