3

簡単に言うと、問題の説明: LSF で、ジョブ内で実行されているすべてのプロセスにシグナル SIGCONT/SIGTSTP を渡す方法はありますか?

LSF (バージョン 9.1.2) で実行される Perl ラッパー スクリプトがあり、Perl スクリプトと同じ LSF マシンでツール (ソースは利用できません) を起動します。

ツールは 2 つのプロセスを開始します。1 つはライセンス管理用で、もう 1 つは実際の作業を行うためです。また、SIGSTSP/SIGCONT を両方のプロセスに送信してライセンスを解放/再取得するオプションもサポートしています (これは私が達成したいことです)。

実行bkill -s SIGCONT <JOB_ID>すると、ツール プロセスのみが再開され、ライセンス プロセスは再開されないため、問題が発生します。

Perl スクリプト自体の PGID にシグナルを送信できるかどうかを確認しようとしましたが、ライセンス プロセスは独自のプロセス グループを開始します。

Perl または LSF オプションを進めるための提案は大歓迎です。

ありがとう、アビシェーク

4

1 に答える 1

3

Perl スクリプト自体の PGID にシグナルを送信できるかどうかを確認しようとしましたが、ライセンス プロセスは独自のプロセス グループを開始します。

これはおそらくあなたの問題です。LSF は、「ジョブ内で実行中のプロセス」をプロセス グループ別に追跡します。ジョブが独自のプロセス グループ内で実行されるプロセスを生成する場合 (たとえば、それ自体をデーモン化することによって)、それは本質的に LSF の制御外のランナウェイ プロセスであり、それを管理するのはジョブの責任になります。

参考までに、こちらの「切り離されたプロセス」のセクションを参照してください

オプションについて:

  1. cgroups 追跡機能は、これらの多くの場合に役立つと思います。管理者に問い合わせて、lsf.conf に設定されているかどうかLSF_PROCESS_TRACKINGを確認してください。LSF_LINUX_CGROUP_ACCTそうでない場合は、彼にそれらを設定するように依頼し、それがあなたのケースに役立つかどうかを確認できます (実行しているホストが cgroup をサポートしていることを確認する必要があります)。9.1.2 では、この機能はインストール時にオンになっているため、このオプションは実際にはさまざまな理由で役に立たない場合があります (たとえば、ホストで cgroup が有効になっていない場合など)。
  2. ライセンス プロセスを自分で管理します。スクリプト内からライセンス プロセスの PID/PGID を見つけることができる場合は、 などを使用してスクリプトに/のperlカスタム シグナル ハンドラをインストールし、スクリプトが. ここを参照してください。SIGCONTSIGSTPsigtrapbkill
于 2016-01-14T13:16:11.273 に答える