跳到主要内容

Milvus 2.2基准测试报告

本报告展示了Milvus 2.2.0的主要测试结果。旨在展示Milvus 2.2.0在搜索性能方面的情况,特别是在扩展性能和横向扩展能力方面。

我们最近对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中)的最近向量数量
ef一种特定于HNSW索引的搜索参数
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 实例,并根据每个测试中列出的相应服务器配置连接到 Milvus 实例。
  2. 通过 Milvus GO SDK 连接到 Milvus 实例并获取相应的测试结果。
  3. 创建一个集合。
  4. 插入100万个 SIFT 向量。构建 HNSW 索引,并通过将 M 设置为 8efConstruction 设置为 200 配置索引参数。
  5. 加载集合。
  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) / ms失败率
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) / ms失败率
2.1.04287104760
2.2.07522127790

独立搜索性能

Milvus 2.2.0 单机扩展

扩展一个查询节点的 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) / 毫秒RT(TP50) / 毫秒失败数/s
85007153127830
123001024863240
166001413585420
326002028163280

按查询节点 CPU 核心搜索性能

Milvus 2.2.0 水平扩展

通过增加更多副本和更多查询节点来检查其水平扩展能力。

注意:在加载集合时,查询节点的数量等于replica_number

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

Search performance by Querynode replicas

接下来要做什么

  • 尝试参考此指南自行进行 Milvus 2.2.0 基准测试,不过在该指南中你应该使用 Milvus 2.2 和 Pymilvus 2.2。