Pages

Jun 27, 2011

辛苦的對齊 (Align)

按照預設 Windows 2003 以前的版本, 包含 XP, 2000... 等, 並沒有對儲存裝置 (HDD or SSD) 的分割表作規劃, 因此第一個分割表會自動位移 63 sectors, 造就了 32256 bytes (31.5KB) 的偏移.

然而問題就出在這了, Windows Vista 之後的版本, 如 7, Windows 8... 等, 都最少需要 4KB 為邊界作每一次的 IOS 動作, 顯然 31.5KB 沒辦法被 4KB 整除, 因此當正好讀取在 31.5KB 無法整除的邊界時, 就必須要 2 次 IOS 動作.

現在主流的儲存裝置測試主要分兩類: 循序讀寫, 隨機讀寫. 前者沒什麼好說的, 通常可以測試該儲存裝置最大的效能, 然而 Windows 系統碟每秒鐘都會不斷的有資料讀寫, 而這些讀寫往往都是幾個 bytes 而已. 因此 4K 隨機讀寫就成了關鍵, 這項測試結果直接影響使用者對於電腦「反應速度」的「主觀經歷」, 而...4K 隨機讀寫正是 SSD 的特長. SSD 另一個決定性的關鍵是 track-to-track 反應時間, 趨近於 0ms. 而 HDD 受限於主軸馬達轉速與電磁機械磁臂的來回時間, 上述時間都有 8~18ms 之間.

主題拉回來, 那麼如果修改了分割表的位移量, 真的能「看見」改善的效能?


看得見!


WD6400AAKS (7200rpm, SATA) 測試圖

WD5000BEVT (5400rpm, SATA) 測試圖

ST340016A (7200rpm, IDE) 測試圖



數字會說話, 概略分析表如下
WD6400AAKS
4K 寫入 +45%, 讀取 +90%
連續寫入 +1%, 讀取 +0%

WD5000BEVT
4K 寫入 +12%, 讀取 +4%
連續寫入 +16%, 讀取 +17%

ST340016A
4K 寫入 -11%, 讀取 +0% (反而變慢!)
連續寫入 +10%, 讀取 +13%
ps. 這棵硬碟屬於早期的液態軸承硬碟, 2002 年份的老爺貨, 40GB, IDE, 有非常特殊的讀寫特徵 -->> 寫入比讀取快.


結論:
align 選擇「確實」能改變整體讀寫的效率, 不管是 4K 或連續, 引用一下舊文 http://blogs.msdn.com/b/jimmymay/archive/2009/05/08/disk-partition-alignment-sector-alignment-make-the-case-with-this-template.aspx, 其中的原理是減少硬碟處理 IOS 的次數 (這方面是硬碟機的弱項), 藉由每次對齊的處理, 從而減少了「多餘」的 IOS 命令, 「還原」了硬碟機原本該有的效能.

大致就是這樣

(下一篇說明修改 align 的具體步驟)

1 comment:

survivor said...

期待版大的 align 具體步驟~