扇子專欄:存儲怎么測才精彩
扇子 發表于:13年12月30日 09:46 [原創] 存儲在線
編者按:扇子長期從事存儲技術相關工作,目前專注于openZFS、opensource illumos 等方面的研究。2008~2013年任職于IBM中國,擔任企業級存儲產品DS8000三線售后支持專家、金融行業存儲高級售前工程師等職位。
DOIT存儲專欄:相信大家對存儲廠商公布的性能數據都不陌生,筆者的很多客戶都在感嘆一邊是“理想很美好”的測試報告,另一邊卻是系統上線后“現實很骨感”的糟糕性能。事實上,我們的IT運維人員天天面對著海量的設備和業務部門各種各樣的要求,很難像原廠商的工程師一樣,對某一款存儲設備精通。很多人平時可能只會參與到項目的前期規劃和系統設計階段,沒有動手的機會,也很難對存儲的性能有一個理性認識。這樣就會有一個令人啼笑皆非的結果,很多客戶在選擇存儲設備的時候,總會問“你的IOPS最大能到多少?”
到底IOPS越大就越好么?筆者認為,再好的性能報告,如果與真實環境數據相差太大,都沒有意義。那些動輒十幾w的IOPS究竟是怎么來的呢?
圖一:IOmeter中12w的IOPS
首先要考慮的是測試環境,要盡可能接近客戶的真實情況,這可能包括硬件設備、網絡環境、邏輯配置等。10塊盤和40塊盤,提供相同的容量,測出來的性能肯定是不同的,也就是常說的overprovision。
其次要考慮的是測試方法,相對靠譜的是就用客戶的真實數據和應用來測,這個方式的最大缺點在于需要相對充足的時間和資源來搭建環境。參與測試的客戶往往并不是應用專家,資源的協調和測試過程中遇到的問題,如果沒有辦法及時解決,那測試的價值就會大打折扣。廠商的選擇往往是那些性能測試工具,比如IOmeter、fio或orion 。這種想法也沒有問題,畢竟作為廠商需要展示的是存儲的IO性能,而客戶應用如果不夠合理,測試結果要么就是存儲的使用效率很低,應用成為瓶頸;要么就是過分依賴存儲,什么都往里面寫,造成存儲忙得要死,而應用還是慢。這些問題不是一時半會能夠解決的,再加上各種其他因素,比如商務、客戶實際情況,有可能很好的產品就因為糟糕的測試結果而落選了。一個優秀工程師的作用就是在現有條件下,可以將結果最大化,努力實現客戶的真實測試需求。
以Iometer為例,在沒有人為修改程序的前提下,我認為其結果還是比較真實的。有兩點需要說明,一個是Iometer的寫是同步寫,而很多存儲設備可以修改其寫入模式為同步還是異步寫入的。最簡單的解釋就是同步寫時,數據必須有效寫入到后端磁盤中;而異步寫時,數據寫入DRAM中就可以了。異步寫的性能顯然會優于同步寫,這點往往會被人忽略。另一點就是讀取性能測試,很多時候廠商會故意不寫入數據測試,這時候的測試數據會非常“理想”。比較合理的方式是,先連續寫入幾遍數據,然后重啟客戶端和存儲控制器來清除內存,我更相信這時候的讀取結果。
下圖為筆者在一次測試中的IOmeter測試結果,由于使用了SSD作為設備的讀寫加速設備,整體性能都有了非常明顯的提高。
圖二 幾種常見的測試案例
還有一個很重要的方面是,如何來解讀測試數據。我們希望展示給客戶的是存儲設備在高并發下,延時與IOPS的關系,在IOmeter中,可以通過增加manager,worker的數量,以及增加outstanding IO來模擬多臺服務器同時訪問存儲設備時的表現。當然,各種讀寫比例的IOPS壓力測試也可以很好的幫助客戶了解設備的整體性能。
圖三 IOPS與并發IO
圖四 不同讀寫比例
如果可以很好地了解存儲設備的設計原理,這些測試可能都并不需要。但是在現實的情況下,大部分的客戶工程師并不具備這些能力??蛻粼诂F有的條件下,如果可以最大程度了解產品的真實性能,并結合實際情況,最大程度地使用好存儲產品,這才是測試的意義吧。
筆者結語:
最近工作真的非常忙,長時間的熬夜加班和連續出差,很難有時間寫一些博客來與大家分享。希望大家在未來一年有更好的工作和生活。筆者今后也會結合代碼來和大家更好的解讀存儲技術。希望有問題的讀者可以聯系我,郵箱地址是 feizheng.philips@gmail.com