4

非同期アプローチで boost::asio を使用して TCP ネットワーク アプリケーションを開発しました。アプリケーションは、次の方法で約 1 GB のデータを送信します。

  • 5 バイトのコマンドを送信する (async_write() を使用)
  • 1024 バイトのデータを送信する (別の async_write() を使用)
  • 1GBのデータがすべて送信されるまで繰り返します

同期アプローチを使用すると、パフォーマンスは期待どおり (1Gb イーサネットを使用して 1GB のデータを送信するのに約 9 秒) ですが、非同期呼び出しを使用するとパフォーマンスが低下し、同じ量のデータを送信するのに 20 秒かかります。

Nagle のアルゴリズムを無効にしようとしましたが、問題は解決しません。

少量のデータで複数の async_write() 呼び出しを使用すると、パフォーマンスに悪影響を及ぼす可能性があるかどうか知っていますか?

ありがとう!

4

0 に答える 0