今年は珍しくBlack Fridayにいろいろと買い物をしたので、買った物についてメモがてら書いてみる。
[12/04 加筆修正] SLCキャッシュ周りの挙動に関する部分を加筆修正
Samsung 970 EVO Plus 1 TB
言わずと知れたSamsung製M.2 NVMe接続SSDの旧世代品。安価(約€90≒¥11500)だったのと、とある記事(後述)で興味を持ったため購入。
実は、来年初頭にも引越して新しくサーバーの構築を計画しており引越の邪魔にならない程度で部品調達を進めている。高信頼性のSSDとして既にSamsung 970 PROを確保済なのだが、それと組み合わせる比較的安価で高速なSSDとして970 EVO Plusを入手した。
SamsungはSSD製品を主にPRO/EVOの2クラスで展開してきているが、960 PRO・970 PROまではMLC 3D NANDを採用していたところ、980 PROではTLC 3D NANDを採用しており、フラッシュメモリーの信頼性は低下している(1TB版で1200 TBW→600 TBW)。このことに関するSamsungによる説明をGuru 3Dが紹介しているのだが、これが実に興味深い。
詳細はリンク先の記事を参照いただくとして、要は「5年間で600 TBW以上を書き込むユーザーは全体の0.3%以下・99%のユーザーは5年間で156 TBWかそれ以下しか書き込まない」ということで、言い換えれば99%の人が600 TBWを使い切るには19年間を要するため、970 PROの1200 TBWはおろか980 PROの600 TBWですら明らかなオーバースペックということである。
代わりに、970 EVO/970 EVO Plusで先行して導入されたSLCキャッシュ技術=Intelligent TurboWriteが導入され、970 PRO以上のRead/Write性能を達成している。
もっとも、970 EVO Plusの信頼性を判断するにはNANDフラッシュやSLCキャッシュ技術以外も検証する必要はあるのだが。
…ここまでであれば、よくある「そういう話」なのだが…実は最新970 EVO Plus(v.3)は980 PROに近い仕様に変更されていたことを購入後に知ったので御紹介したい。
- 970 PROと同じPhoenixから980 PROと同じElpisに変更
- Tom's Hardwareによると、これはSSDコントローラー不足による措置
- ランダムR/W性能だけを見れば改良といえる。「選別落ち品ではないか?」という批判があるようだが型番が同じため根拠が無い
- 対応インターフェースはPCIe 3.0のまま
- NANDフラッシュは96層から128層に変更
- Samsung 3D NAND Version 5=96層から3D NAND Version 6=128層への変更で、一概に改良とも改悪とも言えない
- 型番をある読む限りでは品質に関わる部分は旧モデル・新モデルで共通
- SLCキャッシュ枯渇後の速度低下が著しい
- SLCキャッシュ枯渇による性能劣化の自体は980 PROや980でも存在する問題である。もっとも、980 PROについてはPCIe Gen 4.0対応なせいか970 EVO Plus v.3よりは高速であるが
- 同じ製品名・JANコードのまま仕様が変更された
コントローラーとIntelligent TurboWrite=SLCキャッシュの仕様の変更によりSLCキャッシュ枯渇までは新モデルが高速、SLCキャッシュ枯渇は旧モデルが早く(旧モデル:42 GB、新モデル:114 GB)、SLCキャッシュ枯渇後は旧モデルの方が高速ということになるそうだ(下表参照。数値はTom's Hardwareから引用)。TurboWriteが有効な場合は下記よりも高速な可能性があり、公式のスペック表では3300 MB/sとなっている。
with TurboWrite | > 42 GB | > 114 GB | |
---|---|---|---|
970 EVO Plus (v.2) | 1750 MB/s | 1500 MB/s (without TW) | |
970 EVO Plus (v.3) | 2500 MB/s | 800 MB/s (without TW) | |
980 PRO | 5000 MB/s | 2000 MB/s (without TW) |
[12/04 加筆修正部分 ここから]
某巨大掲示板などでは、このSLCキャッシュ枯渇後の「1500 MB/s」と「800 MB/s」という数字にのみ着目して改悪だと大騒ぎする人が多いのであるが…実際はそれほど単純な話では無く、筆者の個人的な見解としてはSLCキャッシュ枯渇前の高速化はメリットがあるしSLCキャッシュ枯渇についても運用対処でどうにかなる範疇だと思っている。
この問題をややこしくしているのはSLCキャッシュの挙動が単純ではないからだ。例えばSLCキャッシュの容量「114 GB」という部分を考えてみると、日常的に114 GBもの巨大なサイズを読み書きする人は限定的で、多くの人々にとってはSLCキャッシュの枯渇は心配する必要の無いもののように思える。
その一方で、SLCキャッシュを114 GB(動的確保部分108 GB)も確保できる条件は限定されるため本当に気にする必要が無いとは言い切れない場合がある。SLC 108 GB=TLC換算 324 GBなので、そもそも空き容量が十分でないと確保できないことになる。 使用容量が多い場合はSLCキャッシュ容量も減るから実際にはSLCキャッシュが114 GBに達する前に枯渇してしまう。
実は、こういった内容を詳細に検証したサイト(参考1: 970 EVO Plus・参考2: 980)が存在し、それを纏めると以下の表のようになる。
SLC Cache | Utilized capacity | 970 EVO Plus (v.2) 1000 GB | 970 EVO Plus (v.3) 1000 GB | ||||
---|---|---|---|---|---|---|---|
Default | Intelligent | Total | Default | Intelligent | Total | ||
Capacity | 0 - 50% | 6 GB | 36 GB | 42 GB | 6 GB | 108 GB | 114 GB |
50 - 80 % | 36 GB | 42 GB | 61 GB | 67 GB | |||
>80 % | 0 GB | 6 GB | 0 GB | 6 GB |
そもそものSLCキャッシュ枯渇後に970 EVO Plus v.3で遅くなる理由であるが、どうやら970 EVO Plus v.2のIntelligent TurboWrite 1.0と970 EVO Plus v.3のIntelligent TurboWrite 2.0とで挙動が変わったためということのようだ。
そもそものTurboWrite・Intelligent TurboWrite 1.0ではSLCキャッシュ枯渇後はTLC NANDに直接書き込まれ、SLCキャッシュの内容は書き込み完了後のアイドル時にTLC NANDに展開されるが、Intelligent TurboWrite 2.0ではSLCキャッシュ枯渇後はTLC NANDへの直接書き込みとSLCキャッシュ内容のTLC NANDへの展開が並行して発生するらしい。そのためSLCキャッシュ枯渇直後は速度が大幅に低下するが(2500 MB/s→800 MB/s)、SLCキャッシュのフラッシュ後は速度が一部回復する(800 MB/s→1000 MB/s)らしい。ホストからの書込とSLCキャッシュのTLC NANDへの書込が並列して動作するわけだから書き込み速度が大幅に低下するのも納得できる。
このアルゴリズムの変更については変更内容も変更理由もSamsungは公式に発表していないため不明だが、ある程度の推測は可能だろう。というのも、SLCキャッシュが枯渇した場合書込とキャッシュのフラッシュとを並行して行わなければエラーとなる可能性が高いからである。例えば1 TB(1000 GB)のSSDのうち500 GBを消費していて180 GB(※新モデルでの最大SLCキャッシュ容量を上回る容量)の書き込みをする場合を考えてみる。
この場合、旧バージョンののSLCキャッシュ容量と旧バージョンのキャッシュ制御方式の組み合わせであれば、36 GB(TLC換算 108 GB)のSLCキャッシュが確保され500 GB + 108 GB + 180 GB = 788 GBとなり、速度は落ちるかもしれないが問題無く書き込むことができる。
ところが、新バージョンのSLCキャッシュ容量と旧バージョンのキャッシュ制御方式の組み合わせであれば108 GB(TLC換算324 GB)がSLCキャッシュが確保され500 GB + 324 GB + 180 GB = 1004 GBとなり4 GB溢れてしまう(→書き込みエラー)。
このため、新バージョンのように大容量のSLCキャッシュを確保する場合は書き込みエラーを避けるためにもTLC NANDへの直接書込とSLCキャッシュの展開を並列して行う必要がある。また、SLCキャッシュのTLC NAND領域への展開もそれなりに遅延が発生することも考慮する必要がある。
[12/04 加筆修正部分 ここまで]
某巨大掲示板等ではコスト削減のための改悪だという批判があるのだが、今回はコントローラーを新しい物への変更とそれに伴う挙動の変更で、個人的にはコスト削減で改悪されたとは言えないように思う。
JANコードが同じだったことは混乱を招いたと思われるが、ただし「114 GB以上の書き込み」等の変更内容はワークステーション/エンタープライズならばともかく970 EVO Plusの想定ユーザー=一般消費者からすれば非日常的な条件のため実用上の問題がないという判断だったのかもしれない。
※コメント投稿者のブログIDはブログ作成者のみに通知されます