misc.log

日常茶飯事とお仕事と

1プロセスで2GBを超えるメモリ利用@Windows

とりあえず仕事メモ。サーバーに多めにメモリを搭載しても(多めっても32ビットシステムなので4GB)、Oracleなどがそれをフルに使う訳じゃないっていうのが問題になってるところがあるみたいで。気になったので少し調べてみた。

Ebi's Webpage/メモリ管理について学ぶ
http://ebi.dyndns.biz/diary/20080530.html
IT都市伝説/32bitCPUはメモリを4GBしか使うことができない
http://mag.autumn.org/Content.modf?id=20050119154552
メモリサポートとWindowsオペレーティングシステム
http://www.microsoft.com/japan/whdc/system/platform/server/PAE/PAEmem.mspx
KB 291988/4GB RAMチューニング機能と物理アドレス拡張のスイッチの説明
http://support.microsoft.com/kb/291988/JA/
屋根裏部屋別館blog/Windowsでのメモリアドレッシングにまつわるお話
http://messiah-annex.at.webry.info/200501/article_7.html


今の大半のコンピュータが情報をメモリに置いて、メモリにある情報8ビット(=1バイト)ごとに通し番号を設定し、データを読み書きする時はその通し番号を指定して動いているのですが、その通し番号を入れておく入れ物のサイズが32ビット、すなわち最大値が2の32乗(4,294,967,296)。これを1,024で3回割ったのが情報の世界での「ギガ(G)」なので、やってみると「4G」、というわけで通し番号の上限値は「4G」。この通し番号の事を「アドレス」と呼びます。番号1個に情報1バイトが結びつくので、直接指定可能な物理メモリの分量は「4GB(ギガバイト)」となるわけですね。このあたり、「メモリアドレスの上限値は4G、これをバイトに直したら...4GBにならないじゃないか?」と思う人は、アドレス1個と実際のメモリの情報量の対応が別途決まっていて、いわゆる「バイトマシン」と呼ばれる今のほとんどのコンピュータでは「1アドレス=1バイトの情報」である、ということも合わせて理解しておかないといけません。OK?(書いてて自分も判らなくなった)。

んじゃ、自宅PCなど(ドスパラ製のQ6600搭載ガレリア)で4GB積んでもOS上は3.5程度になるのはなんだろう。この疑問には、IBMのサイトがヒントをくれている。

サーバーでメモリーサイズが少なく表示される - Servers
http://www-06.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-03C7574

あちこちでこれは「チップセットの制約による。Intel 945 Express以前のチップセットでは...」とか書かれているが、ではそうしたチップセットの仕様をIntelのサイトで確認すると、きっちり「上限は4GB」と書いてある。IBMの上記サイトによると、このOSが認識するメモリが少なくなるのは、チップセット自体が予約している領域があるから、だそうな。これについてはPAEで解消可能と書いてある..ということは、自宅とかでもPAEオプションをBoot.iniに書けば4GB??あれ?8GBとか搭載しているのならそれもありだろうけど、そもそも4GBのところ、チップセットが予約して少ないのであれば、いくらPAEで拡張しても物理領域は増えることもないわけで。
やっぱりあくまでサーバーなどに大量にメモリを積んだ場合の話ね。
では、チップセットがこのように領域を確保しない方式ってのはあるのかな?ってことで軽く見てみたら

SC420では物理メモリ4GBはフルフルに使えない
http://d.hatena.ne.jp/dayflower/20070524/1179987794

に、メモリマップドI/Oという方式だと物理領域に場所を取ってしまうが、メモリリマッピングという方式だと「4GB以上のアドレス空間にマッピングしなおす」そうな。この4GB以上のアドレスって、論理アドレスのこと?ちょっと調べてみないとわかんない。もうなんだか眠くてふらふらなので今日はやめとく。