storage儲存的cache快取相關機制write-though和write-back(write-caching)

wisdomone1發表於2013-04-22

1,write-though即寫操作直接寫入磁碟,不使用快取;
  即關閉寫快取
  這樣就釋放了更多快取給讀操作


2,快取用於讀寫操作

3,write caching提升寫操作的效能,因為先寫到快取中,再由儲存的控制器定時把快取資料寫入到儲存中
  write caching也叫write-back

4,到底是write-though或是write-back(write caching)哪種效能更好;和磁碟的工作負荷及磁碟訪問方式有關

5,如果磁碟負荷很輕,比如過n久才發生io,而不是高併發的io;此時把資料先寫在快取,然後由控制器把快取中的資料
  寫入到磁碟中;自然是寫效能很高
 
  但如果磁碟負荷相當重,比如不停發生io,這時把資料先寫入快取,為了寫入新的資料,快取中的資料必須要馬上
  寫入到磁碟中,為新的io把快取騰出來;這樣你想想,一個寫操作要分為2次完成,反而減少了寫效能
 
6,上述說到如果先把寫的資料放在快取中,哪麼控制器會定時把快取的資料寫入到磁碟中,到底多久把快取資料寫入
  到磁碟,這裡有幾個引數控制
 
  且僅與write-back(write caching)有關
 
  starting cache flushing level
 
  stopping cache flusing  level
 
  二參數列示佔用整個快取的百分比
 
  如果快取中未寫入磁碟的資料達到starting cache flushing level,控制器開始把快取資料寫入到磁碟
 
  如果快取中未寫入磁碟的資料低於stopping cache flushing level,控制器停止把快取資料寫入到磁碟
 
  控制器總是先寫入舊的快取資料
 
  快取中未寫入磁碟的資料在快取中20秒會自動寫入到磁碟
 
7,典型配置二引數為80%,可以快取更多的資料,提升寫效能,但會犧性資料保護(因為更多的資料在快取中,可能儲存掉電就loss)     

  最好二引數配置成一樣
 
  (因為由快取寫到磁碟的動作一直停不下來,所以會導致磁碟不停的寫,即造成block disk)
  如果stopping cache flushing level遠小於starting cache flusing level,由快取寫入磁碟會導致磁碟阻塞
 
8,cache block size
   指定快取分配單元的大小
  
   可以指定4k或8k或16k
  
   選擇合理的值,可以提升快取的效能
  
   如果應用程式常常訪問小於4k的資料,而把cache block size配置為16k,每次僅使用一部分cache block的空間,造成浪費
  
   如果應用程式比如oracle多是隨機io和小資料塊,4k比較合適;
  
   如果是資料倉儲它多是順序io和大資料塊,16k比較合適 

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

相關文章