ネットワーク クライアントとサーバー アプリケーションがあります。データフローは、クライアントがサーバーにメッセージを送信し、サーバーが確認応答で応答するようなものです。確認応答を受信した場合にのみ、クライアントは次のメッセージを送信します。
C++ で記述されたクライアント アプリケーションには、ネットワーク スレッド (ソケット経由でメッセージを送信する役割)、メイン スレッド (要求メッセージを作成する役割)、およびタイマー スレッド (毎秒起動する) という 3 つのスレッドがあります。
サーバー アプリケーションには、メイン スレッドとネットワーク スレッドの 2 つのスレッドがあります。
RHEL 6.3、2.6.32-279 カーネルを実行しています。
構成 1
- tuned-adm プロファイルのレイテンシー-パフォーマンス
- 同じ CPU コア ID 上のすべてのクライアントのスレッド
- すべてのサーバーのスレッドは同じ CPU コア ID にありますが、クライアントのスレッドとはコア ID が異なります
- 同じマシンで実行されているクライアントとサーバー
スループット: 1 秒あたり 4500 メッセージ
構成 2
- tuned-adm プロファイルのスループット-パフォーマンス
- 同じ CPU コア ID 上のすべてのクライアントのスレッド
- すべてのサーバーのスレッドは同じ CPU コア ID にありますが、クライアントのスレッドとはコア ID が異なります
- 同じマシンで実行されているクライアントとサーバー
スループット: 1 秒あたり 9 ~ 15 メッセージ
構成 3
- tuned-adm プロファイルのスループット-パフォーマンス
- 異なる CPU コア ID 上のすべてのクライアントのスレッド
- 異なる CPU コア ID 上のすべてのサーバーのスレッド、およびクライアントのスレッドとは異なるコア ID
- 同じマシンで実行されているクライアントとサーバー
スループット: 1 秒あたり 1100 メッセージ
マシンの負荷はごくわずかです。プロファイルがレイテンシーパフォーマンスからスループットパフォーマンスに切り替えられたときに、1 秒あたり 4k から 9 メッセージに低下したことを誰か説明できますか?