PCWEB




○Windows XPをより快適に扱うには

現在の主流OSがWindows XPであることは誰の目にも明らかといえる。Windows 95のブレイクから始まったパソコンブームの最中、ほとんどのPCがその時代にある最新版のWindows OSをプリインストールしてきた。それらは魅力的な構成ながらも、多くのPCはコスト面を考慮してかユーザーの使い勝手を今ひとつ考慮しきれていないとも言える。極論を言えば、「そのままでは使えない」パソコンばかりである。

なぜなら、現在出荷されているPCの多くが、その出荷時のメモリ量を256MBにとどめているからだ。ご存じのとおりWindowsシリーズはメモリイーター(食い)なOSで、誤解を恐れずに言えば、メーカーが言う公式な最低限スペックはインストール可能なだけ。推奨スペックに到ってはどうにか動くという程度。Windows XPを例に挙げると快適に動作させるには、256MBが一般的な最低条件といわれている。


「それならいいじゃないか」という声が聞こえてきそうだが、256MBという数値はあくまでも、Windows XPのカーネル部分が使用するメモリ容量やシステムキャッシュなどを踏まえて必要と言われている容量。メモリを256MBしか搭載していないパソコンにWindows XPをインストールして、初期状態のままで大型アプリケーションをインストールしたり、大量の大容量ファイルを扱い出すと、パフォーマンス面に不満を覚えるユーザーも少なくないのではないだろうか(もちろん最新のCPU、例えば3GHzを超えるPentium 4などを搭載したPCの場合は、CPUパワーのおかげで不満を抱くことは少ないだろう)。

多くのユーザーはそれほど頻繁にマシンを買い換えることはないので、Pentium IIIクラスのCPUを使っているケースも多いはず(筆者も最新のPCゲームをプレイするという必要がなければ、そのレベルのマシンで十分と考えている)。だが、無料もしくは安価にマシンをパワーアップできる方法があるならば、そのままストレスを感じながら使い続けるよりも健康的かつメリットが多いのではないだろうか。

その答えとなるのがメモリの増設だ。最近の秋葉原価格事情を見ているとメモリはとにかく安い。先日も知人と昔話をしていたのだが、筆者がNEC PC-9800シリーズを使っていた頃は、1MBに数万円払ってやりくりしていたものである。また、ハードディスクのアクセススピードも圧倒的に遅く、圧縮ファイルを展開するためにRAMディスクを用意していた。その頃から比べると天地の差ほど開きがあるメモリの価格を見て、しみじみと時代の流れを感じたのだった。

昔話はさておいて、現在DDR333のPC2700 DDR SDRAM DIMMが1GBで約3万円。512MBになると6千円程度と一気にプライスダウンしてしまうほど。このように「256MB」というわずか実装メモリで我慢せずに、マザーボードの最大値までメモリを搭載し、メモリチューニングによって快適なWindows XPを構築してみてはいかがだろうか、というのが特集の主旨である。

○メモリチューニングで快適さを手に入れよう

具体的なメモリチューニングの手順だが、まずひとつめはWindows XPのメモリ周りに関するチューニングをレジストリ編集にて行う。筆者の連載(Windows XPスマートチューニング)でも紹介しているとおり、WindowsXPでは、レジストリを編集することによって、カーネルをメモリにロードしたり、バッファサイズを調整するなど、通常の手順では設定出来ない項目を設定できる。そこで、メモリチューニングに関したレジストリ項目を中心に各種設定方法を紹介しよう。

2つめは、前述のとおり安価になったメモリを大量に搭載し、RAMディスクをインストールしてWindows XP全体のパフォーマンスを向上させようというものだ。そもそも、RAMディスクを用意しなくともWindows XPのキャッシュロジックはWindows 9x時代と違って、かなり効率的に動作するようになっているので、一見無駄に感じる方も少なくないだろう。しかし、前述のような圧縮ファイルの展開を一瞬で行えるようになる環境は、多くのユーザーに体験してもらいたいほど快適なものだ。

