2017-01-25 11 views
0

使用しています:SLURM Zombiejobのクリーンアップは、私は次のような問題に直面しています

私のモジュールは、SLURM投与クラスタ上のジョブの数を管理する必要があります。バッチ全体は--multiprogを使用して開始されます。

これらのうちの1つはrabbitMQ接続を使用しています。悲しいことに、悲しいことに、私の決定ではなく、正常に終了することはできません。その結果、このサブジョブは、バッチ全体がslurmによってシャットダウンされると、「ゾンビ」ジョブを残します。さらに悪いことに、それはハートビートを送って、rabbitMQ接続を生き続けるなどします。

本質的に私はそれぞれの仕事の後にゾンビの狩りに行く必要があります。私は単純なエピローグ(killall -9 -f)でこれを実行しようとしましたが、明らかにエピローグは完全なノードリストを取得しないので、このジョブが使用したすべてのノードに "undead"を適用することはできません。

バッチファイルのenv変数からすべてのmultiprog-subjobの完全なノードリストを取得していないようです。

自分のノードを私に送るサブジョブを得ることができました...しかし、それは自分自身ができないサブジョブコードの変更を必要とし、未来を保証するものでもありません。 --multiprog ...の代わりに同じバッチからジョブを実行してみましたが、そのオプションにはワームの可能性があります。

だから、最善の解決策は、その2つのことに頼らなくても実行できる方法です。

誰もこのような状況での経験があり、ソリューションのフックを提案できますか?

+0

クラスタまたは一般ユーザーの管理者はいますか? – damienfrancois

+0

私は定期的にユーザーです。私は今ゾンビの仕事を避けることで問題を解決しました(ヒント:slurmはバッチファイルのシェルスクリプトをあまりうまく処理しません)。 しかし、ゾンビが頭を上げる危険があることを考えれば、私は毎日の "手仕事"サービスの解決策を試してみたいと思っています。 –

答えて

0

ゾンビジョブの解決策を見つけることで問題を解決しました。

Slurmはバッチファイル内のシェルスクリプトをあまりうまく処理しません。私たちはそれらを使ってSSH 255文字制限を "回避"しました。悲しいことに彼らはシャルルの仕事を導入しました。シャルルの仕事は眠りにつかれず、ゾンビが生き残りました。

したがって、255文字を超えるmultiprocsを使用するにはどうすればよいですか?変数。バッチファイル内の変数をエクスポートし、multiprogファイル内のbashスクリプトで使用することができます。これにより、マルチログファイルの可読性(および保守性)が大幅に低下します。しかし、いったんbashが動いてしまえば、それはなくなりました - >ゾンビはありません。

関連する問題