Linuxで実行されているクラスターマシンを使用しています。
mpirun
を使用するシェルスクリプトがあります クラスターマシンにジョブを送信します。同じスクリプトで、ジョブに割り当てるノードの数を選択できます。これまでのところ、とても良いです。
私の問題は次の後に発生します。いくつかのジョブを送信すると、すべてが正常に機能しますが、ノードの容量をいっぱいにすると、送信されたジョブの一部が完了しません。その結果、クラスターで使用可能なメモリが、すべてのジョブを同時に処理するのに十分ではないのではないかと疑っています。
これが、各ジョブのメモリ使用量を経時的に確認したい理由です。次に、qstat -f
を使用します。 コマンドですが、多くのことが表示され、そのほとんどは理解できません。
これが私の質問です: qstat -f
のサンプル出力 以下のコマンドでは、2種類のメモリを確認できます:mem
およびvmem
。これら2つの違いと、実際に使用されているメモリの量を知りたいのですが。
resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08
さらに、このコマンドの出力が詳細に記載されている参考資料をいただければ幸いです。 man qstatを試しましたが、返された各行の詳細には入りません。
承認された回答:
未解決の質問のリストからこれを削除し、簡単な回答を提供するだけです(上記のgoldilocksのコメントとqstatのドキュメントは、システムに精通していることを前提としています):
答えは、「実際に使用されたメモリの量」(およびコメントへの返信の後半:「使用されたRAMスペース」)の正確な意味によって異なります。
「mem」は、マシンのRAMのどれだけがジョブによって使用されたか、より正確には、観測されたピーク使用量です。クラスタのジョブ監視システムは使用状況を頻繁にチェックしているだけなので、これは必ずしも実際のピーク使用量ではありません。あなたのジョブはここで報告されているよりもはるかに多くのメモリを使用しようとしている可能性がありますが、システムはジョブにそれ以上のメモリを与えていません。たとえば、同じマシンで実行されているメモリや他のタスクがメモリを奪い合うことがないためです。また、ファイルアクティビティ(I / O)が多い場合、ファイルシステムキャッシュはRAMの競合になる可能性があります。
関連:Linux –カレンダーに使用するアプリケーションはどれですか?「vmem」は、最新のプロセッサがメモリを管理する方法に関連する量です。ここでもピーク値です。この数には、メモリマップトファイルやスワップスペースなど、プロセスがアクセスできるさまざまなものを含めることができます。これには、プロセスが割り当てたが使用されなかったスペースが含まれるため、非常に大きくなる可能性があります。数が少ない場合は、メモリは問題ではないと結論付けることができますが、数が多い場合は、わからないため、さらに調査する必要があります。一部のアプリケーションは、ほんの一部しか必要としない場合でも、大量の仮想メモリを割り当てます。