このプログラムは複数のプロセッサで並列に実行され、RH7.3 または SUSE 11.3 で NFS 経由で中央ホストにログを記録します。プログラムがクラッシュまたは中断すると、ログファイルの終わりが失われ、クラッシュの場所と原因に関する情報が不足します。
シェル同期は効果がありません。インストールモードを使用するには強力な理由がありますasync
。同期モードでは、初期データをロードして結果をアンロードするのにかかる時間が数分から数時間に10倍増加します。時にはflush()
プログラムに接続するのが役に立つかもしれませんが、場所が不確実な場合は実行するのは難しいです。
もしそうなら、プロセスが終了したときにNFSクライアントが無条件にバッファをフラッシュするように強制できますか?
答え1
出力が実際のNFSクライアントのバッファにある場合は、サーバーに到達する必要があります。一般的なストリームバッファのデータが失われる可能性があります。バッファ属性の変更を試してくださいsetvbuf()
。
何かをデバッグできるように、競合が発生したアプリケーションに対してコアダンプを有効にすることもできます。Linux C++ プログラムでコアダンプを有効にする方法そしてprctl(PR_SET_DUMPABLE, ...)