0スピンドルへの道 ~LatitudeX1のセッティング
最近では稀有なファンレスノートPCであるDell LatitudeX1。今更感バリバリだが、HDDを換装して0スピンドルPCに仕立て上げて見た。図書館にでも連れて行きたくなるような無騒音PC作成 の顛末その2。
1.アライメント
WindowsXP以前のOSでSSDや一部HDD(WDのAFT採用製品ですな。)を使用する場合に大切な作業、アライメント調整。パーティションの開始位置をSSD/HDDの読み書き単位と合わせる作業をします。これをしないとRandomWriteに弱いSSD/HDDでは泣けてくるほどの処理性能低下、いわゆる「プチフリ多発」状態に陥りやすくなります。
実際どこに合わせたらよいかですが、ググッても諸説入り乱れています。恐らく、無難なのはWindowsVista以降や最近のUbuntuなどと同じ1MiB(2048セクター)です。ただ、OS入換時にはパーティションの切り直しから始めるつもりの方には全く関係の無い話。少なくとも63セクター以上でキリが良ければそれで良さそうです。
自分は最初良く分からずになんとなく一番良いとこ取りのように見えた63×8=504セクターでやっていたのですが、OS(というかファイルシステム上)から見ればキリが良くてもCFからはキリの悪い数値だったようです。最終的に128セクターに仕切り直したのですが、ここで大きく「プチフリ」現象が減りました。特にCFではSSD以上に読み書き単位が荒い可能性が高く、64セクター(32KiB)でもキリが悪い可能性があることが分かりました。まぁ、自分のが実際何KiB単位なのか調べてはいないのですが。
2.WindowsXPのチューン
さて、この辺はググればより詳しいサイトがたくさんあるのでここでは忘備録程度に軽くさらっておきましょう。
- インデックス作成の停止
- システムの復元無効化
- システムログの作成停止
- WindowsUpdateの自動更新を停止(通知のみに変更)
- ディスクの書き込みキャッシュを無効化(デバイスマネージャ)
必要だと思うものは残してくださいね。自分のはサブマシンで用途を限っているので全部不要でした。
そして、レジストリもいじります。
- アクセス日時記録の停止
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
「NtfsDisableLastAccessUpdate」をDWORD値0から1へ変更する。 - 8.3形式ファイル名作成の停止
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
「NtfsDisable8dot3NameCreation」をDWORD値0から1へ変更する。 - 自動デフラグを無効化
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout
「EnableAutoLayout」をDWORD値0で作成する。 - Prefetch機能を無効化
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
「EnablePrefetcher」をDWORD値3から0へ変更する。 - システムファイル再配置機能を無効化
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction
「Enable」を文字列値YからNに変更する。
さらに出来ればこれをやります。
- RamDiskを作成して、ページファイルとテンポラリーをRamDiskへ移動
そして、結構盲点でググっても件数が一気に減ってくるのですが
- JRE(Java)をInstallしているのであれば、自動ダウンロードを停止(これかなり効果あります)
どうも、自動更新系は思いもよらぬDiskI/O負荷を増している可能性がありますね。特に起動時は集中して数十分間、ろくに作業できない状態だったりします。なので……
- AdobeReaderをInstallしているのであれば、自動ダウンロードを停止
- OpenOfficeをInstallしているのであれば高速起動を停止
- MicrosoftOfficeをInstallしているのであればいらないスタートアップが登録されていないかチェック
- その他、自動更新系や不要なスタートアップはことごとく停止
しておくと吉かも知れませんね。
3.FlashFire
プチフリSSDやCF使いの救世主、FlashFireをInstallします。これはメインメモリの一部をキャッシュとして複数のRandom書き込みをまとめて、ある程度Sequencial書き込みにしてくれるなど書き込み頻度を下げてくれる素敵なアプリケーションです。FFREGchgを使うと設定の変更もできます。
(アンチウィルスソフトが誤検出する場合があるようです。まぁレジストリをいじるツールですのでね。)
必ずしもバッファが多いほど良いとは限りません。バッファを溢れた時に盛大に止まる恐れがあります。自分は規定の半分である16KiBで様子を見ています。
4.Install後のアライメント修正
アライメントを修正せずにOSをInstallしてしまった。あるいは既に動いている環境を移したいなど、OSのInstall後にアライメント修正を行いたい場合もあるかと思います。
(自分も最初にやったアライメント修正の結果が思わしくなかったために後からアライメント修正をやり直しています。)
その場合は一旦別のマシンにSSD等を接続して、環境を一式退避してから、アライメント修正、そして元に戻すという手順になります。
- ダミーで退避専用ユーザーをAdministrator権限で作る。(これ大事。自分はこれをやらなかったせいで普段ログインしているユーザーの環境をコピーできずに失いました。)
- ダミーユーザーでログオン。そして終了。
- 別のマシンにSSD等繋いで
- 隠しフォルダ・ファイルを含めて全フォルダ・ファイルを退避
- SSD等の再アライメント修正・フォーマット
- 退避していた全フォルダ・ファイルを戻す
- C:\WINDOWS\system32\config\systemをレジストリエディタのハイブの読み込みを使用して開き、MountedDevices直下の情報を修正。
「\DosDevices\C:」の値と等しい「\??\Volume{●●}」の両方がアライメント修正したSSD等になります。この値の5バイト目からがオフセット(リトルエンディアン)となっていて、WindowsXP以前でフォーマットした状態であれば63セクタ×512バイト=00 7e 00 ……となっている。これを例えば128セクタにアライメント修正したのであれば、128×512=00 00 01 00 ……と修正する。
余計なDevice情報等あれば削除してしまっても大丈夫らしい。例えばUSB接続したリムーバブルディスクの残骸など。
(全部消しちゃっても良いという情報もあります。) - 起動確認できたらダミーユーザーは削除してOK
5.さて結果は
結構、なんとかなりました。一時期は思った以上にプチフリ多発で失敗したぁって思っていたのですが。
たとえば起動時間。電源投入からようこそ画面まで26秒デスクトップ背景の表示まで52秒。もっとも、セキュリティソフトであるMicrosoft Security Essentialsが約60MBの大量書き込みをかましてくれるのでアイドル状態に落ち着くまで183秒と3分を超えます。
また、調子に乗ってバリバリオペレーションすると数秒固まることは避けられません。それ以外の状況では以前よりずっとレスポンスが良い感じはします。
なにより、貴重なファンも無い完全0スピンドルマシンが完成しましたので、今回はこれで良しとしたいと思います。
ちなみにファイルシステムがFAT32でも良いならばNTFSより随分速いらしいです。