Windows 2000 の高速化

速い CPU、大量の RAM、高速なビデオボード…。 それでも、初期状態のまま Windows 2000 を使うとかなり遅く感じられるのは、 Windows 2000 のディスクコントローラの初期設定のせい。

以下に書いてあるレジストリ関係の設定とコマンドをそれぞれファイルに纏めました。これらをダウンロードして「開く」と、以下の設定がすべて有効になります。それぞれの実行後は再起動が必要です。自己責任でお使い下さい→ [レジストリ関係を纏めたファイル] [ディスクパフォーマンスカウンタの停止用バッチファイル]

Ultra DMA を有効にする

デバイスマネージャから、「IDE ATA/ATAPI コントローラ」を開き、「プライマリ IDE チャネル」「セカンダリ IDE チャネル」両方に含まれるディスクについて、"DMAを有効にする(可能な場合)" を選択する。

ただし、この方法は Windows 2000 Service Pack 2 以降でのみ有効。
てゆーか、SP2 適用以前は UDMA 未対応だし。
SP2を導入すると、自動的に UDMA に切り替わる場合もあるようです。

短いファイル名 (8.3形式) の互換性を止める

レジストリエディタで [HKEY_LOCAL_MACHINE]->[SYSTEM]->[CurrentControlSet]->[FileSystem] にある、NtfsDisable8dot3NameCreation1 にする。

Windows 2000 は、ご丁寧にも旧システム用に 8.3 形式のファイル名を作ってくれています。

ディスクパフォーマンスカウンタを停止する

ディスクパフォーマンスカウンターが有効化されていると、ある程度の パフォーマンスオーバーヘッドが発生する。

コマンドラインから

  C:\> diskperf -N

とすると、ディスクパフォーマンスカウンタを停止させることができる。

ディスクキャッシュサイズを最大にする

レジストリエディタから、[HKEY_LOCAL_MACHINE]->[SYSTEM]->[CurrentControlSet]->[Control]->[Session Manager]->[Memory Management] を開き、中にある IoPageLockLimit を搭載メモリにあわせて以下のように設定する:

搭載メモリ設定値(16進)設定値(10進)
〜32MB10004096
32MB〜20008192
64MB〜400016384
128MB〜800032768
256MB〜1000065536

初期設定は 0 になっていて、この時 0x200 (512kB) として扱われる。なんと小さなキャッシュであることか!

残念ながら、512MB以上だからといって 0x20000 を指定しても無駄なあがきらしい。 Windows XP なら対応しているのかもしれないが。

フォルダの最終アクセス日時の書き換えをやめる

フォルダを開くたびに、そのフォルダの最終アクセス日時を変更するのはずいぶんとオーバーヘッドになる。 これをやめるには、レジストリエディタから、[HKEY_LOCAL_MACHINE]->[SYSTEM]->[CurrentControlSet]->[Control]->[FileSystem] を開き、NtfsDisableLastAccessUpdate という値 (DWORD) を作って、1 に設定する。

アプリケーション起動メモリを確保しない

物理メモリが 64MB 以上の場合は、アプリケーション起動メモリとして準備する 4MB の領域が、かえってスワップを頻発してパフォーマンスの低下を引き起こす。 この起動メモリを解放して、空き物理メモリを確保するには、レジストリエディタから、[HKEY_LOCAL_MACHINE]->[SYSTEM]->[CurrentControlSet]->[Control]->[Session Manager]->[Memory Management] を開き、LargeSystemCache の値を 1 に設定する。

カーネルを常に物理メモリ上に置く

「窓の手」を使った方が楽です。

標準では、カーネルのうちページプール領域が HDD に確保されるので、これもメモリ上に展開する場合は、レジストリエディタで [HKEY_LOCAL_MACHINE]->[SYSTEM]->[CurrentControlSet]->[Control]->[Session Manager]->[Memory Managemenr] というキーを開き、DisablePagingExecutive という値を 1 にする。