Thursday, September 12, 2013

GlusterFS的平行讀寫測試!

測試對象的GlusterFS, 是由兩台server各接2部26TB的RAID組成, 總容量102T
RAID是SAS介面, 做成ext4.
server對外走的是10GbE, 合計頻寬20Gb/s = 2.5GB/s, 然後所有的client都使用GbE連接.
(所以應該要20台才會塞滿)
所有主機都用CentOS 6.4.

測試軟體一樣是Bonnie++.
平行測試時, 用pdsh連到client同時啟動Bonnie++, 最後把每一台client上的log收回來加總.

做了四種測試:
1. 大檔案循序寫入 (>1GB)
2. 1MB檔案, 建立1024個
3. 100KB檔案, 建立2048個
4. 10KB檔案, 建立4096個

GlusterFS可以用NFS client或GlusterFS FUSE client掛載.
不過兩種情況, 讀取的cache好像都不會用到, 所以前一篇SSD/NFS讀取測試偷懶的理由就消失了XD

不囉嗦看結果.

client type 1GB 1MB 100K 10K
read write read write read write read write
1 client GlusterFS 58.89 43.92 60.00 24.00 23.10 6.80 5.19 0.66
NFS 112.84 101.90 83.00 39.00 27.40 7.60 6.20 0.82
8 clients GlusterFS 498.60 443.66 347.00 248.00 252.70 36.20 78.19 9.75
NFS 699.21 660.19 375.00 344.00 191.40 74.30 48.04 5.79
16 clients GlusterFS 1028.72 684.64 2083.00 191.00 276.90 46.00 183.38 21.91
NFS 965.91 547.24 1244.00 311.00 828.30 133.90 46.58 3.58

其實對單一client的時候, GlusterFS client的速度還蠻慘的... 
但是NFS client比較好, 至少接近client的GbE極限.
然後寫入效能比讀取差, 尤其在小檔案的時候, GlusterFS的hashing加上網路overhead, 整個拖垮.

但這並不是GlusterFS當初設計的目標, 大量client的讀寫才是重點.
同時使用8個client的時候, 可以看到GlusterFS client的效能可說是線性成長, 相對來說NFS client的效能增加就沒那麼多.
簡單說, GlusterFS client的scalability比較好.

到16個client就可以看到GlusterFS亮眼的地方了:
1MB讀取的總效能衝到2GB/s! 16個client的GbE頻寬加起來也就差不多2GB/s, 算是很好的結果.
參考之前的測試 (http://mikescchen.blogspot.tw/2013/01/gluster-mount1.html), 可以知道NFS client把hashing交給server做, 而GlusterFS client是自己做hashing.
這在大量client時就顯示出差異了: NFS client使得server的loading加重, 而且增加server間額外的傳輸, GlusterFS則由client分擔hashing跟資料分散的工作, 最終使得GlusterFS client的總效能比NFS client強.

至少就手上的數據來看:
1. client數量少 (<8) 時, NFS client的讀寫效率都比GlusterFS好.
2. client數量多 (>8) 時, GlusterFS client的讀取速度比NFS client好, 但NFS client的寫入速度比GlusterFS好.
3. 要求效能的話, GlusterFS不適合用在大量小檔案的應用場合, 如果檔案有1MB以上的話比較好.

這邊都只有效能面的考量, GlusterFS的replicate以及geo-replication功能, 對於需要HA功能的人來說, 還是值得考慮的一個強項.

No comments: