8.4.2. ソケットキュー


NIC ハードウェアキューのように、ソケットキューは softirq コンテキストからのネットワークスタックで満たされます。するとアプリケーションは readrecvfrom などのコールで対応するソケットのキューを排出します。
このキューのステータスを監視するには、netstat ユーティリティを使います。Recv-Q コラムはキューのサイズを表示します。一般的に、ソケットキューのオーバーランは NIC ハードウェアバッファーのオーバーランと同じ方法で管理されます (「NIC ハードウェアバッファー」 を参照)。
入力トラフィック
最初のオプションは、キューを満たす割合を設定することで入力トラフィックを遅らせます。これを行うには、フレームにフィルターをかけるか、前もってドロップさせます。NIC の device weight を下げることでも入力トラフィックを遅らせることができます [6]
キューの深さ
キューの深さを高めることでも、ソケットキューのオーバーランを防ぐことができます。これを行うには、rmem_default カーネルパラメーターか SO_RCVBUF ソケットオプションのどちらかの値を増やします。これら両方に関する詳細は 「ネットワーク設定の最適化」 を参照してください。
アプリケーション呼び出しの頻度
可能な場合はいつでも、アプリケーションを最適化して呼び出し頻度を高めます。これは、ネットワークアプリケーションを修正または再構成して、POSIX 呼び出し (recvread など) の実行頻度を高くすることで行います。こうすることで、アプリケーションによるキューの排出が速くなります。
管理者の多くにとっては、キューの深さを高めることは望ましい解決法です。これは最も簡単な解決法ですが、常に長期的に機能するとは限りません。ネットワーキング技術の速度が高まるにつれて、ソケットキューが満たされる時間は短くなり続けます。長期的には、これに対応してキューの深さを再度調整することを意味します。
最良の解決法は、アプリケーションを強化または設定してカーネルからのデータの排出を速めることです。たとえアプリケーションスペースにデータを加えることになったとしてもです。こうすることで、データを必要に応じてスワップしたりページバックしたりすることができるようになるので、データの保存がより柔軟になります。


[6] Device weight は /proc/sys/net/core/dev_weight で制御されます。device weight についての詳細情報とその調節による影響は、「NIC ハードウェアバッファー」 を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.