國內公有云對比(2)- 性能篇

在簡單瞭解各家雲計算的能力之後,緊接着大家關注的問題就是性能、價格、穩定性等問題。本篇先從性能入手


本篇準備測試阿里雲,Windows Azure中國站,並以AWS作爲比較。測試對象以虛擬機爲主,測試工具爲兩個:

  • Unixbench:開源的Linux性能測試工具,可以綜合測試虛擬機的CPU、內存、文件、進程、腳本、系統調用、管道等多個維度,並且會給出一個總分。該工具介紹:http://code.google.com/p/byte-unixbench/
  • Orion: Oracle發佈的一個免費IO測試工具,該工具可以測定磁盤的IOPS、吞吐量、延遲。儘管也有一些其他IO測試工具,比如dd、bonnie++、iozone,但是隻有orion可以同時測定IOPS和吞吐量,這也是我選擇該工具的原因。該工具介紹在http://www.oracle.com/technetwork/cn/topics/index-088165-zhs.html

OS性能測試

首先來看Unixbench,由於各家的虛擬機規格不同,我選擇如下的虛擬機規格進行對比

  測試使用的站點 OS類型 小規格 中規格 大規格
Windows Azure中國站 北京 CentOS 6.3 64位 S
1核1.7G內存
M
2核3.5G內存
L
4核7G內存
AWS北美 US East CentOS 6.3 64位 m1.small (1 ECU)
1核1.7G內存
m1.medium (2 ECU)
1核3.5G內存
m1.large (4 ECU)
2核7.5G內存
阿里雲 青島 CentOS 6.3 64位 1核1.5G內存 2核4G內存 4核8G內存

儘管AWS的中規格只有1個核,但是根據AWS的配置,其等效的計算能力(ECU)是小規格的2倍,所以它跟Azure的M型是對等的。大規格同理

百度雲和新浪雲的虛擬機還未開放,暫不考慮


首先說明下測試過程。公平起見,本測試未做任何性能調優和配置變更,完全採用各家提供的缺省OS鏡像。虛擬機也都沒有配置SWAP分區

Unixbench安裝與配置

首先用root登錄目標虛擬機

1. 下載安裝包。建議下載最新版

wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz

2. 解壓縮
tar zxvf UnixBench5.1.3.tgz

3. 進入UnixBench目錄

4. 進行編譯

make clean
make

5. 運行./Run即可開始測試,等待十幾分鍾即可

如果運行時報如下錯誤

Can't locate Time/HiRes.pm 
可以執行下

yum install perl-Time-HiRes
安裝缺少的包


在Windows Azure下,CentOS缺省沒有安裝gcc,可以在make之前運行如下命令安裝gcc

yum --disableexcludes=main install gcc


在阿里雲和AWS下,Unixbench需要安裝一個perl擴展包,可在運行./Run前運行

yum install perl-Time-HiRes

Unixbench測試結果

虛擬機的性能,主要取決於兩個因素:物理機性能,物理機上運行的虛擬機個數。瞭解虛擬化的人都會知道物理核和虛擬機的邏輯CPU(vCPU)並不是一一對應的。一個物理核可以支持多個vCPU,甚至一個超線程支持多個vCPU。這樣一個2個4核支持超線程的處理器,首先在虛擬化層會變成16個核,進而可以支持最少16個vCPU。顯然,vCPU對應的物理核配額越多,其性能就越好,Unixbench分數就越高

先看一下總分


1. AWS,這個分數不出意料的低。Azure是AWS的3-4倍,而阿里雲也有AWS的2-3倍。這個結果跟一個國外的第三方做的測試結果是類似的,詳細情況可參考http://blog.csdn.net/shaunfang/article/details/9770527。爲啥大名鼎鼎的AWS性能如此之差?這跟AWS的歷史有關。AWS早在2006年就開始做雲計算,當時就定下了小、中、大等虛擬機規格。大家都知道硬件能力每年都在增長,這樣當AWS增加新的服務器時,其處理能力就比原有的強。如果新的服務器也支持同樣的用戶數,那麼用戶拿到的虛擬機就會比原有的強。這會造成用戶在不同時間段申請的同規格虛擬機性能不同的情況。於是AWS提出一個ECU概念,即邏輯運算能力,用戶申請的同規格虛擬機永遠擁有類似的處理能力,並且用ECU來代表,比如1ECU就代表一個Sandy Bridge級Xeon的處理能力。這樣的話,2010年的一臺服務器可能會虛擬出10臺小規格的虛擬機,而2013年的一臺服務器就可以虛擬出20臺虛擬機。阿里雲和Windows Azure都比AWS晚,它們使用的處理器較新,起步的虛擬機規格就比AWS高好幾倍了。目前,Azure所提供的一個邏輯核基本上對應一個服務器的物理核,而AWS顯然是4、5個虛擬機共享一個物理核。另一方面,Azure的定價跟AWS一模一樣,花一樣的錢就可以獲得比AWS強4倍的計算能力