ちなみに、Windows XPには我々が普段使っている32bit Editionと、より高いスケーラビリティを持つ64bit Editionが存在する。下の表をご覧なって頂ければわかるように、通常の我々が使うWindows XPが認識するメモリは最大4GBということになる。

○64bitアーキテクチャと32bitアーキテクチャの比較
アドレス空間 64bit Edition 32bit Edition
ページングファイル 16TB 4GB
ハイパースペース 8GB 4MB
ページプール 128GB 470MB
非ページプール 128GB 256MB
システム キャッシュ 1TB 1GB

そのため、普段使用しているWindows XPに最大限のメモリを搭載する場合にはメモリを4GB積み込めばよい、ということになるが、現実にはそううまくいかない。それは、マザーボードのデザインやチップセットとの相性などから、現実的に安定駆動する実装メモリ容量は現時点で1GBないし2GBとなってしまう場合が多いためだ(今回、実験するために編集部に用意してもらったマシンも当初は4GB搭載モデルの予定だったが、安定性を重視して2GB搭載モデルとなっている)。そのため、マザーボードの最大容量とメモリスロットを考慮しながら512MB×4や1GB×2とメモリを拡張してチューンアップにチャレンジして頂きたい。

大容量のメモリを搭載していないユーザーは、「OS設定とレジストリチューニングでパワーアップ」をご覧になって頂き、最近メインマシンのメモリを増設した、もしくは増設する予定があるというユーザーは「RAMディスクでパワーアップ」を併読して頂けると幸いだ。それでは早速、次章から具体的なパワーアップ手順を紹介していこう。

○OS設定とレジストリチューニングでパワーアップ

(1)Windows XPのページングファイルを無効にする

では早速Windows XPのチューニングに移ろう。大容量のメモリを積んでいる場合、ページングファイル(仮想メモリ)を不要に感じるユーザーも少なくないだろう。そもそも、ページングファイルとは物理メモリが高価な時代に、大型アプリケーションを快適に動作させるように導入されたロジックである。

例えば、512MB程度の環境でInternet Explorerを100個起動すると、そのうち約半分はページングファイルを用いて起動することになる。100個もInternet Explorerを起動することなどそうそうあり得ない話なので、Adobe PhotoShopなどの大型アプリケーションで数10MBの画像ファイルをレタッチする、などの特殊ケースでない限り不要になるというわけだ。

コントロールパネルやマイコンピュータの右クリックメニューから「システムのプロパティ」を起動し、<詳細設定>タブの<パフォーマンス>セクションにある<設定>ボタンをクリック。次に「パフォーマンスオプション」ダイアログの<詳細設定>タブ、<仮想メモリ>セクションにある<変更>ボタンをクリックする(画面01)。

画面01 Windows XPのページングファイルを無効にする

すると「仮想メモリ」というダイアログが表示されるので、ページングファイルが設定されているドライブを選択した状態で、<ページングファイルなし>をチェックオンしてから<設定>ボタンをクリックする。後は<OK>ボタンをクリックしてWindows XPを再起動すれば、ページングファイルの設定が無効になる(画面02)。

画面02 「仮想メモリ」ダイアログで「ページファイルなし」を指定する

通常の使用環境では、それほど体感的にパフォーマンスアップしたとは感じないかもしれないが、長時間様々なアプリケーションを起動していくごとに、その快適さを感じられることだろう。ただし、実装メモリ容量が少ない場合は「メモリ不足のため、このプログラムを実行できません〜」というエラーダイアログが表示されることがあるので、その場合は、起動中のプログラムを終了してから次のプログラムを実行することをお薦めする。

(2)カーネルメモリのページプールを物理メモリに置く

画面03 タスクマネージャで現在どれだけのカーネルメモリが消費されているか確認できる

