跳到主要内容

Milvus 2.2 Benchmark 测试报告

本报告展示了 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% 以上,在独立模式下增加了 75% 以上。
  • Milvus 2.2.0 具有令人印象深刻的向上扩展和向外扩展能力:
    • 将 CPU 核心数从 8 个扩展到 32 个时,QPS 线性增加。
    • 将 Querynode 副本从 1 个扩展到 8 个时,QPS 线性增加。

术语

点击查看测试中使用的术语详细信息
术语描述
nq一次搜索请求中要搜索的向量数量
topk搜索请求中每个向量(在 nq 中)要检索的最近向量数量
efHNSW 索引的特定搜索参数
RT从发送请求到接收响应的响应时间
QPS每秒成功处理的搜索请求数量

测试环境

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

硬件环境

硬件规格
CPUIntel(R) Xeon(R) 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)在每个节点的本地 SSD 上存储数据。
  • 搜索请求通过 Milvus GO SDK 发送到 Milvus 实例。

数据集

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

测试流程

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

测试结果

Milvus 2.2.0 与 Milvus 2.1.0 对比

集群

服务器配置(集群)
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

集群搜索性能

独立

服务器配置(独立)
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

独立搜索性能

Milvus 2.2.0 向上扩展

扩展一个 Querynode 中的 CPU 核心数以检查向上扩展能力。

服务器配置(集群)
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 核心数并发数QPSRT(TP99) / msRT(TP50) / msfail/s
85007153127830
123001024863240
166001413585420
326002028163280

按 Querynode CPU 核心数的搜索性能

Milvus 2.2.0 向外扩展

扩展更多带有更多 Querynode 的副本以检查向外扩展能力。

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

服务器配置(集群)
queryNode:
replicas: 1 / 2 / 4 / 8
resources:
limits:
cpu: "8.0"
memory: 8Gi
requests:
cpu: "8.0"
memory: 8Gi
副本数并发数QPSRT(TP99) / msRT(TP50) / msfail/s
15007153127830
250015903105270
480019281109400
812003065593380

按 Querynode 副本数的搜索性能

下一步

  • 尝试按照此指南自行执行 Milvus 2.2.0 基准测试,但您应该在此指南中使用 Milvus 2.2 和 Pymilvus 2.2。