こんにちは、阿久津です。メインで使用中のThinkPad T60pにガタが来はじめ、排熱ファンが鳴り叫ぶようになったため、新たにThinkPad X201sを注文。昨日到着し、遅ればせながらSSDマシンを使うようになりました。Windows 7は、ATAデバイスの情報となるIDENTIFY DEVICE dataを参照し、Word 217の値が1の場合、もしくはランダムリード性能が8MB/s以上の場合に、SSDを搭載していると認識していますが、コンピュータにSSDが搭載されている場合、下記のような設定が自動的に施されます。

  • SSD上のドライブは、自動デフラグの対象外
  • 起動およびアプリケーションプリフェッチの無効化
  • Superfetchの無効化
  • ReadyBoostおよびReadyDriveの無効化

既に各所で報じられていますので、これらの情報に言及することはしませんが、筆者は上記の設定確認に加え、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystemキーにあるDWORD値「NtfsDisable8dot3NameCreation」の無効化(データ値を「1」)や「Windows Search」サービスの無効化、エラー情報やダンプファイル作成の抑制を行ないました。なお、ファイルやフォルダの最終アクセス日時更新を抑制するDWORD値「NtfsDisableLastAccessUpdate」は既定で「1」、つまり無効になっていますので、改めてユーザーがカスタマイズする必要はありません。

このほかにもページングファイルの無効化を行なっても、たまにThinkPadのHDDアクセスランプが光ります。これは何ぞやとProcess Monitorで観察していますと、その大半がMozilla Firefoxのプロファイルアクセス。もちろん単なる参照(Read)なら問題ありませんが、多くがデータベースファイルへの書き込み(Write)のため、SSDの寿命を縮めかねません。

そこで、あらかじめ用意していたRAMディスクにMozilla Filrefoxのプロファイルをすべてコピーし、新たにユーザープロファイルを作成。既存のプロファイルを上書きコピーすることで、Mozilla Firefoxに起因するSSDへの書き込みアクセスを軽減することができました(図01~07)。

図01: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「{Mozilla Firefoxの導入フォルダ}\firefox.exe -p」と入力して<OK>ボタンをクリックします

図02: ユーザープロファイルを制御するダイアログが起動します。<新しいプロファイルを作成>ボタンをクリックしてください

図03: これでプロファイル作成ウィザードが起動します。<次へ>ボタンをクリックしてください

図04: テキストボックスに任意のプロファイル名を入力し(画面の例では「Ramdisk」)、<フォルダを選択>ボタンでRAMディスク上のフォルダを選択して<完了>ボタンをクリックします

図05: 先ほど作成したRAMディスク上のフォルダに、既存のユーザープロファイル(通常は「%APPDATA%\Mozilla\Firefox\Profiles\{ユニークな英数字}\」)の内容をコピーします

図06: 先ほどのダイアログに戻り、新たに作成したプロファイルを選択し、<今後このプロファイルを使用する>にチェックを入れてから<Firefoxを起動>ボタンをクリック

図07: これでFirefoxのユーザープロファイルに対する書き込みはRAMディスク上に変更されます

しかし、この設定を行なってもSSDアクセスが発生しています。書き込みを行なっているのはログ出力に代表される、バックグラウンド動作のアプリケーションやサービスですが、それらのなかでも気になったのが、「%windir% \ ServiceProfiles \ LocalService \ AppData \ Local \ lastalive0.dat」(もしくは「lastalive1.dat」)に対する書き込み。Process Monitorで監視していると数秒から数十秒ごとに書き込みが発生していました。今回はこの「lastalive0.dat」に対する書き込みを抑制するチューニングを紹介しましょう。

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディタが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Reliabilityまでキーをたどって開きます。
3.右ペインにあるDWORD値「TimeStampInterval」をダブルクリックします。
4.ダイアログが起動したら、値のデータを「0」に変更して<OK>ボタンをクリックしてください。
5.レジストリエディタを終了し、コンピュータを再起動します。

これでチューニング終了です(図08~11)。

図08: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図09: レジストリエディタが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Reliabilityまでキーをたどって開きます

図10: 右ペインにあるDWORD値「TimeStampInterval」をダブルクリックし、値のデータを「0」に書き換えてから<OK>ボタンをクリックします

図11: レジストリエディタを終了し、<スタート>メニューの電源ボタンから再起動を実行してください

コンピュータ再起動後は、Windows 7を監視しても「%windir% \ ServiceProfiles \ LocalService \ AppData \ Local \ lastalive0.dat」(もしくは「lastalive1.dat」)に対する書き込みは発生しません。そもそもNT系と呼ばれるWindows Serverでは、システムによってタイムスタンプを定期的にディスクに書き込む機能が用意されていました。これは、コンピュータクラッシュ時の状態と正常にシャットダウンした状態を比較する際に用いられますが、本来クライアント向けOSであるWindows 7にも"なごり"として同機能が残されています(図12)。

図12: こちらはチューニング完了後の状態。各サービスが様々なファイルの書き込みを行なっていますが、表題である「lastalive0.dat(もしくはlastalive1.dat)」に対する書き込みは発生していません

同機能を無効にするのが、先ほどチューニングしたDWORD値「TimeStampInterval」。既定値では5分おきに、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Reliabilityキーにあるバイナリ値「LastAliveStamp」を書き換える仕様ですが、前述の監視を行なっている限り、ほかの要素も関係しているかも知れません。今回の主目的はSSDに対する書き込み抑制でしたので、このタイミングに関してはまたの機会に調べたいと思います。ご了承ください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)