Ceph 的快取分層效能表現如何?

Ceph 解決方案整合了易於安裝、預先配置的軟體與友善的使用者介面;並提供 Ceph 顧問諮詢、專業服務與無縫更新,同時提供純軟體(software-only)和一站式(turnkey)設備兩種選擇。

Ceph 的快取分層效能表現如何?

Ceph 的快取分層效能表現如何?

介紹 :
在本文中,我們分享一項基準測試,示範如何透過設定以 NVMe 儲存池作為後盾的快取層,來提升 HDD 儲存池的效能。


什麼是 Ceph 快取分層及其運作原理?

Ceph 快取分層允許使用較快的儲存裝置作為較慢裝置的快取。這需要建立一個由快速/高成本的儲存裝置(例如 NVMe SSD)組組成並設定為「快取層」的儲存池;同時,也需要一個由較慢/低成本的裝置(例如 HDD)組成的後端儲存池,這個後端層可以選擇使用糾刪碼(erasure-coded)或較慢的裝置,將其配置為經濟實惠的儲存層。快取層會儲存來自後端層中頻繁存取的資料,並處理客戶端的讀寫請求。快取分層代理程式(cache tiering agent)會根據特定策略,定期將物件從快取層回寫(flushes)或驅逐(evicts)出去。

Ceph 快取分層示範

過去,當使用 SATA SSD 作為快取分層的儲存裝置時,快取分層帶來的效能提升並不顯著。如今,NVMe SSD 的價格相較於幾年前已大幅下降,且其效能遠高於 HDD。我們想知道,若使用 NVMe SSD 作為快取層是否能大幅提升 HDD 池的效能。

為了測試 NVMe 快取層的效能,我們設計並執行了一項測試,以確認快取層是否能提升以 HDD 為基礎的儲存池效能。

叢集設定
NVMe 主機 3台 Ambedded Mars500 Ceph 儲存設備
每台 Mars 500 儲存設備的規格
CPU 1x Ampere Altra Arm 64-Core 3.0 Ghz
記憶體 96 GiB DDR4
網路 2 個連接埠 25Gbps Mellanox ConnectX-6 網卡
OSD 磁碟 8 x Micron 7400 960GB


HDD 主機 3台 Ambedded Mars400 Ceph 儲存設備
每台 Mars 400 儲存設備的規格
CPU 8個節點 Quad-Cores Arm64 1.2 GHz
記憶體 每節點 4 GiB;每台設備 32 GiB
網路 每個節點 2個 2.5Gbps 連接埠。透過機箱內交換器提供 2個 10 Gb 上行鏈路
OSD 磁碟 8 x 6 TB Seagate Exos HDD
Ceph 叢集資訊
  • 24 個基於 NVMe SSD 的 OSD (3 台 Ambedded Mars500 儲存設備)
  • 24 個基於 HDD 的 OSD (3 台 Ambedded Mars400 設備)
  • HDD 與 NVMe 伺服器分屬不同的 CRUSH 根目錄中
測試客戶端
  • 兩台實體伺服器,各配備 2 個 25Gbps 網路介面卡
  • 每台伺服器運行 7 個虛擬機 (VM)
  • 每個虛擬機配備 4 核心和 8 GB 記憶體。
使用 Ambedded UVS Manager 設定快取分層

 1. 使用 HDD OSD 建立基礎儲存池

 2. 使用 NVMe SSD 的 OSD 建立 NVMe 儲存池

 3. 將 NVMe 儲存池加入為 HDD 儲存池的快取層
      預設的快取分層設定::

  1. Cache mode: writeback
  2. hit_set_count = 12
  3. hit_set_period = 14400 sec (4 hours)
  4. target_max_byte = 2 TiB
  5. target_max_objects = 1 million
  6. min_read_recency_for_promote & min_write_recency_for_promote = 2
  7. cache_target_dirty_ratio = 0.4
  8. cache_target_dirty_high_ratio = 0.6
  9. cache_target_full_ratio = 0.8
  10. cache_min_flush_age = 600 sec.
  11. cache_min_evict_age = 1800 sec.

