web-dev-qa-db-ja.com

SGEでのジョブのメモリ使用量を追跡する

RAMジョブがクラスターで使用している量を正確に把握する方法についてのガイダンスを探しています。ジョブはマルチスレッドではなく、単一のCPUで実行されます。

ジョブを実行して「top」を実行すると、これだけのRAMを使用していることがわかります...

VIRT: 45.6g
RES: 38g
SHR: 9600

これは(私が間違っている場合は訂正してください)、38 GBの実際のRAMと7.6 GBのスワップに移動したものを使用していることを意味します。私がテストしているツールの作成者が私の仕事で使用すべきだと言っているのは、約40ギグです。

SGEからこれらの数値を取得すると混乱が生じます(qstatまたはqacctを使用)。 qacct -j 7270916ここに表示されます

mem 2768.453
maxvmem 4.078G

ただし、これらのどちらもRAMの45.6ギグに近いものではありません(maxvmemは実際に45.6ギグを表すように聞こえますが)。

ジョブの実行中に、このコマンドを使用してみましたqstat -j 7270916ここで私は行を見ました:

usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G

MemはすべてのRAMが実行中に使用/解放/使用/解放された(それがちょうど終わった)の合計ですが、maxvmemはまだ非常に低い(私のよりはるかに少ない)と思います期待される45.6ギグ)。

したがって、qcctとqstatの両方を使用すると、予想される数値(上に表示されます)と一致しない数値が生成されます。

実行の終了後にSGEコマンドを使用して意味のあるRAM使用数を取得する方法についての提案はありますか?

編集:私はSGE 6.2u5を使用しています

7
lonestar21

これは古い質問ですが、それでもわからない場合は、次のように入力できます。

qstat -j <Job_ID>

カテゴリ「maxvmem」は、実行時に使用されたジョブの最大量​​RAMジョブを示します。したがって、maxvmemの値は、ジョブのメモリの最大量を見つけるために探している数です実行中に使用されます。

また、ジョブの実行中にのみqstatを使用できます。ジョブの終了後にメモリ使用量を確認する場合は、使用する必要があります

qacct -j <Job_ID>.

これが役に立てば幸いです。以下は詳細情報へのリンクです。

http://wiki.genomics.upenn.edu/index.php/HPC:Large_memory_jobs

3
szimmerman