每秒11,200 TPC-E?四路服務器!
“
在《「存儲極客」三步完成全閃存選型》
一文中,
我們介紹了如何
測試存儲系統的OLTP性能。
而具體到影響交易系統性能
的決定因素——
CPU、內存還是IO子系統?
關于這一點在不同場景下
的權重也不一樣。
下面從最近的一份
TPC-E BenchMark測試結果說起。
”
由于單個交易的復雜程度不同,
TPS(每秒交易數)和TPM(每分鐘交易數)
只有在相同測試模型下比較才有意義
如上表,這套被測系統在大負載Profile下表現出11,200 TPS(每秒交易數)的支持能力。
具體來說,就是測試了1-4個虛擬機,每個虛擬機400個用戶負載,活躍數據集大約1TB。在4個VM時并發用戶數達到1600,活躍數據集總共4TB。性能擴展方面的表現還是不錯的。
那么這個TPC-E成績究竟如何呢?我去TPC官方網站查詢了一下發布的結果。
http://www.tpc.org/tpce/results/tpce_perf_results.asp,2017年2月23日
我看到在這里公布的TPC-E測試結果中,排名第一的tpsE(也是指TPC-E的每秒交易數)為11,059。前兩名TPS超過一萬的都使用了八路(8 CPU插槽)服務器,操作系統、數據庫為Windows+SQL Server,提交時間2015年底。
第一點小發現是,TPC-E成績并不是與CPU核心數量/總計算能力成線性關系。因為就在這個榜單中,四路服務器也能跑出超過9000的TPS。
注:本文以討論技術為目的,并不關注具體的服務器品牌型號,只看配置和測試表現。
TPC-E測試負載模型要點
引用自《TPC-E Benchmark Overview》
by TPC-PR Subcommittee,2007年2月
上表對比了TPC-E和TPC-C測試的主要區別,我們看到在數據庫表、列的數量,數據類型豐富程度,主鍵/外鍵等方面都是TPC-E更加復雜,因此它們的測試成績不能交叉對比。同樣的道理,用SwingBench等測試工具配置一個簡單交易模型,也很容易跑到更高的TPS值。
這里列出了測試可接受的場景/范圍。AQRT(平均查詢響應時間)需要低于25ms,這個延時與存儲的IO延時不是一回事,因為一次查詢操作中可能會包含數量不等的IO,還受應用(數據庫)緩存命中率的影響。
關于CPU利用率80%-85%,如果超過這個值意味著CPU可能成為瓶頸,要是較低則表明壓力不夠,系統計算能力尚有裕量。
同樣是“堆”SSD,
DAS和全閃存陣列哪個效果好?
由于報告提交時間的原因,這兩套TCP-E測試系統的OS、數據庫版本,以及CPU都不是最新一代,但Xeon E7-8890 v3的144個核心和4TB內存還是比較豪華了。而更加“變態”的是,上表中的八路服務器使用8塊RAID卡加12個JBOD擴展柜,一共連接了104個SAS SSD(包括6組17個SSD的RAID 5)。
盡管在《存儲極客:SSD RAID能跑多快?要安全就沒性能?》一文中,我們談到過RAID卡對SSD性能發揮(主要是寫性能)的影響,不過上述平臺的整體IOPS、帶寬還是可以秒殺許多PCIe閃存配置了。
另外一款八路服務器在TPC-E測試中更進一步,配置了15塊SAS RAID卡、15個JBOD機箱里面一共210個400GB SSD。我們肯定I/O性能對TPS的影響,但在達到一定程度之后,存儲子系統也許就不再是瓶頸了。
本文開頭提到的11,200 TPS測試成績并沒有提交到TPC官網,有些測試配置可能存在不同,因此這個對比也只是給大家一個參考。其中有一點差別就是上面2款八路服務器都是在物理機Windows系統中測試的,而下面要介紹的平臺使用了虛擬機(Hyper-V)。
引用自《TPC-E testing of Microsoft SQL Server 2016 on Dell PowerEdge R830 Server and Dell SC9000 Storage》
如上圖,這套平臺的數據庫服務器為Dell PowerEdge R830,后端連接SC9000存儲陣列,存儲網絡由2個Brocade 6505 FC交換機構成。萬兆以太網交換機型號為Dell S4048-ON,沒有看到關于客戶端服務器的描述。
具體的服務器配置,是Xeon E5-4600四路平臺中的頂配CPU——22核的4669 v4,基礎頻率2.2GHz,雖然單個CPU性能比Xeon E7 v3強,但四顆的核心總數為88個。滿配1.5TB內存也無法與八路平臺測試使用的4TB相比。
服務器上操作系統和數據庫也使用了微軟Windows+SQL Server平臺;SC9000存儲陣列為全閃存配置,雙控制器+2個SC420驅動器機箱,18個寫密集型SSD加12個讀密集型SSD的分層部署。
服務器2U、存儲8U,加上所有交換機也才14U的高度,比前面提到十幾個JBOD占滿整個機柜在空間上要節省不少,耗電也是一樣。
通常意義上,如果只是單純實現單臺服務器的存儲性能最大化,不通過存儲網絡直連SSD是最好的辦法。除了無法與其它服務器共享之外,還有故障點增加的問題,雖然驅動器配置了RAID,但任何一塊RAID卡或者JBOD故障都會導致部分數據無法訪問。在如此規模的DAS環境添加服務器實現共享存儲的高可用也不太現實。
相比之下,外部存儲陣列中的30個SSD在這里并沒有表現出性能不足。我覺得首先是一部分數據請求在應用(數據庫)緩存命中了;其次貼近實際應用的TPC測試中每個交易所包含的操作,一部分瓶頸并不在存儲(SSD/磁盤)上。在這種情況下,全閃存陣列顯得更加均衡——還具備高可用性,從服務器上的HBA卡到光纖交換機,再到控制器都是雙份冗余的。如果想進一步規避服務器的單點故障,增加節點配置共享存儲的高可用集群也都是成熟方案。
如果應用確實需要極致的存儲IOPS或者帶寬性能,不太在乎成本,同時想兼顧高可用以及在服務器之間的共享連接能力,其實還有一種選擇——EMC DSSD RACK-SCALE 閃存系統。號稱超過100GB/s帶寬和超過1000萬IOPS(實測讀寫混合129GB/s帶寬和1600萬IOPS,同時具備雙控制器和冗余的PCIe主機連接,只要5U機架空間。
引用自《Modernize your SAS analytics infrastructure
to get smart, timely decisions at scale》,
A Principled Technologies report,2016年9月
SAS屬于大數據分析(BI)類應用,上圖只是想側面證明一下DSSD的性能潛力,一臺服務器很難把它用滿,即使四路、八路服務器也是如此。
更多測試規模、性能平衡點分析
在Dell的這份性能報告中,還有另外兩種數據集大小的測試結果,對應虛擬機分配的vCPU和內存資源也不相同。
引用自《TPC-E testing of Microsoft SQL
Server 2016 on Dell PowerEdge R830
Server and Dell SC9000 Storage》
“中等工作負載”測試了1-8個虛擬機(500GB)的壓力,每虛擬機300總共2400個并發用戶,測試結果為10,967 TPS,比4個“大虛擬機”略低。
引用自《TPC-E testing of Microsoft SQL
Server 2016 on Dell PowerEdge R830
Server and Dell SC9000 Storage》
“小型工作負載”測試了1-8個虛擬機(250GB)的壓力,每虛擬機90總共720個并發用戶,測試結果為10,300 TPS。
引用自《TPC-E testing of Microsoft SQL
Server 2016 on Dell PowerEdge R830 Server
and Dell SC9000 Storage》
最后看下CPU占用率,三種數據集大小基本都達到80-85%的正常范圍。
既然總計算能力(多核)、存儲性能都不是決定TPC-E成績的唯一因素,結合不同虛擬機規模/數量的測試結果,我傾向于認為NUMA優化——CPU訪問內存的效率應該也是一個需要優化設計的點。
Dell PowerEdge R830的多處理器互連方式
也屬于NUMA(非一致性內存訪問)架構
參考我們之前在《幾輪PK幫你優選“真四路”!》中所講的,盡管Xeon E5-4600四路平臺在CPU QPI互連方面的能力不如Xeon E7,但如果4個虛擬機恰好跑在每個CPU插槽及其本地內存的話,反而能達到最好的效率(Xeon E5不像E7那樣通過SMI緩沖芯片連接內存,延時較低)。
相比之下,八路及以上平臺確實可以支持更大的內存和數量更多的PCIe擴展卡,但需要合適的應用(比如SAP HANA)才能發揮出與其價格相匹配的價值。