我們常常使用 CrystalDiskMark,但你知道它各個數據的意義嗎?

CrystalDiskMark 是大家在選購 SSD 前最常會去關注的一個測試項目;在這個儲存測試軟體中往往會有 8 個框框,雖然都知道分數越高越好,但你真的了解這些框框所代表的意思嗎?

在正式介紹前,儲存裝置一般來說會有 2 個常見的效能指標 – 循序讀寫(Sequential)與隨機讀寫(Random)。

所謂的循序讀寫,也許可以用下面這個例子來說明:

將數 10 部 1TB 大小的影片寫入儲存裝置中,其流程為:
1. 從儲存裝置的 Map Table 標記要使用的 Blocks(磁區 1 ~ 10,000);
2. 抹除(Garbage Collection, GC)一個空間;
3. 將資料寫入至標示的 Blocks 中。

假設第 1 部電影的磁區為 1 ~ 10,000、第 2 部從 10,001 ~ 20,000,以此類推到第 10 部電影的 100,000 磁區位置,若使用上常常讓數 10GB 檔案進行讀寫,那麼消費者在選購時,需將循序讀寫列為重要效能指標。

Windows 作業系統更新大家都常遇到,更新安裝檔案可能就只有幾百 MB,但卻要讓你等上好一陣子;說穿了,更新時置換眾多的動態程式庫,檔案雖然不大,但檔案數量卻較為龐大,也許數百、也許數千,這往往說不準。若儲存裝置的 4K 隨機讀寫表現不佳,可能會碰到 CPU 或記憶體未處在滿載情況,可是電腦卻呈現卡頓問題。

4K 隨機讀寫往往泛指零碎小檔操作效能,如遊戲、各式程式或者是作業系統往往是由數以千計的動態程式庫組成,空有 CPU、GPU 效能卻沒有匹配的 I/O 效,就會出現過地圖跑條很慢、無接縫地圖遊戲會莫名卡頓等等現象。

跟著回到 CrystalDiskMark 這個測試軟體的 8 個框框。左上第 1 個框框為 Seq Q32 T1,代表著循序讀寫,但 Q32 跟 T1 分別意味著什麼?

我們可以試著將一顆硬碟或是 SSD 用車站來做比喻,佇列深度 Queue Depth(QD)為列車幾節車廂、執行緒(Thread)為不同月台,假設一個月台最多可以容納 200 人同時上下車,那 8 節列車(QD8)就可以載客 500 人;如果同一時間要下車就需要花2.5(500 /200)個單位時間才能上全部旅客下車,這就是 I/O 延遲(Latency),只是月台越多,乘客需要花更多時間研究哪個月台上下車的話,付出的代價(CPU 運算能力)會更多。

更簡單來說,想想是在台北車站轉車會比較複雜,還是在東京車站轉車比較複雜,這應該就不難理解了。

QD 越多,延遲(Latency)越高;舉例來說,QD2 延遲一定比 QD1 高,而 Thread 越多 CPU 效能越吃重,程式也更難開發維護;低 QD 可以達到更高的吞吐量(Throughput)為佳,好比說 QD1 = 100MB/s > QD1 = 50MB/s。

附上 CrystalDiskMark 跑分;
4KiB QD1 Thread1 R 179.2(100%)/ W 169.3(100%);
4KiB QD2 Thread1 R 411.3(229%)/ W 359.9(212%);
4KiB QD1 Thread2 R 296.5(165%)/ W 275.9(162%);

從分數可以簡單看到,提高 QD 深度比多開 Thread 的效能成長幅度更高。