マルチコアシステムにおけるファイルI/OおよびUnixパイプの性能制限

マルチコアシステムにおけるファイルI/OおよびUnixパイプの性能制限

一部のファイルIOを実行するプログラムを含むいくつかのベンチマークを実行しています。新しいディレクトリを作成し、ここにいくつかのファイルを書き込み、読み取り、削除します。このプログラムを複数のコアで実行すると、一度に多くのインスタンスが発生し、予想される結果が得られます(速度がわずかに向上し、システムの限界に達すると速度が平準化し始めます。1コアから12コアに移動すると、プログラムは8.5倍速くなります。)

ファイルIOを使用しないこのプログラムの2番目の変形があります。代わりに、パイプを開き、そのパイプを介してデータを渡してコマンドを一緒に接続します。一度に最大3つのパイプが開きます。順番に実行しても、このプログラムは自然にはるかに速くなります(約10倍)。しかし、より多くのコアを追加し始めると、3つのコアで速度が本当に速くなり始め、2倍の速度向上で完全に平坦になるように見えました。 3コアから12コアへの性能低下はありません。実行速度はほとんど変わりません。改善や劣化はありません。

一部のリソースが不足しているため理解できません。私が知らないUnixパイプに関連する上限があると思います。オンラインで詳細を見つけようとしましたが、疑わしい内容は見つかりませんでした。パイプを通して一度に最大100文字を送信します。一度に開くことができるUnixパイプの数に制限はありますか?より多くのパイプを開くために、より多くのワーカーを追加することができますが、パフォーマンスが向上または低下しない方法が奇妙であることがわかりました。

ベストアンサー1

おすすめ記事