インストールの前提条件の作業を手動で行う方法 を見ると、カーネルパラメータ net.core.[rw]mem_{default,max} の推奨値が以下の通り記載されている。
カーネルパラメータ | Byte | 人に優しく |
---|---|---|
net.core.rmem_default | 262144 | 256KB |
net.core.rmem_max | 4194304 | 4MB |
net.core.wmem_default | 262144 | 256KB |
net.core.wmem_max | 1048576 | 1MB |
上記のカーネルパラメータがソケットを使用するアプリケーションにどのような影響を及ぼすか仮説を書いてみる。
仮説
- net.core.[rw]mem_{default,max} は TCP と UDP の送受信バッファのデフォルトサイズと最大サイズを決める。
- net.ipv4.tcp_[rw]mem が設定されている場合、TCP の送受信バッファのデフォルトサイズと最大サイズはオーバーライドされる。
- ソケットバッファを大きくした時のデメリットはメモリ使用量の増加と転送のリカバリが遅くなる点。
- net.core.[rw]mem_default を変更するとデフォルトの送受信ソケットバッファサイズを使用するプロセスの送受信ソケットバッファサイズが変更されるので影響範囲に注意する必要がある。
- net.core.rmem_default
- 受信ソケットバッファのデフォルトサイズ。
- アプリケーションが socket() を使用する際に SO_RCVBUF オプションによる受信ソケットバッファのサイズを変更しない場合、受信ソケットバッファのサイズは net.core.rmem_default になる。
- この値を変更すると、SO_RCVBUF オプションで受信ソケットバッファのサイズを指定してない全てのアプリケーションの受信ソケットサイズが変更される。
- net.core.rmem_max
- 受信ソケットバッファの最大サイズ。
- アプリケーションが socket() を使用する際に SO_RCVBUF オプションによる受信ソケットバッファのサイズを変更している場合、受信ソケットバッファのサイズは net.core.rmem_max より大きな値には設定できない。
- net.core.wmem_default
- 送信ソケットバッファのデフォルトサイズ。
- アプリケーションが socket() を使用する際に SO_SNDBUF オプションによる送信ソケットバッファのサイズを変更しない場合、受信ソケットバッファのサイズは net.core.wmem_default になる。
- この値を変更すると、SO_SNDBUF オプションで送信ソケットバッファのサイズを指定してない全てのアプリケーションの受信ソケットサイズが変更される。
- net.core.wmem_max
- 送信ソケットバッファの最大サイズ。
- アプリケーションが socket() を使用する際に SO_SNDBUF オプションによる送信ソケットバッファのサイズを変更している場合、送信ソケットバッファのサイズは net.core.wmem_max より大きな値には設定できない。
検証したいこと
- Oracle RAC で socket() を使用している各プロセスが SO_SNDBUF や SO_RCVBUF で送受信ソケットバッファのサイズを変更しているか否か strace などを使って確認する。
- SO_SNDBUF や SO_RCVBUF で送受信ソケットバッファを変更しないプログラムを作成し、net.core.[rw]mem_default の値を変更して、getsockopt を使ってソケットバッファのサイズが変わることを確認する。
- SO_SNDBUF や SO_RCVBUF で送受信ソケットバッファを変更するプログラムを作成し、ソケットバッファの値を net.core.[rw]mem_max より大きく設定できないことを確認する。
参考
- インストールの前提条件の作業を手動で行う方法
- Linux におけるソケット機能の向上
- socket(7): socket interface - Linux man page
- Data Integration Tools and Software Solutions | Informatica US
- Note - ソケットバッファのチューニング
追記(2011/06/14):
TCP/IP Illustrated Volume 2: The Implementation
- 作者: Gary R. Stevens, W. Richard Wright
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 1995/01/31
- メディア: ハードカバー
- クリック: 10回
- この商品を含むブログ (4件) を見る
P.493
After all the data has been passed to the protocol,the socket buffer is unlocked, any remaining mbufs are discarded, and sosend returns.
この本ちゃんと読んだらわかりそうだけど、なかなか歯ごたえありそうw