こんにちは、阿久津です。昨日サブマシンのHDD(ハードディスクドライブ)が消滅しました。もちろんOS上の話です。肝心のHDDはMarvell SE9128経由で接続しており、問題となるのは同デバイスドライバであるmv91xx.sys。同マシンは組んでから一年近く経っているだけでなく、ここ数カ月は新たなソフトウェアの導入やデバイスの追加も行っていないため、他方面からの影響は考えられません。

イベントビューアでログを確認しますと、ディスクアクセスからの応答がなくなり、存在を見失うというケース。経験的にはチップやデバイスドライバ側で発生しやすいトラブルですが、前者が発生しやすい排熱問題もなく、後者は新しいデバイスドライバがリリースされていませんので、こちらも原因ではなさそうです。もちろんBIOS上でも問題なく認識済み。

あとは仕方なくPCケースを開けて、SATAケーブルの抜き差しを行ってからWindows 7を起動しますと、ようやく問題のHDDが現れました。早速物理チェックを行いましたが、HDD側にも問題なし。あとはSATAケーブルだけですが、予備が手元になったので検証に至りませんでしたが、数日ほど様子を見ても同様のトラブルは発生せず。

以前同様の問題が発生したときは、HDDの換装で事なきを得ましたが、タイの大洪水により、HDDの価格は高騰。さすがにこのタイミングでHDDを新規注文する気にもならず、しばらくはだましだまし使っていくことになりそうです。人道的な面で気になっていたタイの大洪水ですが、自身のPC環境に影響があるとは思いませんでした。

さて、ご存じのとおりWindows Vista/7には、検索インデックス機能が備わっています。元々は「MSNデスクトップサーチ3.0」というアドオンプログラムの提供で実現していたデスクトップ検索機能ですが、Windows VistaからOS内に取り込まれ、現在に至りました。実際には、Windows XPインデックスサーチの存在やWinFSの開発停止といった諸事情も関係してきますが、冗長になりますので今回は割愛。

この検索インデックス機能の対象は初期状態で、Internet Explorerのアクセス履歴やオフラインファイル、ユーザーフォルダー(%SystemDrive%\Users)や全体のプログラムメニュー(%ProgramData%\Microsoft\Windows\Start Menu\Programs)が含まれています。これにより、スタートメニューの検索ボックスに入力した文字列を元にプログラムメニューに登録されたショートカットファイルを探し出すことが可能になっています。

筆者がWindows XPをメインOSとして使っていた時代は、プログラムメニューをひたすら整理し、AppsやGamesなど独自のカテゴリフォルダーを作成して、そこに各種ショートカットファイルを振り分けるといった作業を行ってきました。しかし、同機能の搭載で前述のような整理術は過去のものとなり、今ではプログラムメニューを参照する場面はほぼ皆無です。

一度インデックス情報が作成されてしまえば有益な機能ですが、問題は同情報を作り上げるまでの期間。Windows XP時代にデスクトップ検索ツールを使っていた方ならピンと来るように、インデックス情報は対象となるフォルダーに格納された様々なファイルを精査するため、大量のディスクアクセスが発生します。Windows Vista では「LowPriority I/O」という技術を導入することで、システムパフォーマンスの低下を回避するようになりました(図01)。

図01: インデックスのオプションダイアログでは、インデックス情報の作成状態をメッセージで確認できます

同技術によって処理優先度が変化しますと、それだけインデックス情報を作成し終えるまでの時間が延びてしまうのは言うまでもありません。例えば新規アプリケーションを導入したとしましょう。そのセットアッププログラムにより、ショートカットファイルがプログラムメニュー内に作成されても、インデックス情報の作成を終えるまでは検索ボックスから探し出すことはできません。

つまり、パフォーマンスを優先することで利便性が欠けてしまう結果になるのです。この問題を解決する方法として、インデックスのオプションダイアログを呼び出し、メッセージが「インデックス作成の速度はほかの処理によって遅くなっています」から「インデックスの作成は完了しました」に変わるまで、何もせずに待つという方法もないわけではありません。

しかし、ソフトウェアを新規導入するたびに同様の操作を行うのは少々面倒です。そこで今回はWindows OSに備わっている、インデックス情報の作成をバックオフ(後ずさる・放っておく)する機能を無効にして、インデックス作成スピードを向上させるチューニングをお送りしましょう。

1.管理者権限で「regedit」を実行します。
2.レジストリエディターが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ Windows Searchキーを開きます(ない場合は作成します)。
3.新たにDWORD値「DisableBackoff」を作成します。
4.DWORD値「DisableBackoff」のデータ値を「1」に変更します。
5.レジストリエディターを終了させ、コンピューターを再起動します。

これでチューニングが終了しました(図02~10)。

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

図03: レジストリエディターが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windowsキーを開きます

図04: Windowsキーを右クリックし、メニューから<新規>→<キー>とクリックします

図05: キー名を「新しいキー #1」から「Windows Search」に変更します

図06: Windows Searchキーを開き、右ペインの何もないところを右クリックして、メニューから<新規>→<DWORD値>とクリックします

図07: 値名を「新しい値 #1」から「DisableBackoff」に変更します

図08: DWORD値「DisableBackoff」をダブルクリックし、値のデータを「1」に変更して<OK>ボタンをクリックします

図09: 操作を終えたら<×>ボタンをクリックしてレジストリエディターを終了させます

図10: スタートメニューの電源ボタンから<再起動>を選択して、コンピューターを再起動させます

それでは結果を確認してみましょう。コマンドプロンプトやファイル名を指定して実行から「control.exe srchadmin.dll」と実行することで、インデックスのオプションダイアログが起動しますので、そのままインデックス作成スピードを確認してみましょう。普段より速くなっているはずです(図11~13)。

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

図12: これでインデックスのオプションダイアログが起動します。インデックス情報を作成中の場合は、そのまま待つことで、普段よりも速く処理が終わります

図13: 場合によっては「インデックスは一時停止しています」というメッセージが表示されることも。これはサービスが遅延起動のために発生する現象です。そのままお待ちください

バックオフ機能の無効化は、システムの活動が活発なときにインデックス作成処理が減速されなくなるため、システム全体のパフォーマンスに悪影響を及ぼしますが、Windows 7を新規インストールしてから数カ月経った環境では、著しく低下するような場面は多くありません。そのため本チューニングでは、バックオフ機能を無効にしてインデックス情報の作成を優先的に行わせることを目的としています。

なお、DWORD値「DisableBackoff」は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gathering Managerキーにも用意されており、こちらが優先的に参照される仕組みです。Policiesキーではなく、HKEY_LOCAL_MACHINEキー側で設定しても構いませんが、Gathering Managerキーへの所有権はTrustedInstallerが所有していますので、所有権の変更およびアクセス権の変更が必要となるため、Policiesキー側で操作することをお勧めします(図14)。

図14: Gathering Managerキーの所有権はTrustedInstallerが保有しています

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

阿久津良和(Cactus)