nohupモードで遅いリポジトリに書き込むとプロセスがブロックされますか?

nohupモードで遅いリポジトリに書き込むとプロセスがブロックされますか?

nohupに書き込むプロセスがあり、このプロセスが書き込むストレージが遅い場合、nohupで実行されているプロセスはブロックされますか?たとえば、

プロセスAはnohupで実行されており、コンソールに10行を書き込む必要があります。

nohup.outにこの10行を書き込むには、ディスクストアに2分かかります。 (6行を書き、1分間ディスクを待って停止します。)

残りの行が書き込まれるまで、プロセスAはブロックされますか?

ベストアンサー1

nohupモードは、プロセスがI / Oバインドされているかどうかには関係ありません。はい。保存が遅いとプロセスが遅くなることがあります。

プロセスの出力が急増していますが(たとえば、1時間あたり10行)、スループットが「遅い」リポジトリより低い場合は、パイプまたはFIFOに書き込んでから、他の人に遅いリポジトリにコピーすることでこれを改善できます。 )パフォーマンス。プロセス)、出力バーストがパイプのバッファを超えない限り。

mkfifo /tmp/fifo
nohup prog >/tmp/fifo &
cat </tmp/fifo >slow_log_file &

または

nohup prog | buffer -s 16k >slow_log_file &

どこバッファーapt-get install buffer作成者のブロックを避けるために、大きな内部キューを維持する特別なプログラム(Debianで利用可能)です。

あるいは、ソースコードを制御する場合は、バッファリングを直接実装し、別々のロガープロセスを使用して遅いリポジトリに書き込むこともできます。私はdjbdns(安定性として知られている)がロガープロセスを使用していることを知っています。

おすすめ記事