メモリ基本講座【番外編】SSDの寿命を延ばすために必要なWAF(書き込み効率)のおはなし(第1回)
本ブログは、サーバにも間接的に影響があるWAFの話をしてみたいと思います。
WAFとはWrite Amplification Factorの略で、日本語でいうと「書き込み効率」になります。この書き込み効率ですが、SSDの製品寿命に関わる部分になり、意外と侮れません。
そこで、今回WAFについてじっくりとお話ししたいと思います。
目次
WAFとは?
SSDの設計上、NANDフラッシュメモリに書き込まれたデータ量と、ホストからSSDに書き込まれたデータ量の比率をWrite Amplification Factor(WAF:書き込み効率)という指標で示します。WAFの一般的な計算式は、下記の通りです。
図1. WAFの計算式
理想的なストレージシステムのWAFは1です。ランダムアクセスやリードモディファイライトが増えると、書き込み効率は低下します。Windowsなどのオペレーティングシステムに使用される実際のSSDのWAFは通常2~4です。つまり、ホストからのデータ書き込みのみの場合、SSDでは想定の2~4倍の量のデータが書き込まれます。
この状態はあまり好ましくないことのように思われるかもしれませんが、SSDやSSDのファームウェア設計では、このような書き込み負荷の増加が考慮されています。実際のところ、WAFがこの程度の範囲であれば、SSDは十分な期間使用することができます。
ただ、実際はWAFを意識した使用方法をすれば、よりデータシートスペックでのEnduranceと実際使用した時のEnduranceの差分を抑えることが可能です。要は、WAF=1に近づけて使用するということで、TBWの消費も抑えることができるようになります。
WAFが高ければ、TBWの消費率も高くなるため、Endurance効率が悪くなります。実際のところ、TBWはWAFをベースに計算されているので、WAFとTBWには非常に密接な関係があります。
WAFが高くなる要因は?
SSDの設計が優れていても、WAFが想定よりも高くなる場合があります。これもSSDへのアクセス方法が大きく影響します。例えば、デスクトップPCを使用していると、通常のアクセス方法は時間の経過とともに大きく変化します。アクセス方法はあるときには重く、あるときには軽くなります。そのため、WAFが高くなる原因として、以下の点が考えられます。
1. SSDの空き容量不足
ドライブ容量がいっぱいになることや空き容量がわずかになることにより、バックグラウンド処理(ガベージコレクション、ウェアレベリング等)で新しいデータを受け入れるための空き領域を常に確保することは難しくなります。
ドライブがいっぱいになっても通常のワークロードは相変わらず高く、摩耗が増える心配がある場合は、可能な限り未使用の領域を残しておくことをおすすめします。
もしくは、SSDの容量を増やせば、同じアクセス方法でも摩耗が比較的軽減されます。当たり前のことですが、動作条件が同じであれば、1000GBのSSDを使用すると、500GBのSSDの2倍寿命が長くなります。
SSDの未使用領域を残しておくと、SSDが保存データを効率的に管理するためにとても良いです。SSDの使用済み容量が常に90%以上の場合、WAFの観点からSSDの容量を増やすことを検討する必要があります。
2. 大量の小規模ファイルの高頻度なコピー、削除
低容量のファイル転送でもWAFが高くなることがあります。画像ファイルやテキストドキュメントなどの小規模なファイルを大量に高頻度でコピー、削除等をすれば、WAFは高くなる可能性があります。その理由は、個々のファイルが占めるのはNANDブロックのごく一部にすぎなくても、小規模なデータ構造の方がSSDファームウェアによって集約・移動される可能性が高いためです。動画ファイルなどの大容量ファイルはブロック全体を占める可能性があるため、移動頻度を少なくする必要があります。
SSDは小容量のランダムアクセスよりもサイズの大きなシーケンシャルアクセスを得意としています。つまり、頻繁に削除または変更が発生する大量の小容量ファイルよりも大容量ファイルの方が処理に適しているということです。
大規模なRAID構成の場合は、転送サイズを大きくしてください。基本的にはシーケンシャルでの転送サイズは128KBで設定します。デスクトップPCでの小規模なソフトウェアベースのRAIDでは、転送サイズの考慮はWAFへの影響はあまりありません。
実際にWAFを確認してみる
とあるメーカのVendor Specific NVMeコマンドでMicron 9400のWAFを確認することができます。
WAFを確認するSSDは9400 30TBになります。
図2. 9400 30TBの確認
Vendor SpecificコマンドでのNANDへの書き込みとHostからの書き込みデータ量を確認します。
図3. コマンドでの確認
WAF = nand_bytes_written / host_bytes_written = 19996136 / 13600701 = 1.47
SSDに対して、データ書き込みがそれほど行われていない状態でのWAFになりますので、現時点のWAFはそれほど高くありません。
このWAFの値をRAID環境でありながら、常に1に維持できるソリューションがあります。それが、Pliops社のXDPです。
以前、サバストでXDPカードをご紹介しました。XDPはランダムアクセスをシーケンシャルアクセスに変換してSSDに対して書き込みを行うことができます。この点について、実際に測定してXDPを使用したときと、使用していないときのWAFの値を確認してみたいと思います。この検証結果については、また次回の機会にお伝えします。
まとめ
今回はWAFについてお話させていただきました。
WAFはSSDのEnduranceに大きく影響があり、最終的にはサーバシステムでのオペレーティングシステム、ファイルシステムでのアクセス方法にも関係していきます。
サーバシステムでWAFを限りなく1に近づけたい場合、PliopsのXDPソリューションがあります。
このXDPを効率的に使用していただき、システム全体のEnduranceを高くすることで、TCOレベルでのコストダウンも可能となりますので、是非この視点でのシステム検討もしてみてはいかがでしょうか?