私は1TBのRAMを備えたRHEL4システムを持っており、mallocとmmapが512GB以上のメモリ割り当てを拒否することを発見しました。一方、私のRHEL5システムには問題がないようです。まあ、私はそれがカーネル構成の問題だと仮定しています。最大プロセスサイズ(固定ページサイズを想定)を制御することが何であるかを知っている人はいますか?
答え1
これamd64用のLinux初期ポートプロセス用の512 GBとカーネル用の512 GBに分かれた40ビット仮想アドレス空間のみをサポートします。現在のバージョン128TB/128TBに分かれた48ビット仮想アドレス空間をサポートします。最後の制限は、amd64 アーキテクチャの現在のバージョンに固有のものです。構成する方法はありません。メモリ管理ユニットより多くのビットを大切にしてください。バラよりLinuxはx86-64から512GBを超える仮想アドレス範囲をどのようにサポートしますか?amd64 MMUのガイドラインまたはAMD64アーキテクチャプログラママニュアル(§5.1)専門を読んでください。
この制限がいつ変更されたかはわかりませんが、2.6.9カーネルは本当に古いです。 Red Hatをリリース機能と制限事項表RHEL 3~RHEL 6の場合。 RHEL4のプロセスあたりの最大アドレススペースは512 GBです。 RHEL5は2TBを提供しますが、フル128TBをサポートするRHEL6に直接アップグレードすることもできます。