Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
プライマリストレージとしてソリッドステートドライブ (SSD) が広範囲に採用される可能性について、特にノート PC への採用や、サーバーにどう応用していくかということについて、関心が高まっています。あらゆる新技術がそうであるように、その導入時には、使用されるテクノロジのパフォーマンス特性の結果として、全体的なシステム (OS 、デバイスのサポート、アプリケーション ) に当てはめる場合、しばしば再考する必要があります。この投稿では、 SSDの最新世代に合わせて Windows 7 を調整してきたことについて見ていきます。これは非常に速く変化する分野であり、今後も Windows を調整するいろいろな方法が存在するだろうと考えています。また、このテクノロジが進化し続け、新たなトレードオフをもたらしたり、基礎となる仮定を覆したりすることを期待しています。 Michael Fortin が、ストレージおよびファンダメンタルズチームの多くの人々からの援助を受け、この投稿を執筆しました。 --Steven
今日のソリッド ステート ドライブ (SSD) の多くは、パフォーマンスの向上、より一貫した応答性、バッテリ寿命の増加、優れた耐久性、より迅速なスタートアップ時間およびノイズと振動の低減を約束します。価格が急激に低下したことにより、多くのアナリストは、従来の回転型ハード ディスク ドライブ (HDD) の代わりに SSD を搭載した PC の販売がますます増えるだろうと予測しています。
Windows 7 では、SSD のオペレーティング特性を念頭に置いて、数々のエンジニアリングの取り組みに焦点を当ててきました。その結果、Windows 7 のデフォルトの動作は、ユーザーの介入を必要とせずに SSD 上で効率的に機能します。Windows 7 の動きがどのように SSD 上で効率的に機能するよう自動的に調整されているかを探る前に、SSD のオペレーティング特性の概要について見てみましょう。
ランダム読み取り : SSD にとって、とても良い面
SSD はランダム読み取りが非常に高速になる傾向があります。回転ディスク ヘッドを配置するために必要な機械的な作業が不要なため、ほとんどの SSD は従来の HDD をはるかに凌駕します。その結果、優れた SSD は、従来の HDD のほぼ 100 倍の速さである 4 KB のランダム読み取りを実行できます (約 1 ミリ秒の 1/10 vs. 約 10 ミリ秒)。
順次読み取りと書き込み : 良い面
順次読み取りと書き込みの操作は、”非常に良い” から ”最高” の間のレベルです。フラッシュ メモリは同時に構成でき、データはチップ間に分散するため、今日のより優れた SSD では、200 MB/秒を超える速度で順次読み取りを実行できます。これは、多くの 7200 RPM ドライブが提供する速度のほぼ 2 倍にあたります。順次書き込みについては、一部のデバイスでは従来の HDD の速度をはるかに上回り、大多数の SSD では HDD と比較して大変良い動作をします。今日の市場では、順次書き込みの速度は SSD の間でかなりの差があります。あるものは通常の HDD のパフォーマンスをはるかに上回り、他のものはわずかに遅れをとり、少数ながら比較して劣るものもあります。
ランダム書き込みとフラッシュ : 効果はさまざま
順次書き込みの速度の違いは、興味深い点ではありますが、ほとんどのユーザーにとって、全体的なパフォーマンスにおいては、ランダム書き込みほどには顕著な相違点とはならないでしょう。
ランダム書き込みにかかる長い時間とはどのくらいでしょうか? 平均的な HDD は通常 4 KB のランダム書き込みを、7 ~ 15 ミリ秒で回転メディアに移動させます (これは許容しがたいことが分かっています)。その結果、ほとんどの HDD には 4 MB、8 MB、またはそれ以上の内部メモリがあり、7 ~ 15 ミリ秒をずっと待機する代わりに、少量のランダム書き込みのキャッシュを試行します。読み取りをキャッシュすると、バイトが回転メディアに移動されていなくても、OS に処理が終わったことを返します。通常このようなキャッシュされた書き込みは、数百 "マイクロ" 秒 (つまり、実際の回転メディアへの書き込みの、10 倍や 20 倍の速さ) で完了します。何千もの遠隔測定による何百万ものディスク書き込みを見てみると、4 KB 以下の IO の 92% で 1 ミリ秒未満、80% で 600 マイクロ秒未満、そして驚異的な 48% は 200 マイクロ秒未満しかかかっていませんでした。これはキャッシュの威力です!
時折、HDD が大量のランダム書き込みやフラッシュをうまく処理できない場合があります。ドライブがあまりに長い間、大量にキャッシュすると、フラッシュの際に大量の作業のバックログを完了するのに時間がかかり、問題となることが分かりました。これらのフラッシュおよび関連する IO は、応答時間を大幅に増加させることがあります。一部のデバイスでは、個々の IO を完了するのに 0.5 秒 ~ 1 秒かかり、より一貫した応答状態に戻るには数十秒もかかります。応答性が苦痛を感じるレベルにまで低下するため、ユーザーにとって耐え難いものとなり得ます。考えてみてください、単一 I/O の応答時間は、200 "マイクロ" 秒から、途方もない 1,000,000 "マイクロ" 秒 (1秒) にまで及ぶのです。
現実的なワークロードで示すと、最悪の SSD の場合、個別のランダム書き込みおよびフラッシュ要求を完了するのに 0.5 秒 ~ 1 秒と、非常に長い IO 時間が発生していることがわかりました。多くのワークロードにとってこれはひどく、システム全体が不安定、応答がない、または遅すぎるといった状態になります。
ランダム書き込みとフラッシュ : なぜそれほど難しいのか ?
多くの人にとって、電子的アクセスを行う SSD で、従来の機械的アクセスを行う HDD よりもランダム書き込みの問題が発生しやすいという説は、初めは理解しがたいかもしれません。SSDは回転ディスク上のトラックでディスク ヘッドをシークおよび位置付けする必要がないのです。それなのに、なぜランダム書き込みが、そのような難題となるのでしょうか?
この疑問に答えるにはかなりの説明を要しますが、Anand 氏の記事で詳細の大部分をカバーしています。興味のある方は、時間をとってこの記事や優れた USENIX ペーパーをお読みになることを強くお勧めします。同じ資料をカバーしすぎることを避けるため、ここではいくつかの要点のみを取り上げます。
- ほとんどの SSD は、フラッシュセル ( SLCまたはMLCのいずれか ) で構成されています。 DRAM から SSD を構築することは可能です。これらは、非常に高速になりますが、非常に高価で消費電力も大きくなります。これらが使用されることは比較的まれであるため、はるかに一般的な NAND フラッシュ ベースの SSD を中心にディスカッションを行います。未来の SSD は、フラッシュだけでなく他の不揮発性メモリ テクノロジを活用するかもしれません。
- フラッシュセルは実際には電子にとってのトラップであり、そして電子はトラップされることを好みません。 1 つのフラッシュ セルに 100 個の電子を配置することが 0 のビット値を構成し、それより少ない場合は値が 1 になる場合、コントローラー ロジックは 80 から 120 の間をビット値 0 の許容範囲と見なす必要があるでしょう。ある電子はトラップを回避したり、他の電子は近くのセルを埋めようとしてトラップにはまったりする場合があるので、許容範囲は必要です。その結果、データ整合性を保証するには非常に高度なエラー修正ロジックが必要となります。
- フラッシュチップは、ブロック、ダイ、プレーン、およびパッケージなど、複雑な配列で編成される傾向があります。 サイズ、配列、並列処理、消耗、相互接続、および転送速度の特性は、大幅に異なります。
- フラッシュセルは、書き込む前に消去される必要があります。 フラッシュ セルを使用する前に、そこに残留電子がないと決め込むことはできないため、電子を注入する前にセルを消去する必要があります。消去は大規模なスケールで行われ、1 つのセルを消去するのではなく、大きなセルのブロック (128 KB 相当など) を消去します。消去時間は通常長く、1 ミリ秒またはそれ以上になります。
- フラッシュは消耗します。 ある時点で、フラッシュ セルは電子に対するトラップとして機能しなくなります。頻繁に更新されるデータ (ファイル システムのログ ファイルなど) が同じセルに常に格納されていると、これらのセルは、読み取り専用のデータを含むセルよりも早く消耗します。書き込みをデバイスのセル全体に分散するよう、フラッシュ コントローラー ファームウェアは消耗平均化ロジックを採用しています。適切に行われれば、ほとんどのデバイスは通常のデスクトップ/ラップトップ ワークロードで何年も機能します。
- 電子を高速でトラップし、しかもそれをエラーなしで行い、またデバイスが平均的に消耗するようにするには、非常に有能なデバイス物理学者と、ゆるぎないエンジニアリングが必要となります。 これまでのところ、どの SSD メーカーも、これをうまくやる方法を見つけ出せていないようです。
時間とともに起こるパフォーマンス低下、消耗、および Trim
先にも述べたように、フラッシュ ブロックおよびセルは、新しいバイトを書き込む前に消去する必要があります。その結果、新しく購入されたデバイス (あらかじめすべてのフラッシュ ブロックが事前消去されている) は、かなりの使用期間を経た後よりも、購入時の方がはるかに良く動作します。私たち自身このパフォーマンス低下を観察していますが、これが致命的な問題であるとはみなしません。実際、ベンチマーク測定によってでなければ、ユーザーが通常の使用中にパフォーマンスの低下に気付くことはないでしょう。
もちろん、デバイス メーカーと Microsoft は、可能な限り最良のパフォーマンス特性を維持したいと願っています。より優れた SSD メーカーが、通常の使用時にパフォーマンスに不利な条件が大部分は実現されないようあらかじめブロックを消去することにより、または書き込みが短期に大量に発生した場合に十分な予備領域を維持することにより、経年劣化の問題を克服しようと努めていることは、想像に難くありません。企業向けに設計された SSD ドライブでは、高度に持続する書き込みパフォーマンスを長期間提供するために、50% もの領域が予約されています。
上記に加えて、Microsoft と SSD メーカーは、Trim 操作を採用しています。SSD が ATA プロトコルの Data Set Management 命令の Trim 属性をサポートする場合、Windows 7 では,
ファイルが削除されファイルをバックアップする SSD ページを消去しても安全になると、NTFS ファイル システムはデバイスに対して新しい操作を発行するよう ATA ドライバーに要求します。消去されたページは再使用可能なので、後続する書き込みでブロックの消去操作は必要ないことを前提として、この情報により SSD は該当するブロックを必要に応じて (かつ頻繁でなく) 消去することを計画できます。
付加価値として、Trim 操作により、多数のマージ操作を発生させる必要がなくなるので、SSD の消耗を軽減できます。たとえば、128 KB のファイルを含む、1 つの 128 KB の SSD ブロックについて考えてみましょう。ファイルが削除され、Trim 操作が要求されると、SSD では、その SSDブロックからのバイトと、そのブロックに後で書き込まれるその他のバイトとが混在されなくなります。これによって消耗が減少します。
Windows 7 では、ファイル削除操作のためだけに Trim 操作が要求されるわけではありません。Trim 操作は、Format や Delete など、パーティション レベルおよびボリューム レベルのコマンド、切り捨てや圧縮に関連したファイル システム コマンド、およびシステムの復元 (または、ボリューム スナップショット) 機能と完全に統合されています。
Windows 7 の最適化とデフォルト動作のまとめ
前述のように、今日の SSD はすべて、ディスク書き込みおよびディスク フラッシュに関しては、まだまだ改善の余地があります。Windows 7 は、このような今日の SSD 上でも、ある程度うまく動作します。これは、私たちが書き込みとフラッシュの頻度を減らすよう多数のエンジニアリング上の変更を行ってきたからです。これは、従来の HDD にも役立ちますが、今日の SSD 上で特に有用です。
Windows 7 は、SSD システム ドライブ上ではディスク最適化を無効にします。SSD はランダム読み取り操作できわめて優れたパフォーマンスを発揮するため、ファイルの最適化は、最適化によって生成される追加のディスク書き込みを埋め合わせるほど有用ではないからです。この後の FAQ セクションに、追加の詳細情報があります。
デフォルトでは、ランダム読み取り、ランダム書き込み、およびフラッシュの優れたパフォーマンスを備えた SSD 上では、Windows 7 は Superfetch、ReadyBoost、起動およびアプリケーション起動プリフェッチを無効にします。これらのテクノロジはすべて、ランダム読み取りのパフォーマンスが主要なボトルネックとなりやすい、従来の HDD のパフォーマンスを向上させるために設計されたものです。詳細については以下の、よく寄せられる質問のセクションを参照してください。
SSD は、オペレーティング システムのパーティションが SSD 配列を考慮して作成される場合に最高のパフォーマンスを実現する傾向があるため、Windows 7 のパーティション作成ツールはすべて、新規に作成したパーティションを適切な配列で配置します。
よく寄せられる質問
よく寄せられる質問を取り上げる前に、私たちはモバイルおよびデスクトップ PC (そして、エンタープライズ サーバー) に入っている SSD の将来は、私たちにとって非常に明るいと信じていることをみなさんに伝えたいと思います。SSDは、パフォーマンスの向上、より一貫した応答性、バッテリ寿命の増加、優れた耐久性、より迅速なスタートアップ時間およびノイズと振動の低減を約束します。価格が順調に低下し、品質が向上するにつれ、ますます多くの PC が従来の回転 HDD に代わって SSD を搭載して販売されることでしょう。それを念頭に置いて、Windows 7 ユーザーに SSD の優れたエクスペリエンスを保証するために、適切なエンジニアリングの取り組みを行いました。
Windows 7 は Trim をサポートしますか ?
はい。詳細については、上記を参照してください。
SSD 上でディスク最適化はデフォルトで無効になっていますか ?
はい。最適化の自動スケジュールは、自身を SSD として宣言するデバイス上のパーティションを除外します。また、システム ディスクに8 MB/秒のしきい値を越えるランダム読み取りのパフォーマンス特性がある場合も除外されます。このしきい値は内部分析によって決定されました。
市場に存在する SSD の大半は、自身を SSD として適切に識別していない、という事実に対処するため、ランダム読み取りのしきい値テストが最終製品に追加されました。8 MB/秒はやや控え目の速度です。私たちがテストした HDD はどれも 8 MB/秒にはるかに及びませんでしたが、テストした SSD はすべてそのしきい値を越え、そのパフォーマンスは 11 MB/秒 ~ 130 MB/秒の範囲に及びました。テストされた 182 台の HDD のうち、わずか 6 つの構成だけがランダム読み取りテストで 2 MB/秒を超えました。その他の 176 台は、0.8 MB/秒 ~ 1.6 MB/秒の間でした。
Superfetch は SSD 上で無効にされますか ?
はい、SSD を備えた大半のシステムで無効になります。
システム ディスクが SSD であり、その SSD がランダム読み取りで十分に動作し、ランダム書き込みまたはフラッシュにおいてもパフォーマンス上の目立った問題点がない場合、Superfetch、起動プリフェッチ、アプリケーション起動プリフェッチ、ReadyBoost、および ReadDrive はすべて無効になります。
最初は、すべての SSD 上でこれらの機能がすべてオフとなるよう構成しましたが、一部のシステム上でかなり顕著なパフォーマンス低下に直面しました。このような低下を引き起こす原因として、一部の第一世代 SSD には深刻なランダム書き込みとフラッシュの問題があり、それによって結果的に長時間ディスク読み取りがブロックされていたことを発見しました。そして、Superfetch および他のプリフェッチ機能を再度有効にすると、主要なシナリオにおけるパフォーマンスは著しく向上しました。
SSD 上でのファイルおよびディレクトリの NTFS 圧縮は推奨されますか ?
ファイルの圧縮は領域の節約に役立ちますが、圧縮と展開にかかる労力によって、余分な CPU サイクルとその結果としてモバイル システムでは電力が必要となります。とは言え、めったに変更されないディレクトリおよびファイルでは、圧縮は貴重な SSD 領域を節約する優れた方法であり、領域が本当に貴重である場合には、良いトレードオフになり得ます。
ただし、頻繁に書き込まれるファイルまたはディレクトリを圧縮することはお勧めできません。ユーザー自身のドキュメント ディレクトリおよびファイルはまだよいですが、インターネット一時ディレクトリやメール フォルダーは、突発的に大量のファイル書き込みが発生するため、圧縮には適しません。
Windows Search Indexer は SSD 上では違った動きをしますか ?
いいえ。
BitLocker の暗号化プロセスは SSD 上で動作するよう最適化されていますか ?
NTFS では 「はい」です。BitLocker がパーティション上で最初に構成されるとき、パーティション全体が読み取られ、暗号化され、書き直されます。これが終わると、NTFS ファイル システムは、SSD が動作を最適化できるように Trim コマンドを発行します。
SSD を含むドライブ上で BitLocker を有効にする場合、データ プライバシーと保護に十分ご注意ください。
SSD上で設定したとき、 Media Center で何か特別なことができますか ?
いいえ。SSD は従来の HDD よりも利点がありますが、SSD は HDD に比べて GB あたりの単価が高くつきます。ほとんどのユーザーにとって、メディアの録音のために最適化された HDD の方がよりよい選択肢でしょう。なぜなら、メディアの録音および再生のワークロードは事実上連続して行われるためです。
書き込みキャッシュは SSD 上で機能しますか ? また、 SSD で書き込みキャッシュがサポートされる場合、 Windows 7 で特別な機能がありますか ?
一部の SSD メーカーは、単なる制御ロジック以上の理由でデバイスに RAM を組み込んでいます。それらのメーカーは、書き込み、そして恐らく読み取りをキャッシュすることで、従来のディスクの動作を模倣しているのです。揮発性メモリ内でキャッシュ書き込みを実行するデバイスについては、Windows 7 では、フラッシュ コマンドおよび書き込み順序が少なくとも従来の回転するディスクと同じ程度に保持されると考えています。また Windows 7 は、書き込みキャッシュを無効にするユーザー設定が、従来のディスク上でそうであるように、書き込みキャッシュ SSD によっても受け入れられます。
RAID 構成は SSD 上で機能しますか ?
はい。HDD RAID 構成によって得られる信頼性およびパフォーマンス上の利点は、SSD RAID 構成によっても実現できます。
ページファイルは SSD 上に配置する必要がありますか ?
はい。ほとんどのページ ファイル操作は、小規模なランダム読み取りまたはより大規模な順次書き込みです。これらのどちらのタイプの操作も、SSD で適切に処理できます。
何千もの遠隔測定データを観察し、ページ ファイルの読み取りと書き込みに注目した結果、次のことがわかりました。
- pagefile.sys 読み取りは、約 40 対 1 で pagefile.sys 書き込みを上回る。
- pagefile.sys 読み取りサイズは、通常非常に小さく、67% が 4 KB 以下、88% が 16 KB 未満。
- pagefile.sys 書き込みは比較的大きく、62% 以上が 128 KB、45 % がちょうど 1 MB。
実際、通常のページ ファイルの参照パターンおよびそれらのパターンに対する SSD の持つ有利なパフォーマンス特性を考えると、SSD 上に配置するのにページ ファイルより適したファイルはほとんどありません。
休止状態のファイルと SSD に関して、何か懸念事項がありますか ?
いいえ、hiberfile.sys は、連続して大きなブロックで書き込みおよび読み取りされるため、HDD または SSD のどちらにも配置できます。
SSD パフォーマンス特性に対応するため、どのような Windows エクスペリエンスインデックスの変更が行われましたか ?
Windows 7 では、新しくランダム読み取り、ランダム書き込みおよびフラッシュの評価を行います。より優れた SSD は 7.9 中 6.5 以上のスコアを出せます。その範囲に含まれるには、SSD には高いランダム読み取り速度が必要であり、フラッシュおよびランダム書き込みワークロードからの復帰も早くなければなりません。
Windows 7 Beta の期間では、ランダム書き込みおよびフラッシュの評価時にディスク (SSD または HDD) が十分に動作しなかった場合、1.9 や 2.9 といったスコアに制限されていました。この点についてのフィードバックはかなり一貫しており、大半のユーザーが、制限のレベルが行き過ぎだと感じていました。その結果、パフォーマンス上の問題のある SSD は、新しく追加された 6.0+ および 7.0+ の範囲にはしないことにしました。すべての評価にわたって高パフォーマンスを出せない SSD は、Windows Vista と同様の方法で採点されますが、Windows 7ではランダム読み取りパフォーマンスには寄与することはありません。