圖一:IOmeter中12w的IOPS
首先要考慮的是測試環(huán)境,要盡可能接近客戶的真實情況,這可能包括硬件設(shè)備、網(wǎng)絡(luò)環(huán)境、邏輯配置等。10塊盤和40塊盤,提供相同的容量,測出來的性能肯定是不同的,也就是常說的overprovision。
其次要考慮的是測試方法,相對靠譜的是就用客戶的真實數(shù)據(jù)和應(yīng)用來測,這個方式的最大缺點在于需要相對充足的時間和資源來搭建環(huán)境。參與測試的客戶往往并不是應(yīng)用專家,資源的協(xié)調(diào)和測試過程中遇到的問題,如果沒有辦法及時解決,那測試的價值就會大打折扣。廠商的選擇往往是那些性能測試工具,比如IOmeter、fio或orion 。這種想法也沒有問題,畢竟作為廠商需要展示的是存儲的IO性能,而客戶應(yīng)用如果不夠合理,測試結(jié)果要么就是存儲的使用效率很低,應(yīng)用成為瓶頸;要么就是過分依賴存儲,什么都往里面寫,造成存儲忙得要死,而應(yīng)用還是慢。這些問題不是一時半會能夠解決的,再加上各種其他因素,比如商務(wù)、客戶實際情況,有可能很好的產(chǎn)品就因為糟糕的測試結(jié)果而落選了。一個優(yōu)秀工程師的作用就是在現(xiàn)有條件下,可以將結(jié)果最大化,努力實現(xiàn)客戶的真實測試需求。
以Iometer為例,在沒有人為修改程序的前提下,我認(rèn)為其結(jié)果還是比較真實的。有兩點需要說明,一個是Iometer的寫是同步寫,而很多存儲設(shè)備可以修改其寫入模式為同步還是異步寫入的。最簡單的解釋就是同步寫時,數(shù)據(jù)必須有效寫入到后端磁盤中;而異步寫時,數(shù)據(jù)寫入DRAM中就可以了。異步寫的性能顯然會優(yōu)于同步寫,這點往往會被人忽略。另一點就是讀取性能測試,很多時候廠商會故意不寫入數(shù)據(jù)測試,這時候的測試數(shù)據(jù)會非常“理想”。比較合理的方式是,先連續(xù)寫入幾遍數(shù)據(jù),然后重啟客戶端和存儲控制器來清除內(nèi)存,我更相信這時候的讀取結(jié)果。
下圖為筆者在一次測試中的IOmeter測試結(jié)果,由于使用了SSD作為設(shè)備的讀寫加速設(shè)備,整體性能都有了非常明顯的提高。
圖二 幾種常見的測試案例
還有一個很重要的方面是,如何來解讀測試數(shù)據(jù)。我們希望展示給客戶的是存儲設(shè)備在高并發(fā)下,延時與IOPS的關(guān)系,在IOmeter中,可以通過增加manager,worker的數(shù)量,以及增加outstanding IO來模擬多臺服務(wù)器同時訪問存儲設(shè)備時的表現(xiàn)。當(dāng)然,各種讀寫比例的IOPS壓力測試也可以很好的幫助客戶了解設(shè)備的整體性能。
圖三 IOPS與并發(fā)IO
圖四 不同讀寫比例
如果可以很好地了解存儲設(shè)備的設(shè)計原理,這些測試可能都并不需要。但是在現(xiàn)實的情況下,大部分的客戶工程師并不具備這些能力??蛻粼诂F(xiàn)有的條件下,如果可以最大程度了解產(chǎn)品的真實性能,并結(jié)合實際情況,最大程度地使用好存儲產(chǎn)品,這才是測試的意義吧。
筆者結(jié)語:
最近工作真的非常忙,長時間的熬夜加班和連續(xù)出差,很難有時間寫一些博客來與大家分享。希望大家在未來一年有更好的工作和生活。筆者今后也會結(jié)合代碼來和大家更好的解讀存儲技術(shù)。希望有問題的讀者可以聯(lián)系我,郵箱地址是 feizheng.philips@gmail.com