作者:范軍 (Frank Fan)新浪微博:@frankfan7 微信:GetToCloud
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出屏邊免費(fèi)做網(wǎng)站回饋大家。
在實(shí)戰(zhàn)存儲(chǔ)設(shè)計(jì)之六Latnecy我們介紹Latency過(guò)高的原因和一些建議。本文重點(diǎn)分析Block Size對(duì)性能特別是latency的影響。
什么是Block Size?
Block Size這個(gè)詞在不同的語(yǔ)境中有不同含義。在此文中指的是在OS中運(yùn)行的應(yīng)用發(fā)出一個(gè)IO讀或?qū)懻?qǐng)求所傳送的數(shù)據(jù)單元的大小。無(wú)論你采用傳統(tǒng)存儲(chǔ)架構(gòu),還是融合,超融合等架構(gòu),IOBlock Size對(duì)性能都有影響。
如同下圖所示,一個(gè)IO請(qǐng)求比如搬一塊磚,磚塊的大小對(duì)整個(gè)存儲(chǔ)架構(gòu)中的很多組件的負(fù)荷都有影響。比如HBA,存儲(chǔ)交換機(jī),存儲(chǔ)系統(tǒng)的CPU等等,當(dāng)然存儲(chǔ)介質(zhì)本身對(duì)不同磚塊的處理能力也不同。
上圖摘自博客vmpete.com
為什么Block Size對(duì)存儲(chǔ)性能有很大影響?
對(duì)Throughput的影響:
Throught = IOPsx Block size
同樣是10IOPs,256K blocks 需要傳輸?shù)臄?shù)據(jù)是4K Blocks 的64倍!那么自然會(huì)對(duì)存儲(chǔ)網(wǎng)路的帶寬以及存儲(chǔ)控制器的CPU消耗都有影響。
對(duì)時(shí)延Latency的影響
上圖摘自vmpete.com。 這是在采用存儲(chǔ)性能分析軟件PernixData Architect之后,顯示了不同Block Size對(duì)Lantency的影響。可見(jiàn)當(dāng)Block Size大于64K時(shí)對(duì)Lantency的影響最大。
如何來(lái)應(yīng)對(duì)大數(shù)據(jù)塊IO帶來(lái)的挑戰(zhàn)呢?
以前沒(méi)有工具或簡(jiǎn)單的方法可以很好了解應(yīng)用產(chǎn)生的Block Size。而且在常規(guī)存儲(chǔ)設(shè)計(jì)中,并沒(méi)有太多顧及到應(yīng)用產(chǎn)生的Block Size,往往是根據(jù)一些假設(shè)條件來(lái)做出設(shè)計(jì)決定。即使在存儲(chǔ)陣列中采用閃存,其實(shí)并不能減少。大數(shù)據(jù)塊IO對(duì)HBA,存儲(chǔ)網(wǎng)絡(luò)以及存儲(chǔ)控制器產(chǎn)生的負(fù)荷。并且我們發(fā)現(xiàn)常規(guī)SSD硬盤處理大數(shù)據(jù)塊IO的性能并不理想。
利用IO BlockSize真實(shí)案例:
案例一:
某客戶發(fā)現(xiàn)應(yīng)用性能下降,經(jīng)排錯(cuò)發(fā)現(xiàn)大數(shù)據(jù)塊IO對(duì)Latency的影響極大。在不對(duì)后臺(tái)存儲(chǔ)有任何改變的情況下,采用PernixData FVP軟件和服務(wù)器端NVMe PCI閃存對(duì)存儲(chǔ)性能加速。極大的降低了大數(shù)據(jù)塊IO對(duì)Latency的影響。注意該用戶才用NVMe PCI閃存而不是常規(guī)SSD Drive。因?yàn)槌R?guī)SSD硬盤處理大數(shù)據(jù)塊IO的應(yīng)能并不好。
案例二:
某客戶發(fā)現(xiàn)很多應(yīng)用的性能下降。經(jīng)排錯(cuò)發(fā)現(xiàn)某SQL虛擬機(jī)產(chǎn)生非常多的大數(shù)據(jù)塊IO,對(duì)該SQL優(yōu)化后問(wèn)題解決。
案例三:
某云服務(wù)提供商在所有虛擬機(jī)中設(shè)置 Disk IO Limit,以防止共享環(huán)境中某些虛擬過(guò)度占用存儲(chǔ)資源。vSphere 5.5以后對(duì)mclock diskscheduler作了更改,對(duì)于block size大于32K的IO,從Disk IO limit這個(gè)角度上講,不在認(rèn)為該IO只是一個(gè)IO. 比如 256K blockSize IO會(huì)被認(rèn)為是8個(gè)IO。
了解應(yīng)用Block Size的大致情況,會(huì)對(duì)更好的設(shè)置Disk IOLimit有很大幫助。
Reference: