Linuxのネットワーク構成の設定
続行する前に、各SNの初期設定時にネットワーク・インタフェース・カードが予定どおりに構成されているかどうか確認することをお薦めします。これは、そのような構成の問題がロード時に発生した場合、問題をデバッグするのが困難になるためです。
各ホスト上の特定のサブネットにアクセスするために使用されているネットワーク・インタフェースを判断するには、次のコマンドを使用します。このコマンドは、特に複数のNICを持つマシンに役立ちます。
$ ip addr ls to 192.168/16
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
inet 192.168.1.19/24 brd 192.168.1.255 scope global eth0
次のコマンドを使用して、NICの構成に関する情報を取得してください。
$ ethtool -i eth2
driver: enic
version: 2.1.1.13
firmware-version: 2.0(2g)
bus-info: 0000:0b:00.0
NICハードウェアに関する情報を取得するには、次のコマンドを使用します。
$ lspci -v | grep "Ethernet controller"
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit
Ethernet Controller (rev 02)
ネットワーク速度に関する情報を取得するには、次のコマンドを使用します。このコマンドはsudoを必要とすることに注意してください。
$ sudo ethtool eth0 | grep Speed
Speed: 1000Mb/s
大規模なクラスタのパフォーマンスを改善するために、10GBのイーサネットまたは他の高速なネットワーク実装の使用を検討することもできます。
サーバー・ソケット・バックログ
デフォルトの一般的な最大サーバー・ソケット・バックログ(通常は128に設定)は、サーバー・スタイルのロードには小さすぎます。サーバー・アプリケーションの場合は少なくとも1K、大規模なストアの場合は10Kでも不適切ではありません。
この値を変更するには、sysctl.conf
でnet.core.somaxconn
プロパティを設定します。
HAネットワーク・トラフィックの分離
マシンに複数のネットワーク・インタフェースがある場合、一方のインタフェースでHAレプリケーション・トラフィックを分離し、クライアント要求トラフィックは別のインタフェースを使用するようにOracle NoSQL Databaseを構成できます。次の例のように、HAで使用されるインタフェースを指定するには、makebootconfig
コマンドの-hahost
パラメータを使用します。
java -Xmx64m -Xms64m \
-jar kvstore.jar makebootconfig -root /disk1/kvroot \
-host sn10.example.com -port 5000 -harange 5010,5020 \
-admindir /disk2/admin -admindirsize 2 GB
-storagedir /disk2/kv -hahost sn10-ha.example.com
この例では、すべてのクライアント要求がsn10.example.com
に関連付けられたインタフェースを使用し、HAトラフィックはsn10-ha.example.com
に関連付けられたインタフェースを使用します。
受信パケット・ステアリング
単一のキュー・ネットワーク・デバイスを持つマシンに複数のRNがある場合、受信パケット・ステアリング(RPS)では、複数のコア間のパケット処理(ソフト割込み処理)に関連付けられたCPU負荷を分散することでパフォーマンスを改善できます。複数キューのNICではこのようなサポートが直接用意されているため、RPSを有効にする必要はありません。
このチューニングに関する注意事項は、Oracle Big Data Applianceを使用するお客様に特に適しています。
次のコマンドを使用して、NICが複数キューかどうかを判断できます。
sudo ethtool -S eth0
複数キューのNICには次のようなエントリがあります。
rx_queue_0_packets: 271623830
rx_queue_0_bytes: 186279293607
rx_queue_0_drops: 0
rx_queue_0_csum_err: 0
rx_queue_0_alloc_failed: 0
rx_queue_1_packets: 273350226
rx_queue_1_bytes: 188068352235
rx_queue_1_drops: 0
rx_queue_1_csum_err: 0
rx_queue_1_alloc_failed: 0
rx_queue_2_packets: 411500226
rx_queue_2_bytes: 206830029846
rx_queue_2_drops: 0
rx_queue_2_csum_err: 0
rx_queue_2_alloc_failed: 0
...
Infinibandを使用する32コアBig Data Applianceの場合、次の構成を使用して、すべての32コア間で受信パケット処理を分散します。
echo ffffffff > /sys/class/net/eth0/queues/rx-0/rps_cpus
ffffffff
は、すべての32コアを選択するビット・マスクです。
RPSの詳細は、次を参照してください。
MTUサイズ
1000MB/秒以上の速度で実行されるネットワークに接続されたマシンを使用する場合は、RNをホストするマシンでジャンボ・フレームを有効にすることをお薦めします。HAレプリケーションは、(HAパラメータ: feederBatchBuffKbを介して)フィーダがジャンボ・フレームの使用に適したデフォルトの8Kのバッチ・バッファ・サイズを使用するため、ジャンボ・フレームの使用によるメリットがあります。
MTUを9000に設定すると、特に、リクエスト・ペイロードまたはレスポンス・ペイロードがデフォルトの1500のMTUサイズを超えることが多い場合に、高速ネットワークを備えたKVクライアント・マシンのネットワーク・パフォーマンスの向上にも役立ちます。
ジャンボ・フレームを有効にするには、各マシンでMTUを9000に設定します。また、RNをホストしているマシン間のネットワーク・パス全体でこのMTUがサポートされていることを確認します。
# ip link show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:00:17:01:2c:b6 brd ff:ff:ff:ff:ff:ff
# ip link set ens3 mtu 9000