Linux で実行されている長い処理パイプラインの途中に、matlab 処理スクリプトがあります。
matlab スクリプトは、(8 コア) で並列に多数N
のデータセットに同じ操作を適用します。通常、データセット全体の処理には約 2 時間かかります (8 コアの場合)。D_i (i=1,2,...,N)
parfor
残念ながら、時々、matlab サブプロセスの 1 つがランダムにクラッシュするようです。これにより、ジョブを完了できなくなります (そして、パイプラインを完了できません)。
D_i
プロセスがクラッシュした場所を具体的に再処理した場合、問題なく実行されるため、これはデータに依存しないと確信しています。さらに、これまでに数千の前述のデータセットを処理しました。
今問題に対処する方法(...手動で...):
matlab ジョブを開始した後、マシンのプロセス リストを定期的にチェックします (単純な を使用top
)。2 時間の作業の後、1 つの matlab プロセスが生きている場合はいつでも、それがクラッシュしたことを確認できます。次に、単純にそれを強制終了し、分析されていないデータセットの部分を処理します。
質問:
実行中のすべての matlab プロセスをタイムアウトし、たとえば 2 時間以上 CPU が稼働している場合はいつでもそれらを強制終了する方法についての提案を探しています。