web-dev-qa-db-ja.com

128GBのページフォールトRAM

AMDオプテロンサーバー(4CPU、各12コア、128GB RAM)で3D再構成用のCPUとメモリを大量に消費するアプリケーション(該当する場合はwww.3dsurvey.si)を実行しています。 (私が信じている)ページフォールトのために、CPUが期待どおりに使用されていないことに気づきました。処理時に1秒あたり100k以上のページフォールトが発生しますが、メモリは約50%しか使用されていません。私たちが得る平均的なプロセッサ使用率は約10%-20%です。また、ページファイルを無効にしようとしましたが(これはお勧めできません)、改善は見られず、同じ割合のページフォールトが発生しました。ソフトウェアは通常、通常のPC上のすべてのプロセッサを使用します。

質問を他の人に適用できるようにするため

  • RAMがまだ利用可能な状態で、ページフォールトが発生するのはなぜですか?
  • ページフォールトの数を減らす方法は?
3
mitjap

ページフォールトはメジャーマイナーフォールトに分けることができます

プログラムまたはそのデータがディスクにスワップアウトされ、fromディスクにスワップインする必要がある場合、メジャーページフォールトが発生します。ディスクへのスワップアウト/ディスクからのスワップアウトはCPU速度に比べて非常に遅いため、これらの障害は「メジャー」とマークされます。たくさんの無料のRAM(約50%)があり、スワッピングを完全に無効にしてもパフォーマンスは回復しなかったので、問題はnot主要な障害に関連していると思います。

マイナーページフォールトは、CPUが小さくて高速なTLBキャッシュにない仮想メモリアドレスにアクセスしようとしたときに発生し、その結果、既知のDRAMアドレスに格納されているより大きな(そしてより遅い)マッピングテーブルを検索する必要があります。プログラムを散発的に実行したり、大量のメモリにアクセスしたりすると、大量のマイナーページフォールトが発生することが予想されます。この問題は、NUMAに対応していないプログラムで使用すると、マルチソケットNUMAトポロジ(Opteronで使用されているものと同じ)によって悪化する可能性があります。

プログラムがNUMAに対応していない場合、マイナーページフォールトがパフォーマンスの問題の原因となる可能性があります。これが当てはまるかどうかを大まかに把握するには、シングルソケットマシンでプログラムを実行して(またはサーバーの1つを除くすべてのソケットを無効にして)、CPU使用率が予想よりも高いかどうかを確認します。

とにかく、ソフトウェアを作成しているソフトウェアハウス(またはあなたの特定のプログラムに非常に経験のある人)だけがあなたの質問に完全に答えることができます。

7
shodanshok