資源供給:IO子系統
簡單案例描述:
某營運商的OCS實時計費系統實時計費效率不夠,磁盤IO使用率100%。簡單咨詢了下其流程結構:11個并行查詢程序的結果送到一個進行中心進行處理。開發生分析是磁盤IO處理能力不足,進行中心富餘。我問了如果查詢資料每秒100M傳回是否可以達到處理效率,回答是肯定的。處理措施非常簡單,改變并行查詢為串行。在開發商簡單修正之後,IO子系統獲得足夠的資料,使進行中心的效率無法支撐。
思考一下,為什麼?在本案的進行中,我甚至都沒有登入系統,登入資料庫,當然也沒有看AWR。IO子系統的資源不是無限的,特别磁盤是一個機械裝置,當超過其負載的時候其響應時間會大幅增加。11個并行查詢将産生1GB/s的讀寫要求,HBA卡,SAN Switch,EMC DMX4000都無法支撐如此巨大的資料庫吞吐要求,IO子系統被塞死,響應時間大幅延遲。
IO子系統從性能優化的角度而言是最重要的資源,原因非常簡單,IO子系統是系統主要處理構件中響應時間最差的部分,必須不斷的優化使其可以和記憶體效率比對。換句話說,從優化的角度,我們需要做以下幾件事情:
(1)、我們需要讓記憶體做更多的事情。
(2)、磁盤系統自身進行大量的緩存,同樣是為了讓記憶體做更多的事情。
(3)、磁盤系統自身要提高足夠的吞吐量以支援短時間的緩沖失效。
我們來看看Oracle資料庫的IO相關流程,假設為SAN存儲架構:
Oracle Memory(Host memory) à Filesystem(LV) à HBA à SAN Switch à Array Disk Control à Array Buffer à Disk,以上鍊路中任何一個鍊路出現問題都會導緻IO響應被延遲。
我們再來看看整個鍊路的速度:
Oracle memory(Host memory): 10ns~50ns
Filesystem: 通路,依賴于CPU能量的效率,穿過檔案系統估計響應時間估計至少會從ns延遲到us級别。說的簡單些,檔案系統就是一個字典管理器,完成和lvm或者磁盤系統的映射。
LV:LVM是磁盤管理系統,使使用者不需要直接和磁盤打交道,同樣的你可以認為LVM是一個字典管理器,完成映射操作。 自然再次降低了響應速度。
HBA卡:HBA卡比較簡單,是一個簡單的通路
SAN Switch:SAN swicth也比較簡單,表現為一個簡單的通路,特别在交換式結構中。
Disk Array control:磁盤系統的控制器,不僅僅是一個通路,在磁盤系統内部實作磁盤管理。
Disk Array cache: Disk, Array cache是磁盤系統性能的重要保證之一,使使用者不需要通路磁盤就可以獲得資料,使使用者程序不需要等待直接寫到磁盤就可以認為寫操作完成。
Disk: Disk是資料的最終載體,最終的寫入資料需要存儲到這裡,最初的擷取資料需要從這裡擷取。
作為優化者,我們需要大緻了解各個部件的狀況,不需要很精确。我們需要知道,任何IT資源裝置在達到資源限制的時候,其響應時間将大幅度降低。
CPU:一般每個CPU處理200M以上的資料,其帶寬在6.4G以上
記憶體:50ns,一般完成完整的循環處理之後大約在us~20us,帶寬一般在6.4GB以上。
HBA卡:2GB或者4GB,通路的損耗相對較小,一般可以達到其200M和400M的速度,IOPS幾乎僅僅受帶寬的影響,一般可以達到幾十萬甚至幾百萬的性能,很少會出現問題。
SAN交換機:SAN交換機和HBA卡類似,主要是一個通道功能,性能主要還是受限于帶寬。對于SAN交換機來說,一般其帶寬是共享的,比如2G的SAN SWICTH,16口去隻提供16GB的總帶寬容量,可能會出現問題。對于存儲系統,永遠不要輸送超過其能力的輸出是一個基本原則。
Disk Array Control:2GB,4GB,比較HBA卡和SAN Switch其損耗較高,大約可以獲得180M和360M左右的吞吐量,大約在10萬左右iops。
Disk array cache:記憶體
Disk:FC Disk,一般順序讀100M,200M,400M左右都速度,寫速度可能要是在60%~70%左右,随機讀處理速度大幅度下跌,一般在10~20M。Iops一般在150~250之間。可以看到如果僅僅考慮順序讀,Disk将和HBA卡,SAN Switch和Disk Control的效率相當,而我們一般來說一塊FC Disk Control至少要加載10塊以上的磁盤,甚至100多,200多塊磁盤。
檔案系統:檔案系統的引入會大幅度降低處理性能,特别是現代日志檔案系統對于密集寫應用的殺傷力是很大。其延遲相對時一個變數,依賴于CPU能力。不過在未發生沖突的前提下,其速度相對于磁盤速度還是微不足道的。
LVM:LVM是一個磁盤管理系統,為了友善管理同樣引入了開銷,這個環節的開銷比較檔案系統略小,特别是對于寫操作的性能比較檔案系統帶來更大的好處。事實上,檔案系統基本上都建立在LVM之上。

從性能角度考慮,必須是後續的處理路徑需要強于前面的處理能力,才不會導緻阻塞。從投資來說,CPU是最為昂貴的投資,我們需要使後續的所有配置都要強于CPU的配置才可以充分的發揮硬體的性能。
我們以8顆CPU為例子:
8顆CPU:=8*200 = 1600M
4塊4G HBA:4*400 = 1600M
1個或者2個至少容量為1600M的SAN交換機。
至少4塊4Gb的Disk Control,總帶寬容量不低于16GB
假設每塊磁盤15M的吞吐量,至少需要1600/15 = 100塊磁盤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/92650/viewspace-776749/,如需轉載,請注明出處,否則将追究法律責任。
轉載于:http://blog.itpub.net/92650/viewspace-776749/