Block size 常見的4K 8K 16K....,Block是越大越好嗎?
以下是我原本認知:
假設我有一個檔案是50K,如果是8K Block只要 7個block 浪費6K的空間
如果是4K Block需要 13個block 浪費2K空間
所以block越大讀寫效能越好但空間浪費比較大!!
越小讀寫效能比較差但空間比較不浪費!!
但為什麼我們在做IOPS測試時block越大寫入越慢(例如:4k比2k慢)?
請問各位大大是我的觀念有問題嗎??請指教!!
xsuper0027提到:
Block size 常見的4K 8K 16K....,Block是越大越好嗎?
要看應用, 常讀寫大檔, 用大的block, 反之, 用小的.
xsuper0027提到:
假設我有一個檔案是50K,如果是8K Block只要 7個block 浪費6K的空間如果是4K Block需要 13個block 浪費2K空間
這是正確的.
xsuper0027提到:
所以block越大讀寫效能越好但空間浪費比較大!!越小讀寫效能比較差但空間比較不浪費!!
這是誤解, 如第一個回答, 要看應用.
xsuper0027提到:
但為什麼我們在做IOPS測試時block越大寫入越慢(例如:4k比2k慢)?
這是當然的, IOPS和Block size成反比. 但IOPS的大小只是實驗室的數值, 還是要看應用, 常讀寫大的檔案, 用大的block, 反之, 用小的.
至於januslin大提供的連結中的資料, 缺少一個重要的觀念, stripe的大小是一個重要的設定, stripe如其名, 是將資料以帶狀分散寫入許多磁碟中, 如果和block大小平衡, 來提高讀寫效率, 這時block如果太大, 造成stripe的利用效率低, 反而會慢, 例如, 常讀寫大的檔案, 可以利用stripe來將檔案分散到許多磁碟中, 如果磁碟多, 可以用小一點的block, 使得資料的讀寫分散在不同的磁碟中, 提高讀寫效率.
之前我建一個備份系統, 就花了許多時間分析stripe和block的平衡. 還有分割區要對齊.
bizpro提到:
這是當然的, IOPS和Block size成反比. 但IOPS的大小只是實驗室的數值, 還是要看應用, 常讀寫大的檔案, 用大的block, 反之, 用小的.
抱歉您這樣說我更不明白了,iops代表者每秒地的寫次數也就是說數值越大讀寫效能越好,以我的舉例來說50K的檔案如果用8K的block我只要寫7次反倒是用4K要寫13次,所以應該是block越大寫入越快才是,所以IOPS和Block size應該成正比才是,您可以舉個例子嗎??
您說的stripe我的認知應該也是跟您一樣只是block大小的部分我還是想不通,如果我有兩個磁碟做stripe這時我寫一筆資料他會同時寫入到兩個磁碟到這邊都沒問題,但寫入的磁碟應該也是block大一點比較好,因為會減少寫入次數,但您卻說如果磁碟多可以用小一點的block,這邊我搞不太懂。
IOPS是一個計算值, 基本公式是:
IOPS * Block Size * spindles = 硬碟的傳輸速率(頻寬, throughput)
, 其中硬碟轉軸數spindle是固定的, 而硬碟的傳輸速率(頻寬)是物理性的, 不可能無限增加, 因此, 當增加Block size時, 在硬碟的物理限制下, IOPS就會下降.
廠商提出的IOPS, 應該會有序列的IOPS和隨機的IOPS.
至於50k的傳輸, 不是除以block size的來算的, 而是和應用程式有關.
因為事忙, 其它問題再補充了, 以下是一些參考資料:
http://wintelguy.com/2013/20130406_disk_perf.html
http://www.thesanman.org/2012/03/understanding-iops.html
第二個連結的影片介紹的部份英文講稿在這:
http://www.virtualinstruments.com/ipm-blog/best-practices/understanding-iops-mbs-and-why-they-arent-enough/