DS4000(FAStT系列) Storage Manager中cache引數設定詳解

ibmpcii發表於2009-04-17

產品: FAStT、DS4000

主機平臺: p/i/z/x-Series,SUN, HP,...

作業系統:AIX,Sun Solaris,HP-UX, Linux

使用FAStT Storage Manager工具,可以設定不同的cache引數。這些引數的設定直接影響到FASTT儲存伺服器的效能和資料可用性,下面對這些引數做以解釋。

Cache memory是控制器上用於臨時保留資料的易失性儲存器(RAM),比磁碟訪問速度要快。Cache memory提供給讀寫操作共用。有效地使用RAID控制器的Cache memory,能使FAStT儲存伺服器發揮更好的效能。

使用FAStT Storage Manager工具,可以設定不同的cache引數,包括:
Read caching
Cache block size
Cache read-ahead multiplier
Write caching or write-through mode
Enable or disable write cache mirroring
Start and stop cache flushing levels
Unwritten cache age parameter

下圖是用Storage Manager建立邏輯驅動器時的預設設定,可以對其進行調整。

這些引數的設定直接影響到FASTT儲存伺服器的效能和資料可用性。眾所周知,效能和可用性通常是一對矛盾。如果你要獲得最好的效能,更多的時候,你必須犧牲系統可用性;反之亦然。預設情況下,讀快取和寫快取用於所有的邏輯驅動器;對於所有的寫資料,兩個控制器之間的快取互為映象。寫快取只在控制器電池充滿電時可用。預讀方式通常不用於邏輯驅動器。

Read caching(讀快取)

將讀快取使能不會造成資料丟失風險。很少情況下,需要關閉讀快取為其它邏輯驅動器提供更多的快取。

Read-ahead multiplier(預讀乘數)

該引數會影響讀效能,錯誤的設定會導致極大的負面影響。它控制在一個讀請求之後,有多少連續資料塊被儲存到快取裡。

顯然,對於隨機I/O負荷,這個值應該為零。否則,每一個讀請求將不必要地預取額外的資料塊,而這些資料塊又很少用,所以會影響效能。對於連續I/O的工作負荷,設定為1到4是一個合適的值,這主要決定於具體環境。當使用該設定時,一個讀請求引發預取多個連續的資料塊到快取,從而加速併發訪問,使得在磁碟和快取之間,使用更少的I/O來完成同樣資料量傳輸,在連續I/O的工作負荷情況下最佳化了效能。如果該值設定過高,快取被從不需要的預讀資料所添滿,將會導致總體效能下降。使用performance monitor觀察快取命中率,獲得一個合適的值。

Write caching(寫快取)

寫快取使儲存系統先將資料寫入快取,而不是直接寫入磁碟。這會明顯的改善效能,尤其是對於隨機寫的資料庫應用。對於連續寫的環境,效能會隨寫資料的大小不同而變化。如果邏輯驅動器只用於讀訪問,關閉該邏輯驅動器的寫快取會提高整體效能。

Write cache mirroring(寫快取映象)

FAStT write cache mirroring 能保證一塊RAID卡失效後的cache資料完整性。這使資料有更高可用性,但是降低了效能。資料在控制器之間跨過磁碟端的光纖環路形成映象,與正常的資料傳輸發生競爭。

建議使用該功能,以保證一塊RAID卡失效後的cache資料完整性。

預設情況下,寫快取對另一個控制器寫快取資料進行映象,即便是邏輯驅動器移動到另外一個控制器。否則,如果邏輯驅動器控制權切換到另一個控制器並且快取裡還有沒寫入的資料,邏輯驅動器的資料就會丟失。

如果關閉寫快取映象,在控制器失效時有可能丟失資料,並且可能導致fabric中的路徑失效。FAStT控制器快取有電池保護,保證掉電時不會丟失資料。如果電池沒有充足電,比如剛剛開機時,控制器會自動關閉寫快取。如果使能寫快取,即便沒有電池保護,寫快取也被啟用,會有資料丟失的風險。

Write caching 或 write-through

write-through意思是寫操作根本不使用快取。資料總是直接寫入磁碟。關閉寫快取,可釋放快取用於讀操作。(快取被讀寫操作共用)

Write caching可以提高寫操作的效能。資料不是直接被寫入磁碟;而是寫入快取。從應用程式的角度看,比等待完成磁碟寫入操作要快的多。因此,可以提高寫效能。由控制器將快取內未寫入磁碟的資料寫入磁碟。表面上看,Write cache方式比write-through方式的讀、寫效能都要好,但是也要看磁碟訪問方式和磁碟負荷了。

write-back(write cache)方式通常在磁碟負荷較輕時速度更快。負荷重時,每當資料被寫入快取後,就要馬上再寫入磁碟以釋放快取來儲存將要寫入的新資料,這時如果資料直接寫入磁碟,控制器會以更快的速度執行。因此,負荷重時,將資料先寫入快取反而會降低吞吐量。

Starting and stopping cache flushing levels

這兩個設定影響控制器如何處理未寫入磁碟的快取內資料,並且只在write-back cache方式下生效。快取內資料寫入磁碟稱為flushing.你可以配置Starting and stopping cache flushing levels值,這個值表示佔用整個快取大小的百分比。當快取內未寫入磁碟的資料達到starting flushing value時,控制器開始flushing(由快取寫入磁碟)。當快取內未寫入磁碟資料量低於stop flush value時,flushing過程停止。控制器總是先flush舊的快取資料。快取內未寫入資料停留超過20秒鐘後被自動flushing.

典型的start flushing level是80%。通常情況下,stop flushing level也設定為80%。也就是說,控制器不允許超過80%的快取用於write-back cache,但還是儘可能保持這一比例。如果你使用此設定,可以在快取記憶體更多的未寫入資料。這有利於提高寫操作的效能,但是要犧牲資料保護。如果要得到資料保護,你可以使用較低的start and stop values。透過對這兩個引數的設定,你可以調整快取的讀、寫效能。經測試表明,使用接近的start and stop flushing levels時效能較好。如果stop level value遠遠低於start value,在flushing時會導致磁碟擁塞。

Cache block size

這個值指快取分配單元大小,可以是4K或16K。選擇合適的值,可以明顯的改善快取使用效能。

如果應用程式更多時候訪問小於8K的資料,而將cache block size設定為16K,每次訪問僅使用一部分cache block。在16K的cache block裡總是儲存8K或更小的資料,意味著只有50%的快取容量被有效使用,使效能下降。對於隨機I/O和小資料塊的傳送,4K比較合適。另一方面,如果是連續I/O 並使用大的segment size,最好選擇16K。大的cache block size意味著cache block數量少並可縮短快取消耗延時。另外,對於同樣大小的資料,cache block size大一些,需要的快取資料傳送量更小。

一般來說,在實施DS4000系列儲存解決方案前,建議用一週的時間做效能測試和監控並調整相關的效能引數。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18933903/viewspace-1020780/,如需轉載,請註明出處,否則將追究法律責任。

相關文章