主題

SSD-被誤解的"寫入放大"

天空の夜明け | 2016-08-28 13:42:59 | 巴幣 10 | 人氣 1205

SSD-被誤解的"寫入放大"

最近大濕看到某些人濫用"寫入放大"這詞
為了釐清到底為什麼SSD會有寫入放大,那用戶該不該擔心這點
所以花了一點時間寫了這篇文

先說結論:
1.SSD一定會有寫入放大(WA),這是SSD必定會遭遇到的本質
(除了可壓縮數據的主控方案,哪顆SSD沒有大於1x的WA?)

2.不可能只要有寫入放大就是有問題,更要小心別誤用寫入放大這個詞(如某某SSD會寫入放大)

3.Intel 535有特定狀態下的高寫入放大
Intel不積極解決也確實是一個比較麻煩的點,現在是依靠夠硬的保固去支撐

4.不代表其它方案的SSD就必定會有和535有相同的情形

5.一般用SMART的累積值算寫入放大其實存在著盲點
==================================================
1.為什麼會有寫入放大,還有寫入放大到底是什麼?
寫入放大,原文"Write Amplification"

簡單來說就是實際寫入NAND Flash的資料量除以主機要求寫入的資料量=寫入放大值

(以下將寫入放大簡稱為WA,因為是倍數所以可以後綴x)
要深入了解為什麼會有WA的現象請看下面這篇
http://www.pceva.com.cn/topic/crucialssd/index-6_7.html

簡單來說例如主機要求寫入1GB的資料時
經過一些主控和NAND Flash間的背景處理後實際寫入NAND Flash的量會高於1GB
這就是寫入放大的現象

所以只要是SSD有WA就是問題嗎? 不見得,這是錯誤的觀念
好或不好是看WA的高低

早期(2008年)是認為WA會大於1x或無限接近於1x
以Intel的X25-M來說,Intel宣稱最佳狀態可以達到~1.1x的WA
相較於同期的方案(那時以JMF602為大宗,也是表現最差的),WA甚至還會高於10
(好一點的有Samsung或MTRON的SLC方案)

直到2009年時有一間現在大家逐漸淡忘的廠商-SandForce
提出了一個能夠降低WA,最佳狀態甚至還能低於1x的技術,也就是DuraWrite
例如主機要求寫入1 GB的可壓縮資料時會被主控即時壓縮到小於1 GB的量
使實際寫入NAND Flash上的資料量更少

那為什麼SandForce不稱它為write attenuation(寫入縮小)之類的?
別問我,可能是SF沒辦法保證每一種負載都能夠小於1x的Write Amplification
自然而然就繼續用Write Amplification了(反正"倍數"也可以小於1嘛)

不過隨著主控和韌體算法的演進,SSD的寫入放大已經有比較好的改善了
所以後來比較少有人在提及

-
2.為什麼最近又開始有用戶關心寫入放大?
原因主要是Intel 535在特定情況下會有高寫入放大的表現
(而且價格便宜,買的人多,那回報數就更多了)

Intel 535(530也有)用的BF29AS41BB0主控骨子裡就是SF-2281(客製版)
但不知道怎麼搞的,大概是Intel在韌體節能政策上的修改
使得535(530也有)在特定情況下的WA相當高,網路上超過30倍的例子也不是找不到

甚至已經有勇者把E9當前值用到=1了,話說為何不送修R
http://www.mobile01.com/topicdetail.php?f=490&t=4741097

-
3.Intel SSD SMART值的E9值和什麼有關?

E9值和寫入量有關(NAND寫入量),照理來說是指剩餘的P/E %
然後E9值不會歸0,頂多降到1(然後就會失去保固)
要是在E9目前值降到1時再一直寫入,SSD還有可能會鎖死

而Intel 535(530也有)的高寫入放大使寫入NAND Flash的資料量極高
使E9值以極快的速度消耗

而Intel對於535和530的這問題似乎也並不是非常積極的要去解決
https://communities.intel.com/thread/46941

最後隔了這麼久的回覆則是...(2016/08/28同一討論串尚無下文)
https://communities.intel.com/message/389443#389443

所以要買535的話建議定時觀察SMART的E9當前值
E8低於20(健康度就會紅燈)就直接送修

算是比較阿莎力的方法,但治標不治本
https://www.ptt.cc/bbs/PC_Shopping/M.1461244961.A.BDB.html

但是依照M01那篇來看
就算E9=1,E8也不會低於20

而Intel客服最後是說有問題就能送修(人損和物理損傷除外)

-
4.現在某些人也會說這個高寫入放大(強調"高")的問題會不會發生在Intel的OX SSD
甚至是其它家的SSD會不會也有高寫入放大的問題

答案:
不同主控和韌體的方案就沒什麼好怕的
目前這問題只有在535才見的到(530也有) ,而520沒有這個問題

像是Intel 730用的是DC S3500/3700的自家主控方案
而Intel 600P用的也不可能是535和530的方案(反倒是用了SMI的N00X94 NVMe PCIe x4主控)
更不用說Intel 750,又或是其它方案的SSD了(也許某些會有,但相對少見)

-
5.只看SSD的SMART值來算WA其實有個盲點,那就是提供給用戶看的資料只是"累積值"

因為不同壓力下和寫入的資料類型會影響寫入放大值,用總合的累積值來算並不是非常嚴謹的做法

以下是簡單的快速驗證法:
測試的是SF-2281VB1的Intel 520 120GB,以它當作範例應該不會有太大的爭議
這是做測試以前的SMART值,照總合值來算WA~1.2x


接到SATA 3Gb/s的接口,所以循序讀寫的速度會砍半(不影響寫入量)
但目前是髒碟狀態(都拿這顆當暫存碟w)

並使用AS SSD Benchmark 1.7.4739.38088做測試
(老話重談,AS SSD用的是比較比較難壓縮+全隨機的數據,對SF主控來說跑分比較吃虧,一次完整測試共5GB的主機要求寫入量)

以累積寫入量的差值來看主機要求確實是5GB,但可以看到NAND累積寫入量的差值只有3GB
這樣跑一次AS SSD Benchmark 1.7.4739.38088的WA~0.6x,和剛剛用累積值算的1.2x差非常多

所以拿累積值來算並不是很嚴謹的做法


測試配備:
CPU:Intel Core i5 2400(關閉C1E&EIST)
RAM:Kingston HyperX Genesis DDR3 1600MHz 4GB*2(CL9@1.5V)
主板:MSI Z77MA-G45
系統碟:Intel 730 240GB(FW:L2010420)
測試對象:Intel 520 120GB(FW:400i,髒碟)
作業系統:Windows 7 Home Preimum x64

結語:
那用戶到底需不需要擔心?
用535/530那就要定期觀察E9當前值,畢竟和保固有關

其它間廠商的方案就不必需要太擔心了,畢竟高寫入放大這個狀況也比較少見
而且保固對寫入量有限制的廠商也相對較少(頂多是主機寫入量,如Samsung)

但不代表不需要去看其它的SMART值
定期看一下,多了解一些值的定義也可以充實一些相關知識,有重映射之類的值也可以及早發現

有錯還請大大協助指正

以上,感謝各位的閱覽:)

創作回應

更多創作