新手必看:openeuler/sra_test配置文件详解,轻松调整线程数与NUMA参数
2026/7/8 15:18:33 网站建设 项目流程

新手必看: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配置方式:

  1. KBest算法专用参数

    # 在kbest配置文件中 NUMA_ENABLED = false
  2. 多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_fefs
  • 大规模数据:调整batch_sizebatch_mode
  • 精度要求高:增加efsefc

步骤3:优化线程数与NUMA配置

  1. 单NUMA节点测试

    # 使用默认配置 sh test.sh hnsw
  2. 多NUMA节点测试

    # 测试NUMA节点0和1 sh test_multi-numas.sh hnsw sift 0-1
  3. 性能对比分析

    • 比较不同线程数下的性能
    • 分析不同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参数,您可以充分发挥硬件性能,获得最佳的测试结果。记住这些要点:

  1. 线程数:根据CPU核心数和任务类型调整
  2. NUMA配置:利用多NUMA节点提升内存访问效率
  3. 算法参数:根据数据集特点优化
  4. 批量处理:大规模查询时启用批处理模式

现在您已经掌握了openeuler/sra_test配置文件的核心知识,可以开始进行自己的性能测试和优化了!🚀

小贴士:建议在修改配置文件前备份原始文件,这样如果修改后出现问题,可以快速恢复到原始状态。同时,每次只修改一个参数进行测试,这样可以清楚地了解每个参数对性能的影响。

【免费下载链接】sra_testFor testing the Kunpeng SRA feature项目地址: https://gitcode.com/openeuler/sra_test

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询