2015/04/27: 間違った表現があった場所を修正(DisableDeleteNotify関連)

以前の更新で、「USB接続の場合、(VMware上にインストールしたOSからは)SSDのトリムコマンドは発行されず、SSDの書き込みは遅くなる」と書いていたのですが、これは間違った説明だった事が判明しました(^_^;

VMwareを利用して外付けSSD上に Windows7/8.1をインストールした場合でも、条件さえ揃えば自動的にTrimコマンドが作動するようです。

何を行ったか

VMwareの設定をいじり、Diskパフォーマンスを上げました。
細かな設定は、過去記事「VMware Player 上の仮想OSを高速化させ軽快に作動させるチューニング」に書いた通りです。

それだけです。
仮想化したWindows側には一切手を加えていません。VMware側のDiskパフォーマンスに関する設定を変更しただけです。

Trimが作動しているかどうかの確認方法

利用中のOSでTrimコマンドが有効に作動するかどうかを確認するコマンド
fsutil behavior query DisableDeleteNotify
上記を仮想PC側で実行します。

「DisableDeleteNotify = 0」となっている場合、OS側でTrimを発行する状態になっていることを示しています。
※SSD側がTrimを正しく受け取っているかどうかは、この値だけでは分かりません。ストレージがTrimをサポートしているかどうか、とも無関係です。

※DisableDeleteNotifyについての参考リンク
Windows 7のSSD対応に関するまとめ - Lansenの現実逃避日記
「DisableDeleteNotifyの値は、ストレージがTrimをサポートしているかどうかとは無関係で、OS側がTrimを送るかどうかの設定を表します。デフォルト設定は"DisableDeleteNotify = 0"なので、この設定のままで問題ありません。また、ストレージがTrimに対応するかどうかに応じてOSがこの値を勝手に変更することはありません。」
※SSDがTrimを正しく受け取っているかどうかを確認するには、以下の様な手順を取る必要があります
Trimコマンドが送信される条件について

作動例

Trimが作動している図
Trimが作動している図
▲クリックで拡大
上図のVMware上の仮想Windows8.1は、USB接続した外付けSSDにインストールされたものです。

上図ではしっかり「DisableDeleteNotify = 0」となっており、Trimコマンドが発行できる状態になっているようです。

今回は、Trimコマンドがしっかり発行できているか、ストレージがそのコマンドを受け取っているか、という検証までは行っていないのですが、(同じストレージを使っていても)体感で分かるくらいOSのレスポンスが上がっています。

Trimコマンドが作動する条件とは?

他サイトで見つけた情報なのですが、OSがストレージを「HDDかSSDか」を判断するのは、単純にストレージのパフォーマンスに閾値を設けているだけのようです。

参考サイト
Windows 7/8.x時代の“SSD最適化”テクニック(設定方法)まとめ : Web Memo.SE
Windows 7のSSD対応に関するまとめ - Lansenの現実逃避日記
ソリッド ステート ドライブ (SSD) に関するサポートと Q&A - マイクロソフトのEngineering Windows 7 ブログ - Site Home - MSDN Blogs

各リンク先の、該当部分の引用

  • 上で“7以降のWindowsならば、SSDを搭載すれば基本的にTrimが自動で有効になっているはず”と書いたが、実はこれは正確な表現ではない。少なくともWindows 7では、「Windowsエクスペリエンスインデックスで、ストレージの値が6.5以上だったらSSD」と認識するという形になっているようだ。
  • Intelの天野氏の講演の記事に、SuperFetchの状態が変化する条件が掲載されていたので、下記に引用します。
    • データを先読みする「SuperFetch」も、わざわざオンにする必要はないと解説。もっとも、「Windowsエクスペリエンスインデックスの値が5.9以下だと多分HDDだろう、逆に6.5以上だと多分SSDだろうとコンピューターが判断し、自動でオンオフしてくれる」という。
  • 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/秒の間でした。

という事で、「少なくともWindows 7では、「Windowsエクスペリエンス インデックスで、ストレージの値が6.5以上だったらSSD」と認識する」という感じです。

今回の私の経験から見ても、たぶんWindows8.1でも似たような挙動なのでしょう。

ということで

USB接続のSSDであっても、ディスクパフォーマンスさえ改善されれば、特別な操作をしなくてもいつの間にかtrimコマンドが有効になるようです。

今回の私の場合、8月28日更新の「VMware Player 上の仮想OSを高速化させ軽快に作動させるチューニング」を行った事で劇的にDiskパフォーマンスが改善し、私の知らない内に「OSが勝手にストレージをSSDと認識しなおした」ってな現象が発生した様です。

VMwareの設定変更した後、「仮想Windows8.1が徐々にパフォーマンスアップして行く感覚があるのだけど、これは何だろう・・・?」と感じていたのですが、どうやら、そのタイミングでtrimが有効になり、「空きブロックが殆ど無くなっていたフラッシュメモリ上に、空きブロックがどんどん生成され、ストレージの書き込み速度が徐々に改善されて行った」という事なのかも知れません。

すげえです。
いつの間にか内蔵ストレージに仮想OSをインストールした時と同レベルの所までレスポンスが改善されて来ました。