AWS採用的是Intel Xeon E5430 CPU,主頻2.66G,啓用了超線程

   OS: GNU/Linux -- 2.6.32-279.2.1.el6.centos.plus.x86_64 -- #1 SMP Thu Jul 19 16:20:44 CDT 2012
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Xeon(R) CPU E5430 @ 2.66GHz (5320.0 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET

2. 阿里雲。儘管測試採用的阿里雲主機配置不如Azure(主要是內存小一些),但是其最終性能卻接近Azure,這說明阿里雲採用的硬件比較新,另外,沒有用一臺物理機去支持大量虛擬機

從結果看,阿里雲採用的是Intel Xeon E5-2420 CPU,主頻1.9G,啓用了超線程

   OS: GNU/Linux -- 2.6.32-358.6.2.el6.x86_64 -- #1 SMP Thu May 16 20:59:36 UTC 2013
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (3800.2 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET

3. Windows Azure分數最高,從結果看,使用的是AMD 4171HE CPU,沒有超線程

   OS: GNU/Linux -- 2.6.32-279.14.1.el6.openlogic.x86_64 -- #1 SMP Wed Dec 12 18:33:43 UTC 2012
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: AMD Opteron(tm) Processor 4171 HE (4189.4 bogomips)
          x86-64, MMX, AMD MMX, Physical Address Ext, SYSCALL/SYSRET


結論:Windows Azure性能最好,是AWS的3-4倍,比阿里雲高10-20%

IO測試

IO測試主要測試磁盤性能。目前,各家提供的虛擬機基本上有三種磁盤:

1. OS盤

2. 本地臨時盤

3. 數據盤

其中,OS盤和數據盤都應該是持久化的,如果物理機故障或者虛擬機重啓,上面的數據應該繼續保留。OS盤和數據盤的區別,是數據盤建議用來存儲應用和用戶數據,而OS盤是缺省提供的,不建議放用戶數據。數據盤一般可以虛擬機解綁,然後加載給其他虛擬機。本地臨時盤是存儲在物理機本地磁盤上,沒有做持久化,很容易損壞或丟失,但其成本低,性能高,一般用來做緩存。

AWS和Azure都同時支持3種盤,阿里雲支持OS盤和數據盤。AWS還有一種叫IOPS盤,本次沒有比較

由於Orion測試需要清空數據,本測試只測數據盤和本地臨時盤

虛擬機準備

每個測試都在一臺小規格的虛擬機上完成,OS爲CentOS 6.3 x64. 數據盤大小爲10G

Orion安裝與配置

Orion的下載需要去Oracle網站。

1. 進入www.oracle.com/technetwork/cn/topics/index-088165-zhs.html?TPCY5g

2. 選擇x86_64版本下載,可能要求輸入Oracle ID

3. 解壓縮安裝包

gzip -d orion_linux_x86-64.gz

4. 解壓後得到一個文件,賦予執行權限

chmod +x orion_linux_x86-64

5. 創建 orion.lun文件,在裏面寫入測試的目標盤,比如/dev/xvdc. 需要注意,orion會直接在磁盤級進行讀寫,會損壞上面的文件系統,所以一定要用空磁盤進行測試

6. 執行讀測試,該測試會進行4K大小的隨機讀和1M大小連續讀

./orion_linux_x86-64 -run advanced -size_small 4 -verbose

7.執行寫測試,該測試會進行4K大小的隨機寫和1M大小連續寫

./orion_linux_x86-64 -run advanced -size_small 4 -write 100 -verbose

這個測試會進行幾組8K大小的隨機讀寫和1M大小的連續讀寫測試。前者用來測定IOPS能力,後者測定吞吐量

Orion測試結果

IOPS,單位:操作/s,數字越大越好。

IOPS指標對於數據庫類型的應用來說十分關鍵。


圖中橫軸代表的是採用Orion測試時併發線程數,或者叫IO隊列深度。Orion測試IO性能的時候,會開啓多個線程,每個線程循環進行IO操作。這樣,當併發線程數多的時候,系統的IO請求會排隊,能夠進一步提升IO性能。當併發線程數大到一定程度時,比如20,系統的IO性能會飽和。在本次測試中,我們使用Orion缺省的測試方法,即併發線程數在1-5之間變化

  • 從數據盤的結果來看,Azure最好,併發線程數爲5時,讀寫IO都可以達到800
  • 阿里雲其次,讀接近800,寫有400多
  • AWS最不穩定。AWS官方的說法是提供100左右的IOPS,如果其他用戶較閒,其IOPS也可以達到幾百上千。從結果來看,AWS的IO性能在讀寫方面很不均勻,寫很快而讀很慢。結合網絡上的資料來看,AWS的IO性能隨時間、機型變化很大。顯然,由於IO性能不穩定,AWS的自帶磁盤是無法滿足IO密集型應用需求的,所以AWS專門推出了一個IOPS存儲來保證IOPS,而這種存儲價格較高

作爲對比,普通一塊7200轉的服務器硬盤(SATA盤)的IOPS一般爲100左右,而存儲專用的15000轉的光纖盤IOPS可以達到200。因此,Azure的數據盤要比單塊服務器硬盤快的多,基本上達到了一個小規模盤陣的處理能力


另外,本地臨時盤的性能,要比持久化磁盤的性能強很多。臨時盤使用了SSD來提升IO性能

  本地臨時盤
Windows Azure 1690
AWS 6302



吞吐量,單位MB/s,數字越大越好


可以看出Windows Azure性能最好,AWS和阿里雲類似。由於需要做持久化,所有的數據盤流量都會經過網絡,而公有云一般不會用光纖網絡這種存儲專用通道,這制約了數據盤的吞吐量,幾十兆/s的性能基本和普通服務器硬盤的性能類似。作爲對比,本地臨時盤無需網絡數據拷貝,性能超高

  本地臨時盤
Windows Azure 565
AWS 366


延遲,單位ms,數字越小越好


在數據盤部分,Azure的讀寫延遲都在10ms以內。阿里雲的讀延遲偏高。而AWS的讀延遲更是高的誇張,而寫延遲又非常低


臨時盤性能大大超越數據盤,小於1ms的延遲一定是使用了緩存或者SSD技術

  本地臨時盤
Windows Azure 0.64ms
AWS 0.30ms


上面的測試都是在某一時間點的測試。我們知道虛擬機是運行在共享的硬件上,單一時刻的性能並不能體現虛擬機的綜合性能和性能的穩定性。因此,我們還需要考察IO性能隨時間變化的情況。

下面的測試,是連續24小時測試所有的虛擬機得出的性能結果

IOPS,數值越大越好,橫軸是時間

結果顯示:

  • AWS的性能確實十分不穩定,寫性能最大和最小差5倍
  • 阿里雲的性能相對穩定些,不過每天有一個時間性能會突然變差,這就是每天的晚上12點左右,阿里對虛擬機進行統一備份
  • Azure的性能最穩定,而且讀寫性能均衡
吞吐量,單位MB/s,數值越大越好,橫軸是時間


結果顯示:

  • Azure的性能最好,且穩定,24小時內都在60MB-110MB之間
  • AWS較不穩定
  • 阿里雲每天會有一個性能低谷(備份時間)

延遲,單位ms,數值越小越好,橫軸是時間


結果顯示:

  • Azure最穩定,讀寫均衡,24小時內延遲都在5ms左右
  • AWS最不穩定
  • 阿里雲每天會有一個突發性能下降(備份時間)

總結

本文比較了AWS海外,阿里雲和Azure三個公有云平臺的OS性能和磁盤IO性能。結果顯示:
  1. 在OS性能部分,同樣規格的虛擬機Azure性能最好,阿里雲次之,AWS性能僅有Azure和阿里雲的幾分之一
  2. 在IO性能部分,對於普通數據磁盤,Azure的性能最好,最穩定,阿里雲次之。AWS的普通磁盤性能非常不穩定,僅適合於順序訪問(追求吞吐量),而對於隨機訪問,必須使用價格更高的IOPS型磁盤。另外,要使用IOPS磁盤,必須使用專用型號的虛擬機(價格也高)


關於網絡性能,可以參考

Windows Azure中國區網絡性能初評

Windows Azure中國區網絡性能再評

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章