低遅延ネットワークについて基本的なグーグル検索を行った結果、プログラマーとシステム設計者が低遅延ネットワークに着手する際に考慮すべき事項の次のリストを思いつきました。
ハードウェア、システム、およびプロトコルの設計は、一緒に検討する必要があります
TCP の代わりに UDP を使用してプロトコルを開発し、単純な ack-nak を実装し、アプリケーション レベルでロジックを再送信します。
ネットワークからデータを消費してパケット化するプロセスまたはスレッドのコンテキスト スイッチの数を (できればゼロに) 減らします。
OS に最適なセレクターを使用する (select、kqueue、epoll など)
大量のオンボード バッファ (fifo) を備えた高品質の NIC とスイッチを使用する
特にダウンストリームとアップストリームのデータ フローに複数の NIC を使用する
他のデバイスまたはソフトウェアによって生成される IRQ の数を減らします (つまり、不要な場合は削除します)。
ミューテックスと条件の使用を減らします。代わりに、可能であればロックフリー プログラミング手法を使用してください。アーキテクチャの CAS 機能を利用します。(ロックフリーコンテナ)
マルチスレッド設計よりもシングルスレッド設計を検討してください - コンテキストスイッチは非常に高価です。
アーキテクチャのキャッシュ システム (L1/L2、RAM など) を理解し、適切に利用する
ガベージ コレクターに委譲するよりも、メモリ管理を完全に制御することを優先する
高品質のケーブルを使用し、ケーブルをできるだけ短くし、ねじれやカールの数を減らします。
私の質問:ロー レイテンシー ネットワーキングに着手する際に、仲間の SO 関係者が重要だと信じていることは他にあるのだろうかと考えていました。
上記の点について自由に批判してください