關(guān)注微信公眾號(hào)
創(chuàng)頭條企服版APP
業(yè)界共識(shí),網(wǎng)絡(luò)層是分布式存儲(chǔ) “性能木桶的最短板”。在存儲(chǔ)領(lǐng)域的概念中,一般有兩張網(wǎng)絡(luò)——用戶應(yīng)用與存儲(chǔ)對(duì)接的“接入網(wǎng)絡(luò)”和存儲(chǔ)系統(tǒng)內(nèi)部交換數(shù)據(jù)的“數(shù)據(jù)分布網(wǎng)絡(luò)”。傳統(tǒng)存儲(chǔ)的“數(shù)據(jù)分布網(wǎng)絡(luò)”通常用SAS總線或Infiniband網(wǎng)絡(luò)實(shí)現(xiàn),犧牲的是水平擴(kuò)展能力和通用硬件特性,換來(lái)較低的時(shí)延和相對(duì)較少的中央處理器負(fù)擔(dān)。而在主流的分布式存儲(chǔ)系統(tǒng)中,為了整個(gè)集群的硬件通用一致性,和接入部分一樣,通常采用基于TCP/IP的以太網(wǎng)進(jìn)行數(shù)據(jù)分布工作。基于Linux內(nèi)核的通用TCP/IP協(xié)議棧在10Ge以上的高帶寬條件下,面對(duì)大量的數(shù)據(jù)交換工作,性能和資源利用率兩方面都難令人滿意。
另一方面,TCP/IP網(wǎng)絡(luò)協(xié)議本身是一個(gè)復(fù)雜龐大的標(biāo)準(zhǔn),通用的TCP/IP實(shí)現(xiàn)通常是一個(gè)“謙遜”的方式進(jìn)行包收發(fā),使得不管在手機(jī),終端,WAN下都有較好表現(xiàn),但是在目前數(shù)據(jù)中心網(wǎng)絡(luò)越來(lái)越快的背景下,特別是存儲(chǔ)后端速度飛速提高下,通用TCP/IP棧已經(jīng)很難滿足需求。那么是不是意味著在兼容性和性能兩方面一定要進(jìn)行取舍?
DPDK是Intel、6WIND、CalsoftLabs、Tieto等公司應(yīng)對(duì)這一問(wèn)題的解決方案[1]。在x86架構(gòu)下,處理數(shù)據(jù)包的傳統(tǒng)方式是CPU中斷方式,即網(wǎng)卡驅(qū)動(dòng)接收到數(shù)據(jù)包后通過(guò)中斷通知CPU處理,然后由CPU拷貝數(shù)據(jù)并交給協(xié)議棧。在數(shù)據(jù)量大時(shí),這種方式會(huì)產(chǎn)生大量CPU中斷,導(dǎo)致CPU無(wú)法運(yùn)行其他程序。而DPDK則采用輪詢方式實(shí)現(xiàn)數(shù)據(jù)包處理過(guò)程:DPDK重載了網(wǎng)卡驅(qū)動(dòng),該驅(qū)動(dòng)在收到數(shù)據(jù)包后不中斷通知CPU,而是將數(shù)據(jù)包通過(guò)零拷貝技術(shù)存入內(nèi)存,這時(shí)應(yīng)用層程序就可以通過(guò)DPDK提供的接口,直接從內(nèi)存讀取數(shù)據(jù)包。這種處理方式節(jié)省了CPU中斷時(shí)間、內(nèi)存拷貝時(shí)間,并向應(yīng)用層提供了簡(jiǎn)單易行且高效的數(shù)據(jù)包處理機(jī)制,使得網(wǎng)絡(luò)應(yīng)用的開(kāi)發(fā)更加方便[2]。

DPDK技術(shù)最初為Intel公司貢獻(xiàn),于2013年開(kāi)源。DPDK可與Intel、Mellanox等廠商的高速以太網(wǎng)卡協(xié)同運(yùn)行,使得在x86平臺(tái)上構(gòu)建和ASIC效能相當(dāng)?shù)木W(wǎng)絡(luò)模塊成為可能,因此,在SDN/NFV領(lǐng)域,DPDK被認(rèn)為是關(guān)鍵的開(kāi)源技術(shù)之一。

為了推進(jìn)Ceph存儲(chǔ)系統(tǒng)中兩個(gè)網(wǎng)絡(luò)的融合化,發(fā)揮通用硬件潛力,XSKY[3]自從去年底開(kāi)始嘗試?yán)肈PDK實(shí)現(xiàn)數(shù)據(jù)客戶端與OSD之間的網(wǎng)絡(luò)通信,以及OSD之間數(shù)據(jù)復(fù)制的網(wǎng)絡(luò)通信,充分利用DPDK的緩存管理、無(wú)鎖隊(duì)列與用戶態(tài)輪詢式網(wǎng)卡驅(qū)動(dòng),在x86通用平臺(tái)和標(biāo)準(zhǔn)IP交換網(wǎng)絡(luò)下將數(shù)據(jù)分布網(wǎng)絡(luò)的時(shí)延降到可與傳統(tǒng)存儲(chǔ)系統(tǒng)相匹敵的水平。

