基准测试(benchmark)

Milvus 2.2.0的基准测试

本报告展示了Milvus 2.2.0的主要测试结果。旨在提供Milvus 2.2.0的搜索性能图片,特别是在可扩展性方面。

我们最近对Milvus 2.2.3进行了基准测试,并获得了以下主要发现:

  • 搜索延迟降低了2.5倍
  • QPS增加了4.5倍
  • 十亿级别相似度搜索性能微弱下降
  • 使用多个副本时呈线性可伸缩性

详情请参考此白皮书 (opens in a new tab)相关基准测试代码 (opens in a new tab)

总结

  • 与Milvus 2.1相比,在群集模式下,Milvus 2.2.0的QPS增加了48%以上,在独立模式下增加了75%以上。
  • Milvus 2.2.0具有令人印象深刻的扩展和扩展能力:
    • 将CPU核心从8个扩展到32个时,QPS线性增加。
    • 将Querynode副本从1个扩展到8个时,QPS线性增加。

术语

参数描述选项
metric用于计算的度量类型。对于浮点向量:* L2 (欧几里得距离) * IP (内积)

点此查看测试所使用术语的详细信息

术语描述
nq在一个搜索请求中要搜索的向量的数量
topk在一个搜索请求中为每个向量(在nq内)检索的最近向量的数量
ef一个特定于HNSW索引 (opens in a new tab)的搜索参数
RT从发送请求到接收响应所需的响应时间
QPS每秒成功处理的搜索请求数

测试环境

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

硬件环境

HardwareSpecification
CPUIntel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz
Memory16*32 GB RDIMM, 3200 MT/s
SSDSATA 6 Gbps

Software environment

SoftwareVersion
Milvusv2.2.0
Milvus GO SDKv2.2.0

部署方案

  • Milvus实例(独立或集群)通过Helm (opens in a new tab)在支持物理或虚拟机的Kubernetes集群上部署。

  • 不同的测试仅在CPU核心数、内存大小和副本数(Worker节点数)方面有所变化,仅适用于Milvus集群。

  • 未指定的配置与默认配置 (opens in a new tab)相同。

  • Milvus 依赖项(MinIO、Pulsar 和 Etcd)在每个节点的本地 SSD 上存储数据。

  • 通过Milvus GO SDK (opens in a new tab)将搜索请求发送到 Milvus 实例。

数据集

测试使用ANN-Benchmarks (opens in a new tab)开源数据集SIFT(128维度)。

测试流程

  1. 使用相应的服务器配置通过Helm启动Milvus实例。
  2. 通过Milvus GO SDK连接至Milvus实例并获取相应的测试结果。
  3. 创建一个集合。
  4. 插入100万个SIFT向量。使用HNSW索引并将索引参数配置为将 M 设为 8,将 efConstruction 设为 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) / msfail/s
2.1.0690459280
2.2.01024863240

Cluster search performance

单机版

服务器配置(独立版本)

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

Search performance

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

Standalone search performance

Milvus 2.2.0 Scale-up

扩展一个Querynode的CPU核心,以检查其扩展能力。

Server configurations (cluster)

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 coresConcurrent NumberQPSRT(TP99) / msRT(TP50) / msfail/s
85007153127830
123001024863240
166001413585420
326002028163280

Search performance by Querynode CPU cores

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

接下来的步骤