コンピューターにIntelMPIベンチマークをインストールしようとしましたが、次のエラーが発生しました。
fork: retry: Resource temporarily unavailable
その後、実行ls
してtop
コマンドを実行すると、このエラーが再び発生しました。
このエラーの原因は何ですか?
私のマシンの構成:
Dell precision T7500
Scientific Linux release 6.2 (Carbon)
コンピューターにIntelMPIベンチマークをインストールしようとしましたが、次のエラーが発生しました。
fork: retry: Resource temporarily unavailable
その後、実行ls
してtop
コマンドを実行すると、このエラーが再び発生しました。
このエラーの原因は何ですか?
私のマシンの構成:
Dell precision T7500
Scientific Linux release 6.2 (Carbon)
回答:
これは通常、ファイル記述子が不足していることが原因です。
システムの合計ファイル記述子の制限があります。コマンドから何が得られますか。
sysctl fs.file-nr
これにより、ファイル記述子の数が返されます。
<in_use> <unused_but_allocated> <maximum>
ユーザーのファイル記述子の制限を確認するには、次のコマンドを実行します。
sudo su - <username>
ulimit -Hn
ユーザーが使用しているファイル記述子の数を確認するには、次のコマンドを実行します。
sudo lsof -u <username> 2>/dev/null | wc -l
したがって、システムファイル記述子の制限の問題が発生している場合は、/ etc / sysctl.confファイルを編集して、fs.file-maxの行を追加するか、既存のファイルを変更して、大きな値に設定する必要があります。必要なファイル記述子の数を処理して再起動するのに十分です。
fs.file-max = 204708
もう1つの可能性は、スレッドが多すぎることです。スレッドプールを使用するアプリに対してテストハーネスを実行しているときに、このエラーメッセージが表示されました。使用しました
watch -n 5 -d "ps -eL <java_pid> | wc -l"
指定されたJavaプロセスID内で実行されているLinuxネイティブスレッドの継続的な数を監視します。これが約1,000に達した後(私たちにとっては--YMMV)、あなたが言及したエラーメッセージが表示され始めました。
ps -eL
すべてのプロセスps -L <pid>
を表示するために働き、に関するプロセスを示すために働きました<pid>
。ps -eL <pid>
に関係なく、すべてのプロセスを表示するだけ<pid>
です。