作者:範軍 (Frank Fan)新浪微博:@frankfan7 微信:GetToCloud
在實戰存儲設計之六Latnecy我們介紹Latency過高的原因和一些建議。本文重點分析Block Size對性能特別是latency的影響。
什麼是Block Size?
Block Size這個詞在不同的語境中有不同含義。在此文中指的是在OS中運行的應用發出一個IO讀或寫請求所傳送的數據單元的大小。無論你採用傳統存儲架構,還是融合,超融合等架構,IOBlock Size對性能都有影響。
如同下圖所示,一個IO請求比如搬一塊磚,磚塊的大小對整個存儲架構中的很多組件的負荷都有影響。比如HBA,存儲交換機,存儲系統的CPU等等,當然存儲介質本身對不同磚塊的處理能力也不同。
上圖摘自博客vmpete.com
爲什麼Block Size對存儲性能有很大影響?
對Throughput的影響:
Throught = IOPsx Block size
同樣是10IOPs,256K blocks 需要傳輸的數據是4K Blocks 的64倍!那麼自然會對存儲網路的帶寬以及存儲控制器的CPU消耗都有影響。
對時延Latency的影響
上圖摘自vmpete.com。 這是在採用存儲性能分析軟件PernixData Architect之後,顯示了不同Block Size對Lantency的影響。可見當Block Size大於64K時對Lantency的影響最大。
如何來應對大數據塊IO帶來的挑戰呢?
以前沒有工具或簡單的方法可以很好了解應用產生的Block Size。而且在常規存儲設計中,並沒有太多顧及到應用產生的Block Size, 往往是根據一些假設條件來做出設計決定。即使在存儲陣列中採用閃存,其實並不能減少。大數據塊IO對HBA,存儲網絡以及存儲控制器產生的負荷。並且我們發現常規SSD硬盤處理大數據塊IO的性能並不理想。
利用IO BlockSize真實案例:
案例一:
某客戶發現應用性能下降,經排錯發現大數據塊IO對Latency的影響極大。在不對後臺存儲有任何改變的情況下,採用PernixData FVP軟件和服務器端NVMe PCI閃存對存儲性能加速。極大的降低了大數據塊IO對Latency的影響。注意該用戶才用NVMe PCI閃存而不是常規SSD Drive。因爲常規SSD硬盤處理大數據塊IO的應能並不好。
案例二:
某客戶發現很多應用的性能下降。經排錯發現某SQL虛擬機產生非常多的大數據塊IO,對該SQL優化後問題解決。
案例三:
某雲服務提供商在所有虛擬機中設置 Disk IO Limit,以防止共享環境中某些虛擬過度佔用存儲資源。vSphere 5.5以後對mclock diskscheduler 作了更改,對於block size 大於32K的IO,從Disk IO limit這個角度上講,不在認爲該IO只是一個IO. 比如 256K blockSize IO 會被認爲是8個IO。
瞭解應用Block Size的大致情況,會對更好的設置Disk IOLimit有很大幫助。
Reference: