最近の変更サイトマップ

Windowsの記憶域階層の挙動(SSD層が優先的に使われるよ)

Windowsの記憶域階層について調べてたら、MSの中の人が書いたUnderstand Storage Space Tiering in Windows Server 2012 R2がとても分かりやすかった。Windows Server 2000 R2時代のものだけど、今でも通じる内容でしょう多分。記憶域階層使おうとしてる人は一読しといた方がいいと思う。

元記事の焼き直しでしかないが、気になったことをメモっておく。

書き込み時

  • 記憶域階層に入ってくる新しいデータは、SSD層が満杯になるまでSSD層の方に書き込まれる。
  • SSD層が満杯になると、ランダムライトはSSD層内に予め確保されているライトバックキャッシュの方に書き込まれる。
  • ライトバックキャッシュも一杯になると、HDD層の方に書き込まれると共にライトバックキャッシュのHDD層へのフラッシュが行われる。
  • ライトバックキャッシュが空けば、ランダムライトは再びキャッシュの方に書き込まれる。

ここでのライトバックキャッシュとは、記憶域階層が持っている機能を指している。仮想ディスク毎にSSD層に確保される領域で、標準では1GBだがNew-VirtualDiskコマンドレットの引数-WriteCacheSizeで任意の容量を指定できる。前述の通り、SSD層が埋まらないとライトバックキャッシュは使われないため、あまり大きな領域を確保しても無駄だと思われる。

自分はてっきり、ライトバックキャッシュという名前の通り、その領域分が書き込み全般のキャッシュとして使われると思っていた。Crystal Disk Markでキャッシュサイズを超えるテストサイズでベンチ回しても速度が全く落ちずに不思議だったが、なるほどSSD層全体がキャッシュとして使われてたとはね。

読み込み時

読み込みの方は明確な説明がないので間違ってるかも…。

  • SSD層にあるデータはSSD層から読まれる。
  • SSD層にないデータはHDD層から読まれる。
  • 毎日の記憶域階層最適化によりSSD層とHDD層でデータの入れ替えが行われ、よく使われるデータはサブファイル単位でSSD層に配置される。

自分はZFSしか知らんのでZFSとの比較になっちゃうけど、読み込みキャッシュの方は割と慎ましい挙動のように思う。記憶域階層最適化のサブファイル単位というのは、1MBブロック単位らしい。

これらの挙動から分かる通り、記憶域階層ではSSD層が酷使されるため、相応のSSDと相応のデータ保護手段を用いた運用にしないとトラブりそう。SSD層が死んだ場合に、記憶域スペース/仮想ディスクがどうなるかは未確認&情報がない…。仕組み的にはSSD層にあるデータが死ぬだけで済みそうに思うんだけど、どうだかなー。現状、一旦記憶域階層として作ったが最後、後からSSD層を取り外す事もできないしなー。

参考サイト

Windowsの記憶域階層な共有フォルダがプチフリする謎現象

Windows Storage Server 2016の記憶域階層上に作成したCIFSな共有フォルダに別マシンからファイルを書き込むと、途中で処理が止まったようになり、当該フォルダを開くのですら超絶時間が掛かるようになる問題に遭遇中。なんとなく、SSD層が一杯になったタイミングで発生してるような気がするけど、有効な解決策は未だ見つけられず…。

記憶域階層は以下のような構成。

  • SSD層
    • Intel DC S3500 240GB×2 (RAID-0)
  • HDD層
    • 8TB 7200RPM SATA×6(HDD×2のミラーリングが3セットのRAID-10)

いずれもハードウェアRAIDカードで仮想ドライブになってるので、記憶域からはSSDとHDDが1台ずつ見えてる感じ(ま、この構成自体がそもそも非推奨なんだけど。)

そこに1KB~4GBの96ファイル計25.2GBをコピーすると、最初は順調なのに途中でパタリと処理が止まる。タスクマネージャを見ると「記憶域階層管理」なるものが動いているので、おそらくSSDが一杯になってHDDへのデータ移動が行われているのだろう。

でもって、リソースモニタでディスクの状態を見てみると、処理対象のファイルの応答時間がなんと1000ミリ秒を超えているじゃーありませんか。キューもめっちゃ溜まってるし(順調に処理が行われてる時は1未満。多くても3~4ってとこ。)データ移動待ちにしては、流石にレイテンシ長すぎじゃないですかね…。

実際の操作感としては、SSDに一定の空きができるまでファイルI/Oがブロックされてるような感じ。MSの中の人によれば、SSD層が一杯になるとIOPSが劇的に下がる──といってもHDD層相当の性能は出るんだけど(記事中のTest Case 1: Write to Used Storage Spaceらへん)、処理が完全に止まってしまうような感じになならなさそう。

ネットに上がってる記憶域階層の使用例は殆どがHyper-Vがらみなので、ファイルサーバ向けに記憶域階層を使うってのがそもそもの間違いなのかしら?そうは言っても、使用頻度の高いデータをSSD層において高速化するって場面は、FSでもふつーにありそうな感じがするんだけどなぁ…。

Sambaだと大量のファイルの扱いに難あり、ってところからCIFSの純正実装なら安心だろうってことでWindows Serverを選択したのに、トホホですよ本当。僕たちの調査の旅はこれからだ…!

(2018-08-16 追記)

何の役にも立たないと(僕の中で)名高いMSKKのフォーラムに同様の報告があった→記憶域スペースで階層化構築時における急激なパフォーマンス低下について。いつものごとく箸にも棒にもかからない回答で乾いた笑いしか出ないわけですが。

東芝のエンプラ向けSSD THNSNJ960PCSZ (HK3R2 960GB) 購入

これまでSSDはIntel DCシリーズを買ってきたが、今回はTOSHIBAの読み出し重視型エンタープライズ向けSSD THNSNJ960PCSZを買ってみた。例によって例によって中古。新品じゃ高くて買えませんからね。それでもっていつものごとくベンチ。今回もSATA接続。

-----------------------------------------------------------------------
CrystalDiskMark 6.0.0 x64 (C) 2007-2017 hiyohiyo
                          Crystal Dew World : https://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   552.067 MB/s
  Sequential Write (Q= 32,T= 1) :   519.592 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   377.485 MB/s [  92159.4 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   353.540 MB/s [  86313.5 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   269.954 MB/s [  65906.7 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   231.575 MB/s [  56536.9 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    35.232 MB/s [   8601.6 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    91.411 MB/s [  22317.1 IOPS]

  Test : 4096 MiB [D: 0.0% (0.2/894.3 GiB)] (x5)  [Interval=5 sec]
  Date : 2018/04/26 22:49:50
    OS : Windows 10 Professional [10.0 Build 16299] (x64)
    TOSHIBA THNSNJ960PCSZ

ベンチ結果もS.M.A.R.T.情報も取り立てて何かあるという事もなく。強いて言えば、総読込量より総書込量が圧倒的に多いことくらい。この使い方ならHK3Eシリーズの方が合ってるんじゃねー?>前のオーナー。まぁ、このくらいの使い方ならどっちでも変わらんだろうけどさ。

THNSNJ960PCSZの耐久性はと言うと、1 DWPD1)──つまり定格寿命たる5年間、毎日1回ドライブ全体に書き込むとTBWに達するということだから5×365×960=1752000GB、つまりTBWは1.752PBである。公称耐久性はDC S3500以上、S3700未満ということになる。そう考えるとDC S3700シリーズの10 DWPDって半端ない耐久性だよなぁ…。東芝のSSDでいえば書き込み重視型のPXシリーズが同等ラインっぽい。

主に自宅鯖の仮想マシン置き場として使う予定。取り付けたら何故かアクセスランプが点きっぱなしなんだけど…w

1) Drive Write Per Day

Intel SSDSC2BB240G4 (DC S3500 240GB) のベンチマーク

購入時期は忘れたが、その昔、中古で買ったSSDSC2BB240G4が発掘されたのでベンチをうp。家鯖で、VM置き場/ZIL/L2ARCとして使っていたブツ。

-----------------------------------------------------------------------
CrystalDiskMark 6.0.0 x64 (C) 2007-2017 hiyohiyo
                          Crystal Dew World : https://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   509.971 MB/s
  Sequential Write (Q= 32,T= 1) :   285.330 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   312.081 MB/s [  76191.7 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   271.718 MB/s [  66337.4 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   271.167 MB/s [  66202.9 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   252.995 MB/s [  61766.4 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    33.345 MB/s [   8140.9 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    94.851 MB/s [  23157.0 IOPS]

  Test : 4096 MiB [D: 0.1% (0.1/223.4 GiB)] (x3)  [Interval=5 sec]
  Date : 2018/03/01 1:41:52
    OS : Windows 10 Professional [10.0 Build 16299] (x64)
    Intel SSDSC2BB240G4

Intel SSDSC2BB800G4R (DC S3500 800GB) 購入

PS4 Proに挿してたST2000LX001が壊れた件!Seagate絶許!!でカッとなってPS4用のSSDとしてIntel DC S3500の800GBを買ったった。SSDSC2BB800G4のDELL向けOEM品で、いつものごとく中古。からのいつものごとくベンチ。今回はいつもと違ってSATA接続だぬ。

-----------------------------------------------------------------------
CrystalDiskMark 6.0.0 x64 (C) 2007-2017 hiyohiyo
                          Crystal Dew World : https://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   509.671 MB/s
  Sequential Write (Q= 32,T= 1) :   493.405 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   311.824 MB/s [  76128.9 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   274.177 MB/s [  66937.7 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   271.002 MB/s [  66162.6 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   261.758 MB/s [  63905.8 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    33.284 MB/s [   8126.0 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    95.878 MB/s [  23407.7 IOPS]

  Test : 4096 MiB [D: 0.0% (0.2/745.1 GiB)] (x3)  [Interval=5 sec]
  Date : 2018/02/28 22:58:44
    OS : Windows 10 Professional [10.0 Build 16299] (x64)
    Intel SSDSC2BB800G4R

ベンチ結果はいつも通りというか何というか。

S.M.A.R.T.から総読み書き量は取れないけど、稼働時間からしたら然程使われてないものかなと。

着々とIntel DCシリーズが増えていってる・・・!

start.txt · 最終更新: 2016-05-07 17:46 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0