使用 Bonnie 對託管服務提供商 IO 進行基準測試
好的,由於我正在處理一堆項目,我可以訪問 3 個託管服務提供商上的專用伺服器。
作為一個實驗和教育目的,我決定看看我是否可以對每個 IO 的性能進行基準測試。
一點研究讓我找到了 Bonnie++
所以我將它安裝在伺服器上並執行了這個簡單的命令
/usr/sbin/bonnie -d /tmp/foo
不同主機提供商的 3 台機器都是專用機器,一台是 VPS,另外兩台在某些雲平台上,例如 VMWare / Xen,使用某種集群 SAN 進行儲存
這可能是一件幼稚的事情,但這是我發現的結果。
HOST A Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP xxxxxxxxxxxxxxxx 1G 45081 88 56244 14 19167 4 20965 40 67110 6 67.2 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 15264 28 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ xxxxxxxx,1G,45081,88,56244,14,19167,4,20965,40,67110,6,67.2,0,16,15264,28,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ HOST B Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP xxxxxxxxxxxx 4G 43070 91 64510 15 19092 0 29276 47 39169 0 448.2 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 24799 52 +++++ +++ +++++ +++ 25443 54 +++++ +++ +++++ +++ xxxxxxx,4G,43070,91,64510,15,19092,0,29276,47,39169,0,448.2,0,16,24799,52,+++++,+++,+++++,+++,25443,54,+++++,+++,+++++,+++ HOST C Version 1.03c ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP xxxxxxxxxxxxx 1536M 15598 22 85698 13 258969 20 16194 22 723655 21 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 14142 22 +++++ +++ 18621 22 13544 22 +++++ +++ 17363 21 xxxxxxxx,1536M,15598,22,85698,13,258969,20,16194,22,723655,21,+++++,+++,16,14142,22,+++++,+++,18621,22,13544,22,+++++,+++,17363,21
好的,首先,閱讀這些數字的最佳方法是什麼?真正比較這些數字有什麼問題嗎?
這是 IO Speed 的真實表現嗎?
如果沒有,我有什麼方法可以測試嗎?
注意:這 3 台機器使用的是 Ubuntu 或 Debian(我認為這並不重要)
這些網站可以幫助您解釋 bonnie 結果:
http://www.textuality.com/bonnie/advice.html
http://www.issociate.de/board/post/478953/Understanding_bonnie++_results.html
http://sourceforge.net/projects/witme/files/bonnie-to-chart/
首先 - 我想在這裡解決一些不一致的問題:
您已經完成了三種不同的測試規模,並且沒有顯示任何其他系統參數,因此您的結果很難評估。(這裡的 CPU 是什麼?什麼樣的磁碟子系統?為什麼要執行三種不同大小的磁碟?為什麼使用不同版本的 bonnie?你在什麼文件系統上執行?你是否對文件系統掛載選項進行了改進?)
了解哪些規格對您很重要取決於您的應用程序需求:影片流需要快速讀取(bonnie 輸入)性能。影片錄製需要快速寫入(bonnie 輸出)性能。等等
以下是我通常使用的一些 bonnie 提示/技巧:
- 盡可能減少系統 RAM 您可以在啟動時傳遞核心參數來執行此操作。mem=512MB 是我通常使用的。這可以確保您的本地作業系統記憶體效果對您的 IO 測試的影響最小。
- 使用合適的測試大小來強調 IO 我發現 5-20G 是很好的測試範圍。確保您的結果對於各種或範圍是相似的,然後在所有測試中使用相同的大小。
- 不要為每個字元的測試而煩惱。
它們不反映真實世界的磁碟使用情況並且需要時間來執行。(關於磁碟 i/o 的所有內容都將發生在塊上,而不是字元上)
- 如果您在 SAN 上執行,請考慮在執行測試之前將我們的塊層歸零。有時在分配空間時會出現首次寫入懲罰。如果您在執行測試之前耗盡了整個驅動器,則可以確定您沒有遇到此問題。(在同一節點上執行多次測試迭代並比較結果也可以幫助確定這是否是一個問題)
- 始終發布您的 bonnie 命令行以幫助其他人複製您的測試。
EC2 提示:一些人發現在 AWS EBS 上執行軟體 RAID0 條帶可以提高 IO 性能。