memとvmemについて

memとvmemについて

私はLinux上で動作するマシンクラスタを使用しています。

mpirun私のタスクをクラスタシステムに送信するシェルスクリプトがあります。同じスクリプトで、ジョブに割り当てるノードの数を選択できます。今まではそんなに良くなった。

問題が発生します。一部のジョブを送信すると、すべてが正常に機能しますが、ノードの容量がいっぱいになったときに送信されたジョブの一部は完了しません。したがって、クラスタで使用可能なメモリがすべてのタスクを同時に処理するのに十分ではないようです。

そのため、時間の経過とともに各タスクのメモリ使用量を確認したいのですが、このqstat -fコマンドを使用すると多くの内容が表示され、ほとんど理解できません。

私の質問は次のとおりです。以下のコマンドの出力例では、qstat -f2種類のメモリを見ることができます:memvmem。 2つの違いが何であるか、実際にどのくらいのメモリが使用されているかを知りたいです。

resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08

また、このコマンドの出力を詳しく説明する参考資料をお送りいただきありがとうございます。 man qstatを試しましたが、返された各行について詳しく説明しません。

答え1

公開質問リストからこの内容を除いて簡単な答えを提供します(上記のgoldilocksのコメントとqstat文書は、ユーザーがシステムについてよりよく知っていると仮定します)。

答えは、「実際に使用されたメモリの量」(そして後で「使用されたRAMスペース」というコメントへの答えで)が正確に何を意味するかによって異なります。

出力の「mem」は、ジョブqstat -fで使用されたシステムRAMの量、より正確には観察された最大使用量です。クラスタのジョブ監視システムは時々使用量を確認できるため、これは必ずしも最大使用量ではありません。ジョブはここで報告されているよりも多くのメモリーを使用しようとするかもしれませんが、システムはジョブに多くのメモリーを提供しない可能性があります。たとえば、メモリがなくなったり、同じシステムで実行されている他のジョブがメモリを解放したりして競合しているためです。さらに、ファイルアクティビティ(I / O)が多いと、ファイルシステムキャッシュがRAMの競合他社になる可能性があります。

「vmem」は、最新のプロセッサがメモリを管理する方法に関連する数量です。これは別の頂点です。この数には、メモリマップファイル、スワップスペースなど、プロセスがアクセスできるさまざまなエントリを含めることができます。これには、プロセスによって割り当てられたが一度も使用されなかったスペースが含まれているため、非常に大きくなる可能性があります。数値が低い場合はメモリが問題ではないと結論付けることができますが、数値が高い場合は不明であるため、追加の調査が必要です。一部のアプリケーションでは、小さな部分しか必要としませんが、大量の仮想メモリを割り当てます。

関連情報