クラスタ内のユーザーに割り当てられているすべてのプロセスを一覧表示する方法

クラスタ内のユーザーに割り当てられているすべてのプロセスを一覧表示する方法

私たちの大学には、SLURMが管理するクラスタがあります。問題は、一部のリソースがコマンドに表示されないにもかかわらず実装されない場合があることですsqueue。たとえば、scancel数日前に割り当てられたリソースをシャットダウンしたにもかかわらず、ノードの1つから多くのCPUが私に割り当てられていることを確認しました!私はそれらを見つけて殺したい。

自分のローカルコンピュータで公開およびプライベートSSHキーを生成したので、、、ssh-keygen...を使用してすべてのコンピュータにログインできますが、ノード名は順番になっていません。これらのノードのいずれかにログインし、次の結果を実行すると:ssh foossh [email protected]ssh [email protected]sinfo

PARTITION   AVAIL  TIMELIMIT  NODES  STATE NODELIST
debug          up   infinite      3    mix baz[080-081,083]
debug          up   infinite      2  alloc grault,baz082
debug          up   infinite     13   idle baz[061-070],corge,bar,quux
gpu_p100       up   infinite      1    mix baz080
gpu_titan-x    up   infinite      2    mix baz[081,083]
gpu_titan-x    up   infinite      1  alloc baz082
r730           up   infinite      1    mix baz080
t630           up   infinite      2    mix baz[081,083]
t630           up   infinite      1  alloc baz082
r930           up   infinite      1  alloc grault
m610           up   infinite     10   idle baz[061-070]
r720           up   infinite      1   idle corge
r815           up   infinite      1   idle bar
sm1u           up   infinite      1   idle quux
main*          up   infinite      3    mix baz[080-081,083]
main*          up   infinite      2  alloc grault,baz082
main*          up   infinite     12   idle baz[061-070],bar,quux

これは3つのbaz[081-083]ノードを意味しますbaz081。いいえ、これらのノードの1つにSSHを接続すると、特定のユーザーに割り当てられているすべてのプロセスを一覧表示できます。baz082baz083

ps -A | grep user1

しかし、時間がかかります。このプロセスを自動化するにはどうすればよいですか?

  1. ノードの1つにログイン
  2. 走るsinfo
  3. sinfo情報を抽出し、コマンドの最後の列から文字列リストを作成します。
  4. 特定のユーザーに対して実行されているすべてのプロセスを見つけてuser1端末に印刷する

これらの手順を自動化するためにスクリプト(好ましくはCmder / ConEmu互換)を作成するにはどうすればよいですか?

ベストアンサー1

その後、すべてのノードにログインを試み、user1のプロセスを印刷します。

    for hostList in $(sinfo -h | awk '{print $6}' | sort -u); do
            for host in $(scontrol show hostname $hostList); do
                    echo $host; ssh $host "ps aux | grep user1";
            done;
    done;

ただし、オフラインノードにログインしたくないので、sinfoコマンドを次のように拡張します。

        for hostList in $(sinfo -h | grep -v down | awk '{print $6}' | sort -u); do

sinfo/scontrol をよりよく理解したら、これを行うより良い方法があるかもしれませんが、このスクリプトはそのタスクを実行する必要があります。

しかし、このようなことが頻繁に発生する場合、孤立プロセスがしばしばクラスタのパフォーマンスに害を及ぼす可能性があることを管理者と議論することを検討することができます。理想的には、システムは定期的に自動的に清掃する必要があります。

おすすめ記事