64ビットのCentOS6を使用して、あるアプリケーションから別のアプリケーションに非常に高速なデータをパイプしようとしています。次のベンチマークを使用dd
して、プログラムのアルゴリズムではなく、パイプが私を妨げていることを発見しました。私の目標は、約1.5 GB/sを達成することです。
まず、パイプなし:
dd if=/dev/zero of=/dev/null bs=8M count=1000
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied, 0.41925 s, 20.0 GB/s
次に、2つのddプロセス間のパイプ:
dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied, 9.39205 s, 893 MB/s
カーネルや、パイプを介してデータを実行するパフォーマンスを向上させるその他の調整を行うことができますか?名前付きパイプも試してみましたが、同様の結果が得られました。