軽い気持ちで導入するべきでないRAMディスク管理ソフト
64bit OSが全盛の時代ですが、まだ32bit OSを利用している方も多いはず。
「べ、別に32bitだって使えるCPUは同じだし、SSDにすればエンコードでもしない限り速度変わらないし、メモリの上限が3GBだって全然不便してないし…|ω・`)チラッチラッ」
という状態で、メモリの件に関しては非常に気になっていました。
特に貧乏性の私が気になったのが、4GBのメモリを積んでいるのに最大でも3GB程度しか認識されないという点です。
このメインメモリとして利用できない部分を「管理外領域メモリ」と言います。この領域はOSに認識されません。
そこで「管理外領域メモリ」をRAMディスクとして認識させるソフト利用して有効活用しよう。というのがよくある話なんですが、実はこれ落とし穴があります。
なぜかあまり解説されませんが、実は「管理外領域メモリ」を有効活用するにはいくつかの条件があるからです。
このページではその条件を紹介します。
まずはCPUがPAEに対応しているか調べる
PAE(Physical Address Extension)とは、32bit OSで4GBを超えるメモリを扱えるようにする機能です。別名「物理アドレス拡張PAE」と呼ばれます。
PAEを有効にすると最大で64GBまでメモリを認識することができます。
Intel製のCPUの場合「Socket 775以降のCPU」、AMD製のCPUの場合「Socket 754以降CPU」であれば対応しています。
Intelで言えばPentium4のPrescott以降で、2004年以降のCPUであれば対応していることになります。
確実に調べたい場合はCoreinfoというCPUの情報を書き出してくれるプログラムを利用します。「Coreinfoの公式ページ」にアクセスしてダウンロードしてください。
解凍した「Coreinfo.exe」をCドライブ直下に移動します。
「スタート>プログラム名を入力して実行」で「cmd」と入力してエンター。コマンドプロンプトを起動します。
(行頭の>はコマンドプロンプトを表す文字です。実際には入力しないようにしてください)
>cd C:¥ >coreinfo | findstr "PAE" Coreinfo v3.31 - Dump information on system CPU and memory topology Copyright (C) 2008-2014 Mark Russinovich Sysinternals - www.sysinternals.com PAE * Supports > 32-bit physical addresses
7行目のPAEの欄に「*(アスタリスク)」がありますが、これが有効なことを示す表示です。無効な場合は「–」となっています。
PAEを有効にする
再びコマンドプロンプトを立ち上げブートローダでPAEを有効にします。
(この方法はVistaの方法です。NT系OSの場合は異なるのでマニュアル等をご覧ください。)
>bcdedit Windows ブート マネージャ -------------------------------- identifier {bootmgr} device unknown description Windows Boot Manager locale ja-JP inherit {globalsettings} default {current} resumeobject {cef94374-7352-11e1-8da6-806e6f6e6555} displayorder {current} toolsdisplayorder {memdiag} timeout 30 resume No Windows ブート ローダー -------------------------------- identifier {current} device partition=C: path \Windows\system32\winload.exe description Windows Vista (TM) Home Premium recoverysequence {572bcd56-ffa7-1155-aae0-0007e994107d} recoveryenabled Yes osdevice partition=C: systemroot \Windows resumeobject {cef94236-7352-11e1-8da6-806e6f6e6555}
以上のようにブートマネージャとブートローダの情報が表示されます。
ブートローダの項目に「pae」の項目がなければとPAEは無効な状態です。「bcdedit /set pae forceenable」と入力して有効にします。
>bcdedit /set pae forceenable この操作を正しく終了しました。
再び確認します。
>bcdedit (省略) Windows ブート ローダー -------------------------------- identifier {current} device partition=C: path \Windows\system32\winload.exe description Windows Vista (TM) Home Premium recoverysequence {572bcd56-ffa7-1155-aae0-0007e994107d} recoveryenabled Yes osdevice partition=C: systemroot \Windows resumeobject {cef94236-7352-11e1-8da6-806e6f6e6555} pae ForceEnable
無事paeの項目が加わっています。
ちなみに「ForceEnable」とは強制的に有効にするという意味です。
メモリーリマッピング機能を有効にする
メモリーリマッピング(Memory Remapping)とはメモリホールと呼ばれるOSからアクセスすることのできないメモリ空間をremapメモリ領域へ置き換える機能です。
メモリホールとはPCIメモリアドレス範囲のことで、BIOSやハードウエア(主にビデオメモリ)に関する情報を扱うために予め取られる空間です。
32bit OSでは扱える最大4GBの領域にPCIメモリアドレス範囲が含まれるため、OSでは約3GB程度しかメモリを認識することができません。
上の図からわかるようにPAEでメモリ空間を拡張していないと、有効にリマッピングできません。
詳しい原理はわかりませんが(2GBの部分からリマップする?)メモリーリマッピングを単体で行うと、使えるはずだった3GB程のメモリが2GB程度しか認識しなくなります。
以上のことから32bit OSに4GBのメモリを積み、OS管理外メモリを使うにはメモリーリマッピングが必須です。
自作PC等の方は、BIOSの設定でメモリーリマッピングを有効にしてRAMディスクとして利用できます。BIOSの表記はマザーボードによって異なるので、マニュアルを参照してください。
題名にもあるように問題はメーカー製のパソコンの場合です。
BIOSにメモリーリマッピングの項目がないことが多く、設定ができません。そのためどんなRAMメモリ用のソフトを使ってもOS管理外メモリを使えるようにはなりません。
また、RAMディスクを作成できたとしても、それは本来使える3GBのメモリから切り取って作ったRAMディスクです。実メモリが減った分スワップしやすくなり、逆に動作が遅くなることもあります。
どうしても有効にRAMディスクを利用したいなら、PAEを有効にした上で、4GB以上の実メモリを積む必要があります。(RAMディスクのためだけにメモリを増設するくらいならグレードが上のSSDでも選んだほうがよっぽど効果的ですが…)
以上のことを理解せずにWeb上にあふれるRAMディスク管理ソフトを導入すると、様々な不具合が出て、最悪の場合OSが起動しなくなることもあります。
というよりも、私は動作しなくなりました(´;ω;`)ウッ…。いくつかのソフトをインストールして動作テストを行っている最中に突如ブルースクリーンに…。そのままOSが起動することはありませんでした。
悪いことにTrueCryptでドライブを暗号化していたので、データの救出にも非常に苦労しました。
ここまで読んでいただいた皆さんなら納得していただけると思いますが、ソフトの「インストールするだけ簡単!」などの宣伝文句に騙されないようにしてください。
少しでも時間短縮しようと思って導入したソフトのお陰で、何時間も無駄にしてたら世話無いですねw
とてもわかりやすいお話ですね。わたくし、この結論に達するまで、丸一日、某メーカー製タブレットと格闘していました。RAMDISKソフトを様々漁り、何度もインストール・アンインストールを繰り返したり、設定をいじくり回しても駄目でした。トホホです。仰せの通り、BIOSにメモリリマップの項目がありません。何度も隈なく探しても、見当たりません。それでも諦めつかず、WEBを漁っていた所、この記事にたどり着きました。同じような思いをされていた方に出会えて、諦めもつきそうです。有難うございました。
お役に立てたようで何よりです。
あまり需要が無いのか、ほとんど情報がなかったので同じ失敗をする方が減らせればと、まとめてみました。
私の場合は復旧作業に丸一日かかりましたw
初めて1時間でこの記事に気づけてよかった・・・
感謝感激です!!!
お役に立てたようで何よりです。
メーカー製のPCの場合でメモリーリマッピングの設定ができないというのは
最初から有効になってるからじゃないでしょうか?
実際、VAIOつかっててメモリーリマッピングの設定などしていませんが
VSuite RamdiskとRAMDAを試してみましたが一応今のところきちんと使えています。
PAEも設定しなくとも有効になってましたしそんな気がします。
ただ、管理外領域で確保してる設定にはなってますが実際は領域内から確保してると言う話については
確かにメモリ使用量が2GB超えた辺りからスワップが多くなってるのでなきにしもあらず。
ご指摘ありがとうございます。
私が利用した際も動作はするものの、メモリを使うソフトを利用するとあっという間にスワップが発生しました。
断定はできませんが、使えるはずのメモリから切り取って使っていると思われます。
ちなみにChromeなどのメモリを使うソフトを利用すれば簡単に判断できます。
こんばんわ。
今となっては32bitWindows自体がめずらしくなってきてはいますが、メモ代わりに。
RAMディスクでOS管理外メモリが使えているかどうかは、RAMMapという物理メモリ利用状況を見るツールを使えばよいでしょう。
https://docs.microsoft.com/ja-jp/sysinternals/downloads/rammap
仮想メモリからRAMディスク領域を確保するタイプならPaged Poolが
物理メモリから直接RAMディスク領域を確保するタイプならNonpaged Poolが肥大化します。
OS管理外メモリが使えている場合は、Paged PoolとNonpaged Poolが肥大化しない分、
OSや常駐アプリがMapped Fileを多く確保します。
※Vista以降のWindowsは一定の領域まで事前にメモリを確保してしまう挙動に変わったため
Paged Poolはカーネル モードで動作するドライバによって確保される仮想メモリ空間で、OS コンポーネントやアプリケーションにより利用されるもので、ページアウト可能なため確保した領域が全て物理メモリ上に存在するわけでは有りません。
Nonpaged Poolはページアウト不可能な領域で、確保した領域は全て物理メモリ上に存在します。
Mapped Fileはディスク上のファイルリソースをメモリ領域にマッピングしたもので、メモリにアクセスするためディスクにアクセスするよりも高速にアクセスできます。
詳しい情報ありがとうございます。勉強になります。
メモリ認識
少しずつ拡張する(OS)戦略
結構ダルいな。
ガッツリはやくならない足枷。
RAMはやく進めば、
圧掛けてそういう速度でも記録残るディスクや、よりアクセス速度はやいRAM
と、していけば、
1k1k1k
画素程度の3Dがサクサク
処理出来そうなのに、
ハードがやや遅め。