700台のWindows XPワークステーションの起動プロセスを最適化しようとしています。サイトワークステーションの起動時間とログイン時間について、定期的に苦情があります。
これを2つの部分で見て、パート1では BootVis を使用してブートプロセスを監視および検査します。パート2 Process Monitor を使用してログインプロセスを監視します。 BootVisの「BootDone」ウェイポイントをメトリックとして使用して、約18か月間使用されているVMWareワークステーション仮想マシンを汎用テストマシンとして使用しました(したがって、オンサイトマシンではかなり一般的です)。スナップショットを使用して、各テストの前に仮想マシンを初期状態に戻しました。
BootVisが最も明白な遅延を作成したというログとレポートから、アクセススキャナーの Sophos Anti-Virus からであり、その後にmrxsmbが続きました。マシンのポリシーを微調整し(ソフォスに毎回2回更新するように強制しました)、次の数値を考え出しました。
上記は、読み取り時にすべてのファイルをスキャンすることがはるかに最もコストのかかる操作であることを示唆する傾向があります(おそらく完全に不要です)。オンアクセススキャンを無効にすると、実際にブートシーケンスが遅くなるのはなぜか、私にはよくわかりません。最後の3つの結果はほとんど同じです。つまり、スキャン実行可能ファイル、読み取り時、または書き込み時の選択に関する決定に影響を与えるには、他の要因を使用する必要があります。
更新:
同じ仮想マシンでさらにいくつかのテストを実行しました(時刻が異なるため、上記の結果と直接比較することはできません。
平均化により、OnReadとOnWriteの値がさらに収束します。SophosscanExecutableFilesを使用すると、Sophosがインストールされていない場合に比べて21%のパフォーマンスオーバーヘッドしか追加されないことがわかります。
では、起動時間を改善するためにオンアクセススキャンを構成する場合、他にどのような考慮事項を考慮する必要がありますか?
現在、SOPHOSの速度の問題を調査しており、winxpsp3環境でかなりの違いが生じた次の提案を思いつきました。
オンアクセスセクション内でこれらのファイルを除外します。
次に行うことは、起動時に更新のチェックをオフにすることです。これは、新しいウイルスが攻撃する可能性があるため、少し危険ですが、定期的に30分間更新をチェックすることでこれに対抗できます。つまり、30分を超えることはありません。更新のチェックをオフにするには、次のようにします。
代替テキストhttp://www.sophos.com/images/common/misc/27646.gif
これらの変更を実装した後、電源投入からデスクトップへの速度が著しく向上しました。
これがお役に立てば幸いです。
キップ
私はソフォスを使用したことがないので、似たようなものがあるかどうかはわかりませんが、Symantecには、起動時にシステム全体のスキャンを無効にするレジストリの変更があります。これがないと、システムが最初に起動したときにすべてがスキャンされ、システムの起動後の最初の少しの間、処理が非常に遅くなる可能性があります。ソフォスにも同様の設定がある可能性があります。
もちろん、これを無効にすると、セキュリティがわずかに低下する可能性があります。彼らがスタートアップスキャンをしているのには理由があります。
古いマシンのMcAfeeでも同じ問題が発生しました。これらのマシンはインターネットにアクセスできないため、サービスの開始を数分遅らせるブートスクリプトを作成しました。
' Place script in C:\Documents and Settings\All Users\Start Menu\Programs\Startup
' The McShield and McTaskManager services must be set to Manual
Wscript.sleep 12000 'Delay start for 2 minutes
Set objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate, (Debug)}\\.\root\cimv2")
StartService "McShield"
StartService "McTaskManager"
Function StartService (strService)
Dim intStatus, colServices, objService
Set colServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name = " & chr(39) & strService & chr(39))
For Each objService in colServices
intStatus = objService.StartService
Next
End Function
これはあなたの状況には実用的ではないかもしれませんが、解決策は私たちにとってはうまくいきました。