ablog

不器用で落着きのない技術者のメモ

Solaris で Oracle RAC を使う場合ののUDPバッファサイズについて

Solaris 10、Oracle Database と Oracle Grid Infrastructure は11.2.0 という前提。

  • Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2 (11.2) for Oracle Solaris B57234-05
    • 3.2.2 UDPパラメータ設定の確認

3.2.2 UDPパラメータ設定の確認

User Data Protocol(UDP)パラメータ設定によって、IPネットワーク経由でデータグラムを送受信するための、送受信バッファ領域の大きさが定義されます。これらの設定は、クラスタ・インターコネクト送信に影響を与えます。これらのパラメータで設定されたバッファが小さすぎる場合は、領域が不十分なために受信するUDPデータグラムが破棄され、送信側での再送信が必要になります。これによって、クラスタのパフォーマンスが低下する可能性があります。

Oracle SolarisにおけるUDPパラメータは、udp_recv_hiwatおよびudp_xmit_hiwatです。これらのパラメータのデフォルト値は57344バイトです。これらのパラメータは65536バイト以上に設定することをお薦めします。

udp_recv_hiwatおよびudp_xmit_hiwatの現在の設定を確認するには、次のコマンドを入力します。

# ndd /dev/udp udp_xmit_hiwat
# ndd /dev/udp udp_recv_hiwat

現在のメモリーでこれらのパラメータの値を65536バイトに設定するには、次のコマンドを入力します。

# ndd -set /dev/udp udp_xmit_hiwat 65536
# ndd -set /dev/udp udp_recv_hiwat 65536

システムの再起動時のUDP値を設定するには、システム起動スクリプトにnddコマンドを含める必要があります。たとえば、/etc/rc2.d/S99nddの次のスクリプトによってこれらのパラメータを設定します。

ndd -set /dev/udp udp_xmit_hiwat 65536 
ndd -set /dev/udp udp_recv_hiwat 65536
Oracle Grid InfrastructureおよびOracle RACの記憶域の構成
  • Solaris カーネルのチューンアップ・リファレンスマニュアル Part No: 816-1248-10
    • 第 4 章 TCP/IP チューニング可能パラメータ > UDP チューニング可能パラメータ

udp_xmit_hiwat
説明
デフォルトの最大 UDP ソケットデータグラムサイズをバイト数で指定します。詳細は、「udp_max_buf」を参照してください。

デフォルト
57,344 バイト

範囲
1,024 から 1,073,741,824 バイト

動的か
はい

どのような場合に変更するか
このサイズは、アプリケーションで setsockopt(3XNET) SO_SNDBUF を使用してソケットごとに変更できます。一般には、デフォルト値を変更する必要はありません。

コミットレベル
変更の可能性あり


udp_recv_hiwat
説明
デフォルトの最大 UDP ソケット受信バッファーサイズをバイト数で指定します。詳細は、「udp_max_buf」を参照してください。

デフォルト
57,344 バイト

範囲
128 から 1,073,741,824 バイト

動的か
はい

どのような場合に変更するか
このサイズは、アプリケーションで setsockopt(3XNET) SO_RCVBUF を使用してソケットごとに変更できます。一般には、デフォルト値を変更する必要はありません。

コミットレベル
変更の可能性あり

UDP チューニング可能パラメータ - Oracle Solaris チューニング可能パラメータリファレンスマニュアル

Oracle Real Application Clusters 利用時のUDP通信における送受信バッファサイズの目安としては通常以下の式から求められます。

送受信バッファサイズ = db_file_multiblock_read_count (32) × db_block_size (8KB) = 256KB
括弧内は本試験での設定値

上式により、UDP通信における送受信バッファサイズとして256KBを設定しましたが、チューニング1実施の結果としてOracle待機イベント「gc block lost」が発生していることから、このサイズでは不足していると判断し1MBまで増加しました。その結果が図4-11のグラフです。
(中略)
チューニング2により、スループット比が4.55から8.85に増加しました。この数字は4ノード構成時のスケーラビリティとしては十分な値といえます。

http://otndnld.oracle.co.jp/tech/grid/pdf/FJ-GC-P1.0.pdf

関連

  • KROWN:46396
  • NOTE:811280.1

*1:Linuxでの検証結果だが考え方は参考になるので