web-dev-qa-db-ja.com

Linux on 2POpteronのプロセスでアドレス可能な最大値RAM

私は、制限がメモリの量である(つまり、プロセスが並列化できない)いくつかのバイオインフォマティクスの作業を行っています。 Opteron 6100CPU用の2つのソケットと128GBのRAM 16 x 8GBDIMMで可能)を備えたDellR715のようなサーバーがあります。

各CPUには、DIMMのバンクが関連付けられています。

私の質問は、Linuxをそのようなマシンに置いた場合、RAM各CPUでアドレス指定可能ですか?つまり、Linuxでシングルスレッドプログラムを実行すると、そのプロセスは処理されますか? 128GBのRAMまたは64GBのRAMのみにアクセスできますか?

4
jed877

厳密に言えば、そのシングルスレッドプロセスは、サーバーで使用可能なすべてのメモリにアクセスできます。あなたはそれについて心配する必要はありません。

プロセスはRAM内のallメモリにアクセスできますが、その半分へのアクセスは(理論的には)残りの半分へのアクセスよりも遅くなります。 VMWare-ESXは、パフォーマンスを良好に保つために、プロセスの実行と同じメモリノードに特定のVM)のすべてのメモリを保持しようとするため、メモリの局所性を認識しています。

このテクノロジは、Non-Uniform Memory Access(NUMA)と呼ばれます。 Linuxマシンにはすでにそのビットが含まれている可能性があります(numastatはデータを返す必要があります)。 numactlプログラムは、プロセスにメモリポリシーを割り当てます。これは、独自のコードを記述していて、メモリ速度を最適化したい場合に非常に役立ちます。 CPUローカルメモリは、別のCPUのメモリノードのメモリよりも高速にフェッチします。これは、使用している内容によっては便利な場合があります。

5
sysadmin1138

Linuxは、64ビットシステムで2 ^ 64-1の仮想アドレス空間を提供するデマンドページングシステムです。 VMMは、ボックス内のすべてのRAMにアクセスできます。 Linuxカーネルは、プロセスではなくページテーブルの作成を処理します。

0
Jim B