この記事で紹介している製品
WAFとは
概要
WAF(Write Amplification Factor)は、日本語だと「書き込み効率」と訳すことができます。
ユーザー様(ホスト)が書き込みたいデータ量と、ストレージデバイス(デバイス内のNAND Flashメモリ)に実際に書き込みを行ったデータ量にギャップがあり、この書き込み量の比率をWAFと言います。
全くギャップが生じない状態をWAF=1として、WAF=2・3・4~と数字が大きくなるほど書き込み効率が悪いということが判断できます。
影響
SSDを代表としたNAND Flashメモリ(NAND)を使用したデバイスは製品の書き換え回数に上限があるデバイスです。
実際にはホストが書き込みたいデータ以外にも様々なデータが書き込まれるため、製品を市場で使用する前に、効率の良い書き込みができているか? 想定した期間デバイスの寿命が持つか? など事前に検討する必要があります。
このときWAFを意識した使い方をすることで、想定していた製品寿命と実使用上の製品寿命の乖離を抑えることが可能です。
計算方法
ハギワラソリューションズ製のSSDはデバイスの様々な情報をSAMRT情報として出力することが可能です。
WAFを計算する場合は、ID236「ホストがWriteした総セクタ数」とID247「NANDにWriteした総セクタ数」をご参照ください。※1
ホストがデバイスに書き込みを行ったセクタ数を、デバイス(SSDコントローラー)がNANDに書き込みを行ったセクタ数で割ることで、WAFが計算できます。
WAF = ID247 ÷ ID236
※1:製品シリーズにより表示されるSMART情報が異なる場合がございます。
WAFの計算例
例
以下に、あるデバイスより出力したSMART情報を抜粋しました。
(不要な情報は削除しています。ご了承ください。)
ID236:33,830カウントに対し、ID247: 44,460カウントであることから、WAFは1.3程となるので、デバイスに対する書き込み効率が非常に良い状態と判断できます。
ID | 項目 | 生の値 |
---|---|---|
232 | データ移動回数 | 3958 |
235 | HostReadセクタ数 ( 65536セクタ毎に1回カウント) | 54399 |
236 | HostWriteセクタ数 ( 65536セクタ毎に1回カウント) | 33830 |
238 | GCが発生した回数 | 3941 |
239 | Refreshが発生した回数 | 17 |
241 | 消去回数(Max.) | 26 |
246 | FlashReadセクタ数 ( 65536セクタ毎に1回カウント) | 37247 |
247 | FlashWriteセクタ数 ( 65536セクタ毎に1回カウント) | 44460 |
249 | 消去回数(Min.) | 2 |
251 | SWLが発生した回数 | 0 |
255 | 消去回数(Ave.) | 7 |
WAFが悪化する要因
概要
次にWAFが悪化する要因を挙げてご説明いたします。ホストで対応可能な部分もありますので、ご協力いただくとデバイスに優しい使い方ができます。
要因1:デバイス内部処理
他の記事でもお伝えしている通り、NANDは上書きをすることが出来ない特性をもっています。
その為デバイスが内部処理を行う場合、処理対象のデータを新しいページ(もしくはブロック)に書き込み、古いデータを無効化します。NANDに対して追加の書き込みを行うのでWAFが上昇する要因になります。
内部処理とは、ガベージコレクション、ウェアレベリング、リフレッシュなどを指します。
またSMART情報など製品管理情報は、デバイスがなにかしらの情報を更新した場合、NANDに記録します。
こちらの項目についてはデバイス内部の処理のため、残念ながらユーザー様側で制御をすることはできません。
要因2:ユーザーデータの書き込み
ホストがデータを書き込む場合、デバイス側に直接データを書くことはありません。
アプリケーションやOSなどを経由して書き込みデータがデバイス側に送られ、送られたデータをデバイスがNANDへ書き込みます。
その際、冒頭で触れた「ユーザー様が書き込みたいデータ量と、ストレージデバイス(デバイス)に実際に書き込みを行ったデータ量にギャップが生じる」といった現象が起きます。
データ量にギャップが生じる例
例
下記のような条件を仮定します。
①書き込みデータサイズは4KiB
②1ページ毎にデータを管理している
③1ページのサイズは16KiB
デバイスは1ページ毎(=16KiB)でしかデータを管理できないので、ホストが4KiByteのデータを書き込むと、実際にはデバイスには16KiByteとして書き込みを行います。
つまりこの場合のWAFは
WAF = 16KiB / 4KiB = 4.0
データサイズが4倍になっている為、効率が悪い書き込みを行っていると判断できます。
書き込み効率を良化させるには、デバイスに適切なサイズのデータで書き込みを行う必要があります。
本例の場合はホスト側で一度4KiB*4のデータにまとめてデバイスに書き込むことで改善可能です。
TBWとDWPD
TBW(Total Byte Written)
そのSSDに生涯書き込むことが可能な総データサイズを表します。
TBW=100TBのSSDではTotalで100TBのデータを書き込むことが可能となりますが、実はここに落とし穴があります。メーカーが提供するTBWの値は、特定の条件下で計測したWAFをベースに計算されています。
前述のとおり使用方法によりWAFの値は異なりますので、TBWの値のみを鵜呑みにするのは危険です。
TBW = デバイス容量 × 書き換え保証数 ÷ WAF
DWPD(Drive Writes Per Day)
保証期間内においてユーザーが1日ドライブに書込むことが出来る回数となります。
容量240GB、DWPD=2.0のデバイスであれば、毎日480GBのデータを書き込む使い方でも製品保証期間内では寿命に到達しない計算になります。
この値も、TBWの説明と同様に、WAFによって値が変わります。
DWDP = TBW ÷(デバイス容量 × 製品保証日数)
まとめ
結論
「SSDの選びかた」の記事で詳しいご説明をしておりますが、
同じデバイスでも、使い方(=アクセスパターン)により、デバイスに対する書き込み効率は違います。
その為、TBWやDWDPなどの値はあくまでも目安とし、実運用に沿った計算をする必要があります。
次回
あれこれと書いてみましたが、次回コラムでは、同一デバイスに対してJEDECワークロード・Sequential Write・Random Writeのアクセスパターンのアクセスを行い書き込み効率がどの程度変化するか検証を行います。
次回もご期待ください!!!!!
他社商標について
記事中には登録商標マークを明記しておりませんが、記事に掲載されている会社名および製品名等は一般に各社の商標または登録商標です。
記事内容について
この記事の内容は、発表当時の情報です。予告なく変更されることがありますので、あらかじめご了承ください。