複数のプロセスでファイルをシリアライズしているときに、パフォーマンスの問題に直面しています。
問題は次のとおりです。計算を実行するために(分散コンピューティング環境で)複数のプロセスを作成し、各プロセスの出力をファイルに書き留めています。メインプロセスはこれらのファイルを使用し、メモリにマージしてさらに計算を行います。
サーバー数を制限しています。何が起こるかというと、同じサーバーに 2 ~ 3 つのプロセスを作成できます。これが発生した場合 (同じサーバーで 2 ~ 3 つのプロセスが作成された場合)、これらのプロセスが計算されたファイル (ファイル サイズは約 80 ~ 90 MB) をディスクに同時に書き込み\シリアル化しようとするシナリオが発生します。これが発生すると、ファイルをシリアル化するのに約 3m かかります。通常、その 80 ~ 90 MB には 30 秒しかかかりません。
このシナリオをパフォーマンス モニター (およびログのタイミング) で監視したところ、2 ~ 3 のプロセスが同時に書き込みを試みているため、通常のタイミングよりも約 6 倍長くかかることがわかりました。
(3分のシナリオの)タイミングを改善するための提案は大歓迎です。
.Net フレームワークを使用し、コードは c# で記述されています。