上個月,筆者對國內兩大雲廠商(阿里雲和騰訊雲)的雲服務器、雲數據庫和雲存儲三種產品作了性能評測,算是對兩家的部分計算和存儲產品(數據庫也可視做一種存儲形式)作了簡要對比。雖然評測文章在 V2EX 等社區的反饋還不錯,但確實還存在很多缺失。除了很差評測的售後服務等指標外,還缺乏了對其餘使用更爲廣泛的雲存儲產品。git
所以,筆者近期抽空完善《雲計算產品性能測試指南》,新加入了對兩種雲存儲產品(雲盤)的性能和價格對比。本次測試總計耗時 20 多天,測試的強度和時間都很是充分,本文將記錄這次測試的過程和對比結果。github
1. 哪兩種雲盤?數據庫
雲存儲類別下,目前兩大雲產商提供瞭如下產品:服務器
塊存儲(阿里雲、騰訊雲)網絡
文件存儲(阿里雲)分佈式
對象存儲(阿里雲、騰訊雲)工具
內容分發網絡(阿里雲、騰訊雲)性能
表格存儲(阿里雲)測試
歸檔存儲(阿里雲)優化
能夠看出,阿里雲的雲存儲產品類別更爲豐富,雲計算先行者的優點突出。
在上述六種產品中,筆者上次已經對比過對象存儲。內容分發網絡(CDN)測試起來花的時間又特別長,進行有意義的比較須要的數據特別大,並且目前沒找到自動化的工具,所以此次不考慮測試 CDN(歡迎推薦能夠自動化測試 CDN 性能的工具)。
那麼剩下的兩家均提供的產品,就是塊存儲(Block Storage)了。塊存儲,簡單來講就是提供了塊設備存儲的接口,一個硬盤就是一個塊設備。在雲產商提供的產品中,所謂的普通雲盤、高效雲盤、SSD 雲盤,都是塊存儲設備。
若是你對存儲類型不太熟悉,建議閱讀如下文章:
從OpenStack的角度看塊存儲的世界
三種存儲類型比較-文件、塊、對象存儲
知乎話題:塊存儲、文件存儲、對象存儲這三者的本質差異是什麼?
上一篇評測文章中,其實也對普通雲盤的性能進行了對比,但包含在雲服務器性能測試中。對於選擇普通雲盤作對比,有的讀者也提出了異議。
確實,企業用戶通常不會用服務器的本地存儲保持核心數據,由於本地磁盤的數據遷移困難,而自建 raid5 磁盤陣列的數據持久性頁不高,所以大多采用 SSD 雲盤或高效雲盤等分佈式存儲成爲主流選擇。一線雲廠商比拼的也主要是分佈式塊存儲,如 AWS 的 EBS 就是一種分佈式塊存儲設備。
爲了較爲完整地比較兩大廠商的塊存儲產品,筆者近期對兩家的高效雲盤和 SSD 雲盤進行了壓測,算是對上一篇的補充。期間犯了很多錯,多花了很多冤枉錢,不過總算最終得出了比較可信、直觀的數據。
2. 廠商預期的性能
在介紹測試詳情以前,先來看一看廠商對自家產品的描述。
在各自的產品介紹頁面(騰訊雲、阿里雲),均給出了詳細的性能指標及具體的計算公式。
阿里雲:
高效雲盤
IOPS:min(1000 + 6 * 容量, 3000)
吞吐量:min(50 + size * 0.1, 80)
訪問時延:1-3ms
SSD 雲盤
IOPS:min(30 * 容量, 20000)
吞吐量:min(50 + size * 0.5, 256)
訪問時延:1-3ms
騰訊雲:
高效雲盤
IOPS:min(1500 + 容量 * 8, 4500)
吞吐量:min(75 + size * 0.147, 130)
訪問時延:< 3ms
SSD 雲盤
IOPS:min(容量 * 24, 2400)
吞吐量:min(150 + (容量 - 250) * 0.147, 260)
訪問時延:< 3ms
其中:
IOPS:每秒讀寫(I/O)操做的次數,數值越高越好。
吞吐量:通常用MBPS,每秒傳輸的MB字節數來衡量,下文用英文 Throughput 替代。
訪問時延:訪問時延,完成一個 I/O 請求所需的時間,下文用英文 Latency 替代。
上述三項指標中,兩家只給出了 Latency 的數值範圍。不過,這個能夠說是最重要的性能指標。其餘指標不變的狀況下,Latency 爲 1ms 的性能是 3ms 的 3 倍。
另外,從給出的計算公式中,沒法直觀地比較 IOPS、TP。所以,筆者用繪製了雲盤性能與容量(volume)的關係圖。
上圖中,紅色虛線爲騰訊云云盤,藍色實線爲阿里云云盤。
因爲騰訊雲的雲盤最大容量爲 4000GB,而阿里云爲 32678GB,可是爲了方便查看,只繪製出了容量在 [0, 4000]
範圍內的性能數據。另外,在圖中以 Hybrid 代稱高效雲盤,下文同。
從上圖來看:
騰訊雲高效雲盤的預期性能遙遙領先於阿里雲,尤爲是最低吞吐量都比阿里雲的峯值要高;
可是在 SSD 雲盤方面,阿里雲的預期性能優點比較大,只有在容量 1TB 以上時才低於對手。
不過,以上只是廠商預期的性能數據,不表明產品的真實性能就是如此。產品實際表現如何,與預期性能差距有多大,還須要咱們親自測試、使用纔可得知。
3. 測試準備工做
在開始測試以前,筆者在兩家產商分別購買了測試服務器及雲盤。
測試所使用的虛擬機配置爲:
CPU:4核 Intel Xeon
內存:4GB DDR3
操做系統:Ubuntu 14.04 64位。
選取的測試雲盤以下:
高效雲盤:50GB、400GB
SSD 雲盤:250GB、500GB
測試阿里雲的 500GB SSD 雲盤時碰到了兩個大杯具,首先是餘額不足致使測試程序中斷,一切重來。。第二個杯具和 SSD 雲盤的性能有關,具體下文中會提到。。。
下文中,筆者不會具體介紹測試步驟,只說明執行了哪些測試及測試結果,具體步驟請看此前在 Github 上分享的項目:CloudTesting/test_cbs。
4. 執行哪些測試
通常來講,塊存儲性能主要看 IOPS、Throughput 和 Latency三個指標,廠商也大多提供這三個指標的峯值做爲購買參考。
上一篇評測中,筆者就是使用 fio 對普通雲盤進行測試,對比了三個指標的差別。不過如今回過頭來看,測試的壓力還不夠大,使用的塊大小、隊列深度還不夠全,雖然最終結果差別或許並不會太大。
所以,此次針對高效雲盤(HDD+SSD)和 SSD 雲盤的測試,筆者將根據 SNIA 發佈的企業級SSD評測規範(Solid State Storage Performance Test Specification Enterprise v1.1)進行,如下簡稱該規範爲 PTS 。
SNIA 是存儲網絡行業協會(Storage Networking Industry Association,SNIA)的簡稱,這是一個由廠商和大學成立的行業組織,致力於開發和推廣存儲系統標準。
除了 IOPS、Throughput 和 Latency 三項基礎測試外,PTS 還包含了如下五種測試:
Write Saturation (WSAT):持續應用工做負載,測試性能隨着時間如何變化。
Demand Intensity Response Time Histograms (DIRTH)
Cross Stimulus Recovery (XSR)
Host Idle Recovery (HIR):測試宿主機閒置時間對性能恢復的影響。
Enterprise Composite Workload (ECW)
SNIA 官方有提供測試服務,可是收費,並且也不適用於雲存儲設備。
所以,筆者選擇了一家雲計算公司根據 PTS 規範實現的自動化測試庫(代碼地址:https://github.com/cloudharmony/block-storage),其中包含了 IOPS、TP、Latency、WSAT 和 HIR 五類測試,其餘的沒有實現。
SSD 雲盤的測試中沒有 WSAT 和 HIR 兩項,具體緣由後面會提到。
注意,PTS 測試中全部 fio 命令的隊列深度均爲 64。具體測試細節請看官方提供的 PDF 文件。
4.1 PTS 測試耗時長
根據 PTS 規範,每項 SSD 性能測試須要通過一、淨化、二、準備工做負載、三、進入穩態、四、測試等四個環節,所以整個測試過程用時很是長,並且雲盤容量越大,耗時越長。筆者在測試時,平均每塊雲盤大概花了 2 天的時間。因爲各類緣由,此次至少買了 10 塊雲盤作測試,所以也就有了標題中「 20 天持續壓測」的說法。**
以騰訊雲 500G SSD 雲盤的測試時間爲例說明:
這次測試採用的是第三方提供的自動化測試庫,整個步驟都是可重複的,對測試數據有疑問的同窗可自行驗證。在這裏說明下測試所需時間,是爲了提示你們啓動測試程序後該幹嗎就幹嗎,同時保證帳戶中有充足的餘額(尤爲是後者)。
在介紹測試結果以前,說明一下對兩家廠商測試過程的差別(雲盤均爲直接格式化,未分區)。
騰訊雲因爲不支持單獨購買按量付費的服務器,所以開了 4 臺 VM,每臺配一種測試雲盤。
阿里雲支持單獨按量購買雲盤,所以只開了 2 臺 VM,每臺掛載 2 塊雲盤,測試時針對每一個雲盤單獨啓動一個測試程序。
5. 性能測試數據
通過漫長的時間,上週末終於完成了對 6 塊雲盤的 IOPS、TP、Latency、WSAT、HIR 五項測試。
測試數據大約 190MB,其中,文件夾的命名規律爲:廠商_雲盤類型_容量
。除了 aliyun_ssd_500x
和 aliyun_ssd_250x
外,每一個文件夾下均有一個 report.pdf
文件,爲測試程序自動生成,裏面包含了測試結果、數據和圖表。
另外,筆者用 Highcharts 製做了一些可交互圖表,可用來查看彙總後的各項數據。地址以下:http://www.codingpy.com/specials/cbs_test/。
6. 阿里雲的一個大坑
筆者在本文撰寫快要結束時,看到阿里雲 SSD 雲盤的性能比預期的差不少,回頭去調查緣由。這才猛然發現阿里雲 SSD雲盤必須搭配 I/O 優化實例才能給發揮最大性能。當時就想破口大罵。。。
踩過這個坑的朋友不知道有多少?
所以,以前的 SSD 雲盤數據(即 aliyun_ssd_500x
和 aliyun_ssd_250x
兩個文件夾下的數據)就不具有可比性了。筆者只好重開 ECS 進行測試,爲了節約時間,SSD 雲盤將只測試 IOPS、Throughput、Latency 這三個基礎指標。
本文先對比高效雲盤,從新測試完後,過幾日再與你們分享具體的 SSD 雲盤性能對比。
7. 高效雲盤性能對比
下面咱們來看看高效雲盤的測試性能,與產商預期的性能值之間是否存在差別,差別又有多大。
先來回顧一下廠商預期的性能,請看下圖左邊部分。
上圖顯示,騰訊雲高效雲盤的預期性能遙遙領先於阿里雲,其中最低的吞吐量都比阿里雲的峯值要高。
可是真實測試數據如何?請看下面的測試結果。
7.1 基礎指標測試
首先是 50GB 容量的 IOPS、Throughput、Latency 三項指標的數據(可點擊圖片查看大圖,或查看交互式圖表):
400GB 容量的性能對比(可點擊圖片查看大圖,或查看交互式圖表):
圖注:RW Ratio 指的是 I/O 操做中的讀寫比例,0/100 表示順序寫, 100/0 表示順序讀。
從上述圖表對比來看, 能夠得出結論1:
在 50GB、400GB 兩個容量級別上,騰訊雲高效雲盤的各項性能指標表現均優於阿里雲,並且優點也比較明顯。
接下來,咱們比較一下測試值與預期值之間的差別。因爲預期值都是理論狀況下的峯值,咱們從測試數據中提取出各自的峯值。
看完上面的數據,你至少會有這兩個疑惑:
騰訊雲的測試峯值怎麼接近預期值的兩倍?
阿里雲 400GB 高效雲盤的延遲怎麼那麼高,離預期的 1-3ms 差距很大?是否是數據有誤?
第一個疑惑,騰訊雲兩個容量的測試峯值均爲預期值的兩倍。產品首頁中沒有直接說明,只能去翻產品文檔,最終在 CBS 使用約束頁面中找到了一段解釋:
產品文檔中承諾的IO性能,如1TB的SSD雲硬盤,隨機IOPS能達到24000IOPS。含義是讀寫可同時達到24000IOPS,4KB/8KB的 IO均可作到,16KB的IO大小,則沒法作到24000(因爲吞吐已經達到了260MB/s的限制)。
簡單來講,就是騰訊雲高效雲盤的讀寫操做可同時達到預期性能峯值(數據塊 16KB 如下)。這樣,騰訊雲的數據就能夠解釋的通了。
筆者選擇的測試峯值是數據塊 512b、50/50 讀寫比例下的數據,這時讀寫均達到了預期的 IOPS 峯值,總 IOPS 接近預期峯值的 2 倍。而順序讀、順序寫的值都接近預期的峯值。
而阿里雲方面,讀寫沒法同時達到預期性能峯值。
第二個疑惑,阿里雲 50GB 高效雲盤的 Latency 在正常範圍,怎麼 400GB 的就超標了?筆者一開始還覺得數據錯了,爲此重開了虛擬機,用 ioping 作了簡單的比對。結果以下圖:
從新測試以後,筆者確信了此前自動測試庫跑出的數據應該是沒問題的。至於高時延背後的緣由,多是「鄰居」比較多、IO 操做比較活躍吧。 Latency 的自動測試大概跑了 4 個多小時,從新測試時性能也沒有變化,阿里雲這個算不算違反了服務協議(SLA)呢?
解決上面的疑惑以後, 咱們能夠得出如下結論:
結論2:騰訊雲達到了預期的性能;阿里雲部分沒有達到,400GB 容量的時延太高。
結論3:騰訊雲高效雲盤的時延在 1ms 如下,IOPS、吞吐量的優點更加突出。
7.2 WSAT、HIR
下面來看 WSAT 和 HIR 測試的狀況。上面提到,WSAT測試是指在持續應用工做負載,測試性能隨着時間如何變化。
WSAT 自動測試最終得出的是一段時間內,IOPS 的平均值,結果以下:
上述數據,與兩家廠商預期的峯值很是接近,說明兩家的高效雲盤可以長時間達到 IOPS 性能峯值。可是這裏看不出性能如何隨時間變化,必須從生成的 PDF 中查找,筆者截圖以下:
從上述 4 張趨勢圖來看,能夠得出結論4:
兩家高效雲盤的 IOPS 表現均比較穩定,幾乎呈一條直線,只有阿里雲的 400GB 雲盤有些略微波動。
最後來比較 HIR 測試的結果。HIR 主要測試宿主機閒置時間對性能恢復的影響。
從上述 4 張趨勢圖來看,能夠得出結論5:
容量越大,彷佛閒置時間對性能恢復的影響越明顯;阿里雲 400GB 高效雲盤的性能波動受閒置時間影響較明顯。
綜合上述五項測試的結果,能夠認爲騰訊雲高效雲盤的綜合性能應該是阿里雲高效雲盤的2倍以上(結論6)。
8. 加入價格因素
延續上一篇的風格,在比較完性能指標以後, 咱們再加入價格因素。
上圖中,騰訊雲高效雲盤按量計費的價格,爲根據官方產品頁面給出的訂價計算,包年包月價格爲單獨購買雲盤時系統顯示價格;阿里雲高效雲盤的價格根據其給出的費用規則計算。這裏說明一點,騰訊雲在單獨購買雲盤時,還只有包年包月這種模式,不夠靈活。
從上圖對比來看:
結論7:騰訊雲和阿里雲的包年包月價格相同;
結論8:騰訊雲的按量計費價格比阿里雲貴,約爲 1.8 倍;
結論9:阿里雲按量計費與包年包月的價格相差很小。
通常來講,數據盤中存儲的多爲持久性數據,以按量付費方式購買的企業用戶應該並很少。因此,在包年包月模式下,騰訊雲高效雲盤的性價比很是高。
不過因爲阿里雲兩種模式之間價格差別小,使得用戶在雲盤使用方式上更加靈活。在筆者看來,按量計費和包年包月的核心並不在如何收費,而在於雲計算產品的使用方式。價格差會使用戶傾向於以某一種方式使用產品,而不是根據有業務狀況自由選擇。
9. 結語
上文中,咱們分別從 IOPS、Throughput、Latency、WSAT、HIR 五項測試指標,對騰訊雲、阿里雲的 50GB、400GB 容量的高效雲盤進行了性能對比。
通過對測試數據進行分析,筆者主要得出瞭如下結論:
騰訊雲高效雲盤的各項基礎性能指標均優於阿里雲,且優點明顯;
騰訊雲高效雲盤達到了預期的性能,而阿里雲部分雲盤沒有達到,400GB 容量的時延太高;
阿里雲大容量高效雲盤的 IOPS 性能受宿主機閒置影響較大;
包年包月模式下,騰訊雲高效雲盤的性價比很是高;
阿里雲高效雲盤不一樣計費模式下費用差異不大,選擇時靈活性更高。
若是你正在考慮採購這兩家產商的高效雲盤,但願本文對你有幫助。若是你考慮的廠商不是騰訊雲或阿里雲,能夠參考本文中使用的自動測試庫進行全面測試。不過別忘了,要想得到最大的雲盤性能,則必須購買相應廠商的雲服務器,不然雲應用的性能反而可能降低。關於如何測試雲服務器的性能,請看筆者上一篇評測。
下一篇筆者將對比騰訊雲和阿里雲 SSD 雲盤的性能。
參考連接
雲存儲的四大優點
從OpenStack的角度看塊存儲的世界
SNIA SSS Performance Test Specification (PTS) Testing Service
網絡存儲協會發布企業級SSD評測規範
阿里雲:雲盤參數和性能測試方法
阿里雲:雲盤的特色和應用場景
騰訊雲:如何衡量雲硬盤的性能
騰訊雲:CBS 應用場景
騰訊雲:CBS 產品分類及對比
塊存儲測試套件
Key storage performance metrics for virtual environments
Pro Tips For Storage Performance Testing
Understanding IOPS, Latency and Storage Performance
Amazon EBS 卷類型
AWS系列之三 使用EBS
AWS 存儲測試數據
本文轉載自:http://www.toutiao.com/i6361546603920097793/