You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

6.2 KiB

Milvus 2.2 基准测试报告

本报告展示了 Milvus 2.2.0 的主要测试结果,旨在介绍 Milvus 2.2.0 的搜索性能,特别是扩展和缩小的能力。

Milvus Performance Evaluation 2023

我们最近对 Milvus 2.2.3 进行了一次基准测试,主要结果如下:

  • 搜索延迟降低 2.5 倍
  • QPS 提高 4.5 倍
  • 十亿规模的相似性搜索,性能几乎没有下降
  • 使用多个副本时的线性可扩展性

有关详细信息,请参阅本白皮书相关基准测试代码

总结

  • 与 Milvus 2.1 相比,Milvus 2.2.0 的 QPS 在集群模式下提高了 48%,在 Standalone 模式下提高了 75%。
  • Milvus 2.2.0 的扩展和缩小能力令人印象深刻:
    • 当 CPU 内核从 8 个扩展到 32 个时,QPS 呈线性增长。
    • 将 Querynode 复制从 1 个扩展到 8 个时,QPS 呈线性增长。

术语

术语 说明
nq 一次搜索请求中要搜索的向量数量
topk 搜索请求中每个向量(以 nq 为单位)的最近向量数
ef HNSW 索引特有的搜索参数
RT 从发送请求到接收响应的响应时间
QPS 每秒成功处理的搜索请求数

测试环境

所有测试均在以下环境下进行。

硬件环境

硬件环境 规格
中央处理器 英特尔® 至强® Gold 6226R CPU @ 2.90GHz
内存 16*/32 GB RDIMM,3200 MT/s
固态硬盘 SATA 6 Gbps

软件环境

软件环境 版本
Milvus v2.2.0
Milvus GO SDK v2.2.0

部署方案

  • Milvus 实例(单机或集群)通过Helm部署在基于物理机或虚拟机的 Kubernetes 集群上。
  • 不同的测试仅在 CPU 内核数量、内存大小和副本(工作节点)数量上有所不同,这仅适用于 Milvus 集群。
  • 未指定的配置与默认配置相同。
  • Milvus 依赖项(MinIO、Pulsar 和 Etcd)将数据存储在每个节点的本地固态硬盘上。
  • 搜索请求通过Milvus GO SDK 发送到 Milvus 实例。

数据集

测试使用ANN-Benchmarks 的开源数据集 SIFT(128 维)。

测试流程

  1. 使用 Helm 启动 Milvus 实例,并按照每个测试中列出的各自服务器配置。
  2. 通过 Milvus GO SDK 连接到 Milvus 实例并获取相应的测试结果。
  3. 创建一个 Collection。
  4. 插入 100 万个 SIFT 向量。建立 HNSW 索引并配置索引参数,将M 设置为8 ,将efConstruction 设置为200
  5. 加载 Collections。
  6. 使用不同的并发数进行搜索,搜索参数为nq=1, topk=1, ef=64 ,每个并发数的持续时间至少为 1 小时。

测试结果

Milvus 2.2.0 对 Milvus 2.1.0

群集

yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi

搜索性能

Milvus QPS RT(TP99) / ms RT(TP50) / ms 故障/秒
2.1.0 6904 59 28 0
2.2.0 10248 63 24 0

Cluster search performance群集搜索性能

单机

yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi

搜索性能

Milvus QPS RT(TP99) / ms RT(TP50) / ms 故障/秒
2.1.0 4287 104 76 0
2.2.0 7522 127 79 0

Standalone search performance独立搜索性能

Milvus 2.2.0 扩展能力

扩展一个 Querynode 中的 CPU 内核,检查扩展能力。

yaml queryNode: replicas: 1 resources: limits: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi requests: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi

搜索性能

CPU 内核 并发数 QPS RT(TP99) / ms RT(TP50) / ms 故障/秒
8 500 7153 127 83 0
12 300 10248 63 24 0
16 600 14135 85 42 0
32 600 20281 63 28 0

Search performance by Querynode CPU cores按 Querynode CPU 内核分列的搜索性能

Milvus 2.2.0 扩展能力

使用更多 Querynodes 扩展更多副本,以检查扩展能力。

注意:加载 Collections 时,Querynodes 的数量等于replica_number

yaml queryNode: replicas: 1 / 2 / 4 / 8 resources: limits: cpu: "8.0" memory: 8Gi requests: cpu: "8.0" memory: 8Gi

副本 并发数 QPS RT(TP99) / ms RT(TP50) / ms 故障/秒
1 500 7153 127 83 0
2 500 15903 105 27 0
4 800 19281 109 40 0
8 1200 30655 93 38 0

Search performance by Querynode replicas按 Querynode 复制的搜索性能