我們在新增快取層前後,對 HDD 儲存池進行測試,並使用多達 14 個客戶端來產生測試負載。每個客戶端都掛載了一個 RBD 進行 fio 測試。測試負載從一個客戶端開始,並在每個測試任務完成後,逐步增加客戶端的數量。每個測試循環持續五分鐘,並由 Jenkins 自動控制。單次測試的效能為所有客戶端結果的總和。在測試快取分層之前,我們向 RBD 寫入資料,直到快取層儲存池的佔用率超過 Ceph 快取目標填滿比例(0.8)為止。

圖表顯示,在加入 NVMe 快取池後,純 HDD 儲存池的效能顯著提升。

在快取層測試期間,我們使用 ceph osd pool stats 指令觀察了儲存池的統計數據。快取池和基礎池都發生了回寫 (flushing)、逐出 (evicting) 和晉升 (promoting) 等活動。我們在快取層測試的不同時間點,擷取了這些儲存池的統計數據。

資料已寫入到快取層
pool cache id 84
 client io 21 MiB/s wr, 0 op/s rd, 5.49k op/s wr

pool mars400_rbd id 86
 nothing is going on

快取正在進行晉升 (promote) 和逐出 (evict)
pool cache id 84
 client io 42 MiB/s wr, 0 op/s rd, 10.79k op/s wr
 cache tier io 179 MiB/s evict, 17 op/s promote

pool mars400_rbd id 86
 client io 0 B/s rd, 1.4 MiB/s wr, 18 op/s rd, 358 op/s wr

快取正在回寫 (flushing)
pool cache id 84
 client io 3.2 GiB/s rd, 830 op/s rd, 0 op/s wr
 cache tier io 238 MiB/s flush, 14 op/s promote, 1 PGs flushing

pool mars400_rbd id 86
 client io 126 MiB/s rd, 232 MiB/s wr, 44 op/s rd, 57 op/s wr

PG 正在逐出 (evicting)
pool cache id 84
 client io 2.6 GiB/s rd, 0 B/s wr, 663 op/s rd, 0 op/s wr
 cache tier io 340 MiB/s flush, 2.7 MiB/s evict, 21 op/s promote, 1 PGs evicting (full)

pool mars400_rbd id 86
 client io 768 MiB/s rd, 344 MiB/s wr, 212 op/s rd, 86 op/s wr

PG 正在回寫 (flushing) ,且客戶端 I/O 直接寫入基礎儲存池。 (客戶端正在寫入資料)
pool cache id 84
 client io 0 B/s wr, 0 op/s rd, 1 op/s wr
 cache tier io 515 MiB/s flush, 7.7 MiB/s evict, 1 PGs flushin

pool mars400_rbd id 86
 client io 613 MiB/s wr, 0 op/s rd, 153 op/s wr

在連續測試結束後,我們讓叢集休息了數小時,並重新進行 4 kB 隨機寫入測試。我們獲得了更好的效能,這是因為快取空間被釋放出來,可用於新的寫入操作。

從本次測試中,我們可以確定使用 NVMe 儲存池作為 HDD 儲存池的快取層,確實能實現顯著的效能提升。

需注意,快取分層的效能無法得到保證。其效能取決於當下的快取命中情況,且在相同的設定與工作負載下重複進行測試,也未必能重現相同的效能。

如果你的應用需要穩定一致的效能,請使用純 NVMe SSD 儲存池。

相關產品
Mars500 NVME 全快閃 Ceph 儲存一體機 - 快閃 Ceph 儲存一體機,配備 8個 NVME OSD,專為高效能使用情境而設計。
Mars500 NVME 全快閃 Ceph 儲存一體機
Mars 500

Mars 500 Ceph 一體機專為滿足高效能雲原生資料儲存需求而設計。它採用最新的 NVMe 快閃技術,提供一站式軟體定義儲存解決方案。 Mars...

細節

Ambedded公司簡介

晨宇創新股份有限公司是台灣一家專業在Ceph 儲存|可擴展的 軟體定義儲存 ( SDS ) 供應商。成立於西元2013年並擁有超過20年的Ceph 儲存設備、Ceph 一站式解決方案、Ceph 專業服務、Ceph 緊急支援、適用於通用伺服器的 Ceph 儲存軟體解決方案套件、S3 物件儲存製造經驗, Ambedded總是可以達到客戶各種品質要求。