x86_64 RedHat 5.3 (カーネル 2.6.18) を実行しており、特に sysctl -a から net.core.rmem_max を見て、UDP バッファーを設定しようとしています。受信アプリケーションは時々パケットを見逃すことがありますが、それが何を意味するかに応じて、バッファはすでに十分に大きいと思います:
この設定の単位は何ですか? ビット、バイト、パケット、またはページ? ビットまたはバイトの場合、データグラム/ペイロード (100 バイトなど) またはネットワーク MTU サイズ (~1500 バイト) からですか? ページの場合、ページ サイズは何バイトですか?
これは、システムごと、物理デバイス (NIC) ごと、仮想デバイス (VLAN) ごと、プロセスごと、スレッドごと、ソケットごと、マルチキャスト グループごとの最大値ですか?
たとえば、データがメッセージあたり 100 バイトで、各ネットワーク パケットが 2 つのメッセージを保持し、ソケットあたり 50,000 メッセージをバッファできるようにしたい場合、4 つのスレッドのそれぞれでスレッドあたり 3 つのソケットを開きます。net.core.rmem_max の大きさはどのくらいですか? 同様に、アプリケーション内でソケット オプションを設定すると、単位はペイロード バイトなので、この場合、各ソケットで 5000000 になりますか?
最後に、一般的に、sysctl -a で表示されるパラメータの単位の詳細を見つけるにはどうすればよいでしょうか? 同様のユニットと、net.core.netdev_max_backlog や net.ipv4.igmp_max_memberships などの他のパラメーターに関する X ごとの質問があります。
ありがとうございました。