Windows XPのコアとなるカーネルが使用するメモリ領域は、ページプールと非ページプールにわかれており、ページプール部分は仮想メモリ上に、非ページプール部分は物理メモリ上に展開されている。タスクマネージャの<パフォーマンス>タブをチェックすればわかるように、<カーネルメモリ>セクションには、「ページ」「非ページ」と称され、KB単位で現在の使用容量が表示されている。画面を例とすれば現在トータルで約61MB使用中というわけだ(画面03)。

そもそもページプールとは、システムからページイン/アウトすることができるシステム空間の仮想メモリ領域のことで、非ページプールとは、常に物理メモリ中に存在していることが保証されているシステム仮想アドレス空間の領域のこと。すなわち仮想メモリ領域に置かれていたページプール領域を物理メモリ上に展開して、Windows XP全体のパフォーマンスを向上させるというのが、このチューニングの主旨となる。

具体的にはレジストリエディタを起動し、HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Managementとキーをたどって開く。そして、DWORD値「DisablePagingExecutive」(存在しない場合は作成する)を開き、「値のデータ」欄で16進数にチェック、半角で「1」と入力した後、<OK>ボタンをクリックする(画面04)。これで設定は完了だ。

画面04 レジストリエディタで「DisablePagingExecutive」の値を設定する

(3)入出力用のメモリサイズを拡張してファイルシステムを高速化する

ハードディスクに代表されるハードウェアデバイスは、デバイスドライバ経由でデータの読み書きを行っているのをご存じだろうか。具体的に言えば、アプリケーション上でファイルを保存した場合、Win32サブシステムを経由してデバイスドライバに命令が送られハードディスクに書き込みが行われる。

もちろんアプリケーションはその大部分が物理メモリ上に展開されるため、物理メモリ上からデバイスへの伝達領域が重要になってくる。ここで設定する「IoPageLockLimit」は、このデバイスと物理メモリ間の読み込み/書き込みレートの最大値、つまりデバイスドライバが使用できる最大のI/Oバッファサイズを指定するためのキーだ。そのため、ハードディスクへのアクセスが頻繁な場合は、この値を増やすとパフォーマンスが向上することになる。

具体的にはレジストリエディタを起動し、HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Managementとキーをたどって開く。そして、DWORD値「IoPageLockLimit」(存在しない場合は作成する)を開き、「値のデータ」欄の「10進」をチェックした状態で任意の数値を入力した後<OK>ボタンをクリックして設定完了(画面05)。

画面05 DWORD値「IoPageLockLimit」を設定する

さて、この任意の値というのはバイト単位で設定するものであり、実装している物理メモリ以上の数値を設定することはできない。筆者の環境では512MB以上物理メモリを搭載したマシンは「4000000」、つまりバッファサイズを約4MBに設定している。このあたりはユーザーの好みにも左右される値なので、試行錯誤して自分の環境に見合ったベスト値を見つけ出して頂きたい。ちなみに「IoPageLockLimit」キーがない場合、キャッシュは512KBとなる。

(4)アプリケーション起動用メモリを開放する

最後に紹介するこのチューニング方法は、あまりメリットが多くないので推奨するものではないが、メモリ周りのチューニングということで今回一緒に紹介する。

Windows XPでは、初期設定のアプリケーション起動用メモリとして4MBほどが確保されている。これは、搭載メモリが64MB以下の場合は効率良く使われるが、128MB以上の環境、つまり最近の環境では無駄なスワップ処理が発生してしまう原因となる。同機能を無効にすると、アプリケーション起動用として確保されたメモリを物理メモリとして使用することができるため、若干ながらパフォーマンスアップに繋がるというわけだ。

具体的にはレジストリエディタを起動し、HKEY_LOCAL_MACHINE→SYSTEM→CurrentControlSet→Control→Session Manager→Memory Managementとキーをたどって開く。そして、DWORD値「LargeSystemCache」(存在しない場合は作成する)を開き、「値のデータ」欄に半角で「1」と入力した後<OK>ボタンをクリックする(画面06)

画面06 DWORD値「LargeSystemCache」を設定する

これらレジストリの編集が完了したら、最後にWindows XPを再起動して設定完了となる。