Milvus 2.2 基準測試報告
這份報告顯示了Milvus 2.2.0的主要測試結果,目的是提供Milvus 2.2.0的搜尋效能,特別是在擴充和縮小的能力。

摘要
- 與 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
每秒成功處理的搜尋要求數量
測試環境
所有測試都在下列環境下進行。
硬體環境
硬體環境 | 規格 |
---|---|
中央處理器 | Intel® Xeon® 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 核心數量、記憶體大小和副本 (Worker 節點) 數量上有所不同,這僅適用於 Milvus 叢集。
- 未指定的配置與預設配置相同。
- Milvus 依賴 (MinIO、Pulsar 和 Etcd) 將資料儲存在每個節點的本機 SSD 上。
- 搜尋要求透過 MilvusGO SDK 傳送至 Milvus 實體。
資料集
測試使用ANN-Benchmarks 的開放源碼資料集 SIFT (128 維度)。
測試流程
- 使用 Helm 啟動 Milvus 實例,並根據各測試列出的伺服器配置。
- 透過 Milvus GO SDK 連線至 Milvus 實例,並取得相對應的測試結果。
- 建立一個集合。
- 插入 100 萬個 SIFT 向量。建立 HNSW 索引,並透過設定
M
為8
、efConstruction
為200
來設定索引參數。 - 載入資料夾。
- 使用不同的並發數進行搜尋,搜尋參數為
nq=1, topk=1, ef=64
,每個並發數的持續時間至少為 1 小時。
測試結果
Milvus 2.2.0 v.s. 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 |
叢集搜尋效能
單機
伺服器配置(單機)
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 |
獨立搜尋效能
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 |
以 Querynode CPU 核心計算的搜尋效能
Milvus 2.2.0 擴充能力
使用更多 Querynodes 擴充更多副本,以檢查擴充能力。
注意:載入集合時,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 |
依據 Querynode 複製品的搜尋效能
下一步
- 參考本指南,嘗試自行執行 Milvus 2.2.0 基準測試,只是您應該改用本指南中的 Milvus 2.2 和 Pymilvus 2.2。