在 Ceph Jewel版啟用的AsyncMessenger 新網(wǎng)絡(luò)框架中會(huì)支持插件式網(wǎng)絡(luò)后端,如默認(rèn)的KernelTCP/IP,DPDK Userspace TCP/IP[5] 和未來(lái)的Infiniband/RDMA網(wǎng)絡(luò)。AsyncMessenger實(shí)現(xiàn)同一個(gè)網(wǎng)絡(luò)會(huì)話處理層面向不同的網(wǎng)絡(luò)設(shè)備和后端。新的Userspace TCP/IP[4]棧會(huì)最小化TCP的損耗,實(shí)現(xiàn)對(duì)CPU核的負(fù)載分區(qū)。結(jié)合運(yùn)行于SPDK NVMe驅(qū)動(dòng)BlueStore,最大化DPDK的資源調(diào)配優(yōu)勢(shì),實(shí)現(xiàn)端到端的無(wú)鎖調(diào)度和內(nèi)存零拷貝。
根據(jù)最近使用ceph_perf_msgr_server/ceph_perf_msgr_client在原型代碼上的測(cè)試[5](相當(dāng)于Linux中的iperf 工具,進(jìn)行在Ceph網(wǎng)絡(luò)框架上的消息傳輸壓測(cè)),如果采用標(biāo)準(zhǔn)的Linux內(nèi)核TCP/IP棧,IO發(fā)起者和遠(yuǎn)端OSD組件間的PingPong時(shí)延大概在100μs左右;使用DPDK優(yōu)化的網(wǎng)絡(luò)協(xié)議棧,這個(gè)數(shù)值降至25~30μs,更加接近IB-RDMA協(xié)議棧下5~8μs的水平。可以預(yù)見(jiàn),這一優(yōu)化必將使通用硬件上的Ceph分布式存儲(chǔ)系統(tǒng)的網(wǎng)絡(luò)層瓶頸得到又一次突破,以便適應(yīng)更加普遍的OLTP應(yīng)用場(chǎng)景。
下圖中的時(shí)延測(cè)試數(shù)據(jù)包括Message Encode/Decode,F(xiàn)ast Dispatch和整個(gè)Messenger會(huì)話邏輯,這部分固有延遲時(shí)間占據(jù)1/3左右。

測(cè)試環(huán)境在兩個(gè)物理機(jī)之間使用Intel 82599ES芯片的萬(wàn)兆網(wǎng)卡,開(kāi)啟了以下硬件Offload 技術(shù):
1.????RX/TX TCP Checksum Offload
2.????RX/TX IP Checksum Offload
3.????TX TCP Segmentation Offload
4.????TX VLAN Tag Insert
5.????RX RSS
6.????RX VLAN Stripping
7.????HW CRC Stripping
8.????RX TCP Large Receive Offload
9.????Hardware Flow Control
該測(cè)試同樣適用用于Mellanox MT27710 ConnectX-4 Lx。
?
在業(yè)界利用專用硬件設(shè)備如高速網(wǎng)卡,高速SSD和FPGA優(yōu)化方案層出不窮的背景下,用通用和開(kāi)放架構(gòu)解決分布式存儲(chǔ)性能問(wèn)題仍然是一個(gè)值得嘗試的方向。軟件定義存儲(chǔ)不僅僅是在API,控制面提供靈活性,更應(yīng)該在數(shù)據(jù)面提供開(kāi)放、通用且統(tǒng)一的存儲(chǔ)服務(wù)。網(wǎng)絡(luò)與硬盤(pán)性能一直是制約存儲(chǔ)軟件化的關(guān)鍵因素。而現(xiàn)在,借助于開(kāi)放的DPDK、SPDK對(duì)于硬件能力和豐富特性的抽象,我們希望在兼容性和性能上完成一個(gè)平衡,讓硬件提供機(jī)制,軟件實(shí)現(xiàn)策略,來(lái)真正提供軟件定義數(shù)據(jù)面的能力,給用戶提供的是一個(gè)開(kāi)放而又高性能的存儲(chǔ)服務(wù)。
[1] http://www.dpdk.org?
[2] https://zh.wikipedia.org/wiki/DPDK?
[3] http://www.xsky.com?
[4] TCP/IP 棧借鑒于IntelUNS,ovs,seastar和BSD TCP/IP
[5]測(cè)試基于英特爾? X520-DA2網(wǎng)卡,至強(qiáng)?E5 2600v3服務(wù)器

您也可以關(guān)注我們的官方微信公眾號(hào)(ID:ctoutiao),給您更多好看的內(nèi)容。
2022-04-28 XSKY星辰天合發(fā)布了 《云集成,給超大規(guī)模K8s 運(yùn)維帶來(lái)的絲滑體驗(yàn)》的文章
2022-04-27 XSKY星辰天合發(fā)布了 《 "軟件定義存儲(chǔ) 賦能實(shí)體經(jīng)濟(jì)新變革”大咖直播即將上線!》的文章
2022-04-26 XSKY星辰天合發(fā)布了 《快速部署XSKY SDS一體機(jī),晉中學(xué)院提升數(shù)據(jù)安全及存儲(chǔ)性能》的文章
2022-04-24 XSKY星辰天合發(fā)布了 《星辰天合成為歐拉生態(tài)服務(wù)平臺(tái)首批通過(guò)技術(shù)評(píng)測(cè)伙伴》的文章
2022-04-22 XSKY星辰天合發(fā)布了 《XSKY星辰天合獲紅帽 OpenShift 容器平臺(tái)認(rèn)證并入選紅帽生態(tài)目錄》的文章