跳到主要内容
版本:v2.6.x

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 为单位)的最近向量数
efHNSW 索引特有的搜索参数
RT从发送请求到接收响应的响应时间
QPS每秒成功处理的搜索请求数

测试环境

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

硬件环境

硬件环境规格
CPU英特尔® 至强® Gold 6226R CPU @ 2.90GHz
内存16*/32 GB RDIMM,3200 MT/s
SSDSATA 6 Gbps

软件环境

软件环境版本
Milvusv2.2.0
Milvus GO SDKv2.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. 加载 Collection。
  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

搜索性能

MilvusQPSRT(TP99) / msRT(TP50) / msfail/s
2.1.0690459280
2.2.01024863240

Cluster search performance

Milvus Standalone

Milvus Standalone 服务器配置
YAML
standalone:
replicas: 1
resources:
limits:
cpu: "12.0"
memory: 16Gi
requests:
cpu: "12.0"
memory: 16Gi

搜索性能

MilvusQPSRT(TP99) / msRT(TP50) / msfail/s
2.1.04287104760
2.2.07522127790

Standalone search performance

Milvus 2.2.0 纵向扩展(Scale-up)

增加单个 QueryNode 的 CPU 核数,以评估纵向扩展能力。

服务器配置(集群)
YAML
# Run separate tests with cpu set to "8.0", "12.0", "16.0", or "32.0".
queryNode:
replicas: 1
resources:
limits:
cpu: "8.0"
memory: 8Gi
requests:
cpu: "8.0"
memory: 8Gi

搜索性能

CPU 内核并发数QPSRT(TP99) / msRT(TP50) / msfail/s
85007153127830
123001024863240
166001413585420
326002028163280

Search performance by Querynode CPU cores

Milvus 2.2.0 横向扩展(Scale-out)

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

说明

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

服务器配置(集群)
YAML
# Run separate tests with replicas set to 1, 2, 4, or 8.
queryNode:
replicas: 1
resources:
limits:
cpu: "8.0"
memory: 8Gi
requests:
cpu: "8.0"
memory: 8Gi
副本并发数QPSRT(TP99) / msRT(TP50) / msfail/s
15007153127830
250015903105270
480019281109400
812003065593380

Search performance by Querynode replicas

下一步

  • 请参照 本指南,尝试自行执行 Milvus 2.2.0 基准测试,只是在本指南中应改用 Milvus 2.2 和 PyMilvus 2.2。