幾個 Ceph 性能優化的新方法和思路(2015 SH Ceph Day 參后感)


    一周前,由 Intel 與 Redhat 在10月18聯合舉辦了 Shanghai Ceph Day。在這次會議上,多位專家做了十幾場非常精彩的演講。本文就這些演講中提到的 Ceph性能優化方面的知識和方法,試着就自己的理解做個總結。

0. 常規的 Ceph 性能優化方法

(1). 硬件層面

  • 硬件規划:CPU、內存、網絡
  • SSD選擇:使用 SSD 作為日志存儲
  • BIOS設置:打開超線程(HT)、關閉節能、關閉 NUMA 等

(2). 軟件層面

  • Linux OS:MTU、read_ahead 等
  • Ceph Configurations 和 PG Number 調整:使用 PG 計算公式(Total PGs = (Total_number_of_OSD * 100) / max_replication_count)計算。
  • CRUSH Map

更多信息,可以參考下面的文章:

1. 使用分層的緩存層 - Tiered Cache

  顯然這不是一個 Ceph 的新特性,在會議上有這方面的專家詳細地介紹了該特性的原理及用法,以及與糾錯碼方式結合的細節。

簡單概括:

  • 每一個緩存層次(tiered cache)使用一個 RADOS pool,其中 cache pool 必須是拷貝(replicated)類型,而 backing pool 可以是拷貝類型也可以是糾錯碼類型。
  • 在不同的緩存層次,使用不同的硬件介質,cache pool 使用的介質必須比 backing pool 使用的介質速度快:比如,在 backing pool 使用一般的存儲介質,比如常規的HDD或者 SATA SDD;在 cache pool 使用快速介質,比如 PCIe SDD。
  • 每一個 tiered cache 使用自己的 CRUSH rules,使得數據會被寫入到指定的不同存儲介質。
  • librados 內在支持 tiered cache,大多數情況下它會知道客戶端數據需要被放到哪一層,因此不需要在 RDB,CephFS,RGW 客戶端上做改動。
  • OSD 獨立地處理數據在兩個層次之間的流動:promotion(HDD->SDD)和 eviction(SDD -> HDD),但是,這種數據流動是代價昂貴(expensive)和耗時的(take long time to “warm up”)。

2. 使用更好的 SSD - Intel NVM Express (NVMe) SSD

     在 Ceph 集群中,往往使用 SSD 來作為 Journal(日志)和 Caching(緩存)介質,來提高集群的性能。下圖中,使用 SSD 作為 Journal 的集群比全 HDD 集群的 64K 順序寫速度提高了 1.5 倍,而 4K 隨機寫速度提高了 32 倍。

   而Journal 和 OSD 使用的 SSD 分開與兩者使用同一塊SSD,還可以提高性能。下圖中,兩者放在同一個 SATA SSD 上,性能比分開兩塊 SSD (Journal 使用 PCIe SSD,OSD 使用 SATA SSD),64K 順序寫速度下降了 40%,而 4K 隨機寫速度下降了 13%。

    因此,更先進的 SSD 自然能更加提高Ceph 集群的性能。SSD 發展到現在,其介質(顆粒)基本經過了三代,自然是一代比一代先進,具體表現在密度更高(容量更大)和讀寫數據更快。目前,最先進的就是 Intel NVMe SSD,它的特點如下:

  • 為 PCI-e 驅動器定制的標准化的軟件接口
  • 為 SSD 定制(別的是為 PCIe 所做的)
  • SSD Journal : HDD OSD 比例可以從常規的 1:5 提高到 1:20
  • 對全 SSD 集群來說,全 NVMe SSD 磁盤Ceph 集群自然性能最好,但是它造價太高,而且性能往往會受限於網卡/網絡帶寬;所以在全SSD環境中,建議的配置是使用 NVMe SSD 做 Journal 而使用常規 SSD 做 OSD 磁盤。

同時,Intel SSD 還可以結合 Intel Cache Acceleration Software 軟件使用,它可以智能地根據數據的特性,將數據放到SSD或者HDD:

測試:

  • 測試配置:使用 Intel NVMe SSD 做 Cache,使用 Intel CAS Linux 3.0 with hinting feature (今年年底將發布)
  • 測試結果:5% 的 cache,使得吞吐量(ThroughOutput)提交了一倍,延遲(Latency)降低了一半

3. 使用更好的網絡設備 - Mellanox 網卡和交換機等

3.1 更高帶寬更低延遲的網卡設備

    Mellanox 是一家總部在以色列的公司,全球約 1900 名員工,專注高端網絡設備,2014 年revenue 為 ¥463.6M 。(今天正好在水木BBS上看到該公司在中國的分公司待遇也是非常好)。其主要觀點和產品:

  • Ceph 的 Scale Out 特性要求用於 replicaiton、sharing 和 metadata (文件)的網絡吞吐量更高、延遲更低
  • 目前 10 GbE(萬兆以太網絡) 已經不能滿足高性能Ceph 集群的要求(基本上 20個 SSD 以上的集群就不能滿足了),已經開始全面進入 25, 50, 100 GbE 時代。目前,25GbE 性價比比較高。
  • 大部分網絡設備公司使用的是高通的芯片,而 Mellanox 使用自研的芯片,其延遲(latency)是業界最低的(220ns)
  • Ceph 高速集群需要使用兩個網絡:public network 用於客戶端訪問,Cluster network 用於 heartbeat、replication、recovery 和 re-balancing。
  • 目前 Ceph 集群廣泛采用 SSD, 而快速的存儲設備就需要快速的網絡設備

實際測試:

(1)測試環境:Cluster network 使用 40GbE 交換機,Public network 分布使用 10 GbE 和 40GbE 設備做對比

(2)測試結果:結果顯示,使用 40GbE 設備的集群的吞吐量是使用 10 GbE 集群的 2.5 倍,IOPS 則提高了 15%。

    目前,已經有部分公司使用該公司的網絡設備來生產全SSD Ceph 服務器,比如,SanDisk 公司的 InfiniFlash 就使用了該公司的 40GbE 網卡、2個 Dell R720 服務器作為 OSD 節點、512 TB SSD,它的總吞吐量達到 71.6 Gb/s,還有富士通和Monash 大學。

3.2 RDMA 技術

    傳統上,訪問硬盤存儲需要幾十毫秒,而網絡和協議棧需要幾百微妙。這時期,往往使用 1Gb/s 的網絡帶寬,使用 SCSI 協議訪問本地存儲,使用 iSCSI 訪問遠端存儲。而在使用 SSD 后,訪問本地存儲的耗時大幅下降到幾百微秒,因此,如果網絡和協議棧不同樣提高的話,它們將成為性能瓶頸。這意味着,網絡需要更好的帶寬,比如40Gb/s  甚至 100Gb/s;依然使用 iSCSI 訪問遠端存儲,但是 TCP 已經不夠用了,這時 RDMA 技術應運而生。RDMA 的全稱是 Remote Direct Memory Access,就是為了解決網絡傳輸中服務器端數據處理的延遲而產生的。它是通過網絡把資料直接傳入計算機的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響,這樣就不需要用到多少計算機的處理功能.它消除了外部存儲器復制和文本交換操作,因而能騰出總線空間和CPU 周期用於改進應用系統性能. 通用的做法需由系統先對傳入的信息進行分析與標記,然后再存儲到正確的區域。

 

   這種技術上,Mellanox  是業界領先者。它通過 Bypass Kenerl 和 Protocol Offload 的實現,提供高帶寬、低CPU占用和低延遲。目前,該公司在 Ceph 中實現了 XioMessager,使得Ceph 消息不走 TCP 而走 RDMA,從而得以提高集群性能,該實現在 Ceph Hammer 版本中提供。

    更多信息,可以參考:

http://www.mellanox.com/related-docs/solutions/ppt_ceph_mellanox_ceph_day.pdf

http://ir.mellanox.com/releasedetail.cfm?ReleaseID=919461

What is RDMA?

Mellanox Benchmarks Ceph on 100Gb Ethernet

RDMA 百度百科

<2015/11/26 更新>

之前不熟悉這個公司,一個原因是其名字實在太長太難記了。今天看到西瓜哥的微信,才發現這個公司的Infiniband 交換機和 HBA 卡在美國數據中心里面的領導地位。唯一能和它競爭的就是Intel。

4. 使用更好的軟件 - Intel SPDK 相關技術

4.1 Mid-Tier Cache 方案

    該方案在客戶端應用和 Ceph 集群之間添加一個緩存層,使得客戶端的訪問性能得以提高。該層的特點:

  • 對 Ceph 客戶端提供 iSCSI/NVMF/NFS 等協議支持;
  • 使用兩個或者多個節點提高可靠性;
  • 添加了Cache,提高訪問速度
  • 使用 write log 保證多節點之間數據一致性
  • 使用 RBD 連接后端Ceph集群

4.2 使用 Intel DPDK 和 UNS 技術

    Intel 使用該技術,在用戶空間(user space)實現了全 DPDK 網卡及驅動、TCP/IP協議棧(UNS)、 iSCSI Target,以及 NVMe 驅動,來提高Ceph的 iSCSI 訪問性能。好處:

  • 與 Linux*-IO Target (LIO) 相比,其 CPU overhead 僅為 1/7。
  • 用戶空間的 NVMe 驅動比內核空間的 VNMe 驅動的 CPU 占用少 90%

   該方案的一大特點是使用用戶態網卡,為了避免和內核態的網卡沖突,在實際配置中,可以通過 SRIOV 技術,將物理網卡虛擬出多個虛擬網卡,在分配給應用比如OSD。通過完整地使用用戶態技術,避免了對內核版本的依賴。

  目前,Intel 提供 Intel DPDK、UNS 、優化后的 Storage 棧作為參考性方案,使用的話需要和 Intel 簽訂使用協議。用戶態NVMe驅動已經開源。

4.3  CPU 數據存放加速 - ISA-L 技術

    該代碼庫(code libaray)使用 Intel E5-2600/2400 和 Atom C2000 product family CPU 的新指令集來實現相應算法,最大化地利用CPU,大大提高了數據存取速度,但是,目前只支持單核 X64 志強和 Atom CPU。在下面的例子中,EC 速度得到幾十倍提高,總體成本減少了百分之25到30.

5. 使用系統的工具和方法 - Ceph 性能測試和調優工具匯總

本次會議上,還發布了若干Ceph 性能測試和調優工具。

5.1 Intel CeTune

Intel的該工具可以用來部署、測試、分析和調優(deploy, benchmark, analyze and tuning)Ceph 集群,目前它已經被開源,代碼 在這里。主要功能包括:

  • 用戶可以對 CeTune 進行配置,使用其 WebUI
  • 部署模塊:使用 CeTune Cli 或者 GUI 部署 Ceph
  • 性能測試模塊:支持 qemurbd, fiorbd, cosbench 等做性能測試
  • 分析模塊:iostat, sar, interrupt, performance counter 等分析工具
  • 報告視圖:支持配置下載、圖標視圖

5.2 常見的性能測試和調優工具

Ceph 軟件棧(可能的性能故障點和調優點):

可視性性能相關工具匯總:

Benchmarking 工具匯總:

調優工具匯總:

6. 綜合評價  

    上面的幾種方法,與傳統的性能優化方法相比,部分具有其創新性,其中,

  • 更好的硬件,包括SSD和網絡設備,自然能帶來更好的性能,但是成本也相應增加,而且帶來的性能優化幅度具有不一致性,因此,需要在應用場景、成本、優化效果之間做綜合權衡;
  • 更好的軟件,目前大都還沒有開源,而且大都還處於測試狀態,離在生產環境中使用尚有距離,而且都和 Intel 的硬件緊密綁定;
  • 更全面的方法,則是廣大 Ceph 專業人員需要認真學習、使用到的,在平時的使用中能夠更高效的定位性能問題並找到解決方法;
  • Intel 在 Ceph 上的投入非常大,客戶如果有Ceph集群性能問題,還可以把相關數據發給他們,他們會提供相應建議。

 

注:以上所有內容皆來自於本次會議上展示的資料以及會后發送的資料。如有內容不合適在本文發布,請與本人聯系。再次感謝 Intel 和 RedHat 舉辦本次會議。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM