陣列卡緩存模式- 透寫(Write Through)和回寫(Write Back)


Write Through和Write Back是陣列卡Cache的兩種使用方式,也稱爲透寫和回寫。

Write Through也是RAID陣列卡的默認模式。
當選用write through方式時,系統的寫磁盤操作並不利用陣列卡的Cache,而是直接與磁盤進行數據的交互。而write Back方式則利用陣列Cache作爲系統與磁盤間的二傳手,系統先將數據交給Cache,然後再由Cache將數據傳給磁盤。

在採用這兩種不同的Cache使用方式時,對於系統性能有何影響呢,接下來我們就以對比實驗來揭開這一謎題。 測試分兩種模式,一是在在安裝陣列卡後,採用它的缺省設置,此時陣列卡Cache採用的是Write Through,而ACCESS並非是RW,而是READ。另一測試模式則ACCESS採用的是RW,陣列卡Cache採用的是Write Back。


在陣列卡的使用配置中,大家可能更多的會考慮使用哪種陣列方式,而忽略了對陣列卡其它一些設置項的關注,而正是這種疏忽常常會帶來很大的性能差異,接下來我們就以cache寫入方式爲例,來揭示在進行陣列卡配置時不同的設置對於系統性能產生的影響。

  此次進行對比分析時我們所使用的服務器平臺爲一臺IBM System X3550 M3,該服務器配有兩個至強5630處理器,6條4GB DDR3 1333內存。磁盤爲4塊2.5英寸,容量爲146GB,帶16MB緩存的萬轉硬盤,它所使用的陣列卡是一塊IBM ServeRAID M5015,該陣列卡的設計規格與LSI MegaRAID SAS 9260-8i完全相同。

  接下來我們就來介紹在對比分析時,磁盤陣列卡的設置過程 。在服務器系統啓動時,首先進入到服務器BIOS界面下,並選擇System Settings項。


系統BIOS界面

   接下來選擇Adapter UEFI Drivers項。


System Settings界面

  選擇LSI EFI SAS Driver磁盤陣列卡。

 
Adapters UEFI Drivers界面

  進入到磁盤陣列卡的配置界面。  


磁盤陣列卡配置界面

    在下邊的配置界面中可以看到,我們利用該陣列卡及4塊硬盤組建了一個RAID 5陣列。


RAID選擇和配置界面

  在這裏我們主要關注的是Default Write選項,該選項有Write Through、Always Write Back以及Write Back with BBU三種選擇,其中Write Back with BBU是陣列卡配有Battery Backup模塊元時的可選項,它的作用是用以在系統斷電時保護Cache中的數據,避免斷電造成中間數據的丟失。

  另外就是Access選項,該項用於規定在讀、寫和讀寫時使用緩存。該陣列卡缺省設置爲讀,用戶可根據實際應用需要來選擇,不過通常爲了平衡系統的讀寫性能,最常採用的是RW模式。

   
陣列Cache模式設置   


  Write Through和Write Back是陣列卡Cache的兩種使用方式,也稱爲透寫和回寫。當選用write through方式時,系統的寫磁盤操作並不利用陣列卡的Cache,而是直接與磁盤進行數據的交互。而write Back方式則利用陣列Cache作爲系統與磁盤間的二傳手,系統先將數據交給Cache,然後再由Cache將數據傳給磁盤。

  在採用這兩種不同的Cache使用方式時,對於系統性能有何影響呢,接下來我們就以對比實驗來揭開這一謎題。 測試分兩種模式,一是在在安裝陣列卡後,採用它的缺省設置,此時陣列卡Cache採用的是Write Through,而ACCESS並非是RW,而是READ。另一測試模式則ACCESS採用的是RW,陣列卡Cache採用的是Write Back。

Write Through和Write Back下的對比
讀取IOps

 Write Through和Write Back下的對比
讀取吞吐量 

Write Through和Write Back下的對比
寫入IOps

 Write Through和Write Back下的對比
寫入吞吐量 

  從以上4張測試對比圖我們可以看到一個有趣現象,那就是在兩種不同的工作模式下,缺省設置與在RW且Write Back配置下相比,前者的讀取性能要遠高於後者,而寫入性能則剛好相反,可謂涇渭分明。

  導致這一現象的原因主要來自兩個方面,一是Access選擇的不同,缺省模式下采用的是read,這直接提升了該模式下系統的讀取性能。然而在寫入時,由於缺少了陣列卡Cache的支持,系統要寫數據到磁盤時,會直接進行磁盤寫入,而與系統的I/O能力相比,磁盤的讀寫速度要慢出很多,這直接致使系統寫盤的下降。

Write Through和Write Back下的對比
Netbench測試結果對比 

  Netbench測試結果主要反映的是系統被用作文件服務器時,能夠爲用戶訪問提供的數據吞吐量。由於該項重點考查的是服務器的磁盤讀取性能,因此該服務器在缺省模式下比另一模式下有2.5倍的性能優勢也就不足爲奇。

Write Through和Write Back下的對比
SQL2005測試結果對比

   在SQL2005測試中,我們看到兩種不同模式在性能結果上基本相當,這是該項測試主要考察的是在數據庫的查詢、添加、刪除、修改等操作時服務器的處理能力,該項測試中更爲偏重於對數據庫的查詢,而實際的寫盤操作要遠少於讀盤操作,這就使得缺省模式下系統超強的讀取性能彌補了它寫盤較慢的不足。結果使得測試成績相差不多。

  通過以上幾項測試大家不難發現,在陣列卡的設置中,不僅僅是RAID方式會影響到存儲子系統的讀寫性能,陣列卡中一個小小的設置往往會帶來應用性能的巨大差異。因此在陣列卡的使用中,對於如何設置大家還真應該重視。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章