この章では、Coherenceデータグラム・テスト・ユーティリティを使用して、複数のコンピュータ間のネットワーク・パフォーマンスをチェックする手順について説明します。本番デプロイメントの前に、データグラム・テストの実行が成功する必要があります。
この章には次の項が含まれます:
Coherenceデータグラム・テスト・ユーティリティは、複数のコンピュータ間のネットワーク・パフォーマンスをテストしてチューニングするために使用します。データグラム・テストは、3種類のモード(パケット・パブリッシャまたはパケット・リスナー、あるいはその両方)のいずれかで動作します。このユーティリティを実行すると、パブリッシャがUDPパケットをリスナーに送信します。リスナーは、スループットや成功率などの統計を測定します。このテストの結果に基づいて環境をチューニングして、最大のパフォーマンスを実現します。詳細は、第5章「パフォーマンス・チューニング」を参照してください。
データグラム・テスト・ユーティリティを実行するには、コマンドラインからcom.tangosol.net.DatagramTest
クラスを使用するか、COHERENCE_HOME
/bin
ディレクトリにあるdatagram-test
スクリプトを実行します。スクリプトは、WindowsベースのプラットフォームとUNIXベースのプラットフォームの両方に用意されています。
次の例は、DatagramTest
クラスの使用方法を示しています。
java -server com.tangosol.net.DatagramTest <command value> <command value> ...
次の例は、スクリプトの使用方法を示しています。
datagram-test <command value> <command value> ...
表3-1では、データグラム・テスト・ユーティリティで利用できるコマンドライン・オプションについて説明しています。
表3-1 データグラム・テスト・ユーティリティのコマンドライン・オプション
コマンド | 必須/ オプション |
適用範囲 | 説明 | デフォルト |
---|---|---|---|---|
-local |
オプション |
両方 |
バインド先のローカル・アドレス、 |
localhost:9999 |
-packetSize |
オプション |
両方 |
作業対象パケットのサイズ、バイト単位で指定 |
1468 |
-payload |
オプション |
両方 |
各パケットに含めるデータ量パケット・サイズを一致させるには、 |
0 |
-processBytes |
オプション |
両方 |
処理対象の各パケットのバイト数(4の倍数) |
4 |
-rxBufferSize |
オプション |
リスナー |
受信バッファのサイズ、パケット単位で指定 |
1428 |
-rxTimeoutMs |
オプション |
リスナー |
接続が閉じられるまでの非アクティブ時間 |
1000 |
-txBufferSize |
オプション |
パブリッシャ |
送信バッファのサイズ、パケット単位で指定 |
16 |
-txRate |
オプション |
パブリッシャ |
データ送信の速度、メガバイト単位で指定 |
無制限 |
-txIterations |
オプション |
パブリッシャ |
終了前に公開するパケット数を指定 |
無制限 |
-txDurationMs |
オプション |
パブリッシャ |
終了前に公開する期間を指定 |
無制限 |
-reportInterval |
オプション |
両方 |
レポートを出力する間隔、パケット単位で指定 |
100000 |
-tickInterval |
オプション |
両方 |
ティック・マークを出力する間隔 |
1000 |
-log |
オプション |
リスナー |
測定したパフォーマンスの表形式レポートを保存するファイルの名前 |
なし |
-logInterval |
オプション |
リスナー |
ログに測定結果を出力する間隔 |
100000 |
-polite |
オプション |
パブリッシャ |
パブリッシャが公開を実行する前に、リスナーの接続を待つかどうかを示すスイッチ |
オフ |
-provider |
オプション |
両方 |
使用するソケット・プロバイダ( |
system |
arguments |
オプション |
パブリッシャ |
空白で区切られた公開先アドレスのリスト、 |
なし |
この項の例では、サーバーA (IPアドレス195.0.0.1
)と、サーバーB (IPアドレス195.0.0.2
)という2つのサーバー間のネットワーク・パフォーマンスのテスト方法を示します。一方のサーバーはパケット・パブリッシャとして動作し、もう一方はパケット・リスナーとして動作します。パブリッシャは可能なかぎり高速にパケットを送信し、リスナーはパフォーマンス統計を測定して報告します。
まず、サーバーA上のリスナーを起動します。例:
datagram-test.sh
[ENTER]を押すと、ユーティリティは、パケット受信の準備が完了していることを示します。例3-1にサンプル出力を示します。
例3-1 リスナーの起動からの出力
starting listener: at /195.0.0.1:9999 packet size: 1468 bytes buffer size: 1428 packets report on: 100000 packets, 139 MBs process: 4 bytes/packet log: null log on: 139 MBs
デフォルトでは、このテストにより、1428個のパケット(約2MB)を十分に保持できるネットワーク受信バッファの割当てが試行されます。このバッファの割当てができない場合、ユーティリティはエラーを報告して終了します。-rxBufferSize
パラメータを使用して要求するバッファのサイズを小さくするか、オペレーティング・システムのネットワーク・バッファの設定を大きくしてください。オペレーティング・システムのバッファを大きくすると、最適なパフォーマンスが得られます。Coherence向けのオペレーティング・システムのチューニングの詳細は、第6章「本番チェックリスト」を参照してください。
サーバーBでパブリッシャを起動して、サーバーAに向けてパブリッシュします。例:
datagram-test.sh servera
[ENTER]を押すと、Server Bのテスト・インスタンスによってリスナーとパブリッシャの両方が起動されます。ただし、この構成ではリスナーは使用しません。例3-2は、Server Bのコマンド・ウィンドウに表示されるサンプル出力を示しています。
例3-2 データグラム・テスト: サーバーでのリスナーとパブリッシャの起動
starting listener: at /195.0.0.2:9999 packet size: 1468 bytes buffer size: 1428 packets report on: 100000 packets, 139 MBs process: 4 bytes/packet log: null log on: 139 MBs starting publisher: at /195.0.0.2:9999 sending to servera/195.0.0.1:9999 packet size: 1468 bytes buffer size: 16 packets report on: 100000 packets, 139 MBs process: 4 bytes/packet peers: 1 rate: no limit no packet burst limit oooooooooOoooooooooOoooooooooOoooooooooOoooooooooOoooooooooOoooooooooOoooooooooO
データがネットワーク上に出力(Output)されると、一連のo
とO
のマークが表示されます。o
はそれぞれ1000パケットを表し、10,000パケットごとにO
のインジケータが表示されます。
サーバーAでは、これに対応してネットワーク入力(Input)を表すi
とI
のマークのセットが表示されます。これは、2つのテスト・インスタンスが通信していることを示します。
このテストは、双方向モードで実行することもできます。このモードでは、両方のサーバーがパブリッシャとリスナーとして動作します。テスト・インスタンスを再起動して、サーバーAのインスタンスにサーバーBのアドレスを指定します。たとえば、サーバーAで次のコマンドを実行します。
datagram-test.sh -polite serverb
-polite
パラメータを使用して、このテスト・インスタンスに対し、データの受信を開始するまでパブリッシュを開始しないように指示します。前述の同じコマンドをサーバーBで実行します。
datagram-test.sh servera
このテストは、3台以上のコンピュータで実行できます。たとえば、1つのリスナーをターゲットにするように、2つのパブリッシャを設定できます。このスタイルのテストは単純な1対1のテストと比較してはるかに現実的で、他の方法では確認できないネットワークのボトルネックを特定できる場合があります。
次の例では、4台のコンピュータ間でダイアグラム・テストを実行します。
サーバーA上:
datagramtest.sh -txRate 100 -polite serverb serverc serverd
サーバーB上:
datagramtest.sh -txRate 100 -polite servera serverc serverd
Server C上:
datagramtest.sh -txRate 100 -polite servera serverb serverd
Server D上:
datagramtest.sh -txRate 100 servera serverb serverc
このテスト・シーケンスでは、すべてのノードは他のすべてのノードに、1秒当たりで合計100MBを送信します(1ノード当たり33MB/秒に相当)。完全にスイッチが設定された1GbEネットワークでは、パケットを失うことなくこれを達成できる必要があります。
テストの実行を簡略化するために、すべてのノードは同一のターゲット・リストを使用して起動できます。自分自身への送信も行われますが、このループバック・データは容易に除外できます。最後のノードが起動されるまで他のすべてのノードが遅延するため、最後のノードを除くすべてのノードは、-polite
スイッチを使用して起動することが重要です。
テストのそれぞれの側(パブリッシャとリスナー)から定期的にパフォーマンス統計がレポートされます。パブリッシャでは、ネットワーク上にデータを公開する速度のみがレポートされます。例:
Tx summary 1 peers: life: 97 MB/sec, 69642 packets/sec now: 98 MB/sec, 69735 packets/sec
このレポートには、現在の送信速度(前回のレポート以降)と存続期間の送信速度の両方が記載されます。
表3-2は、リスナーでレポートできる統計について説明しています。
表3-2 リスナーの統計
要素 | 説明 |
---|---|
Elapsed |
レポート対象の時間間隔 |
Packet size |
受信したパケットのサイズ |
Throughput |
パケットの受信速度 |
Received |
受信したパケット数 |
Missing |
失われていることが検出されたパケットの数 |
Success rate |
合計送信パケット数に対する受信パケット数の割合 |
Out of order |
着信順序が乱れているパケットの数 |
Average offset |
パケットの着信順序の乱れの程度を示すインジケータ |
パブリッシャの場合と同様、現在と存続期間の両方の統計がレポートされます。次の例は、一般的なリスナーのレポートを示しています。
Lifetime: Rx from publisher: /195.0.0.2:9999 elapsed: 8770ms packet size: 1468 throughput: 96 MB/sec 68415 packets/sec received: 600000 of 611400 missing: 11400 success rate: 0.9813543 out of order: 2 avg offset: 1 Now: Rx from publisher: /195.0.0.2:9999 elapsed: 1431ms packet size: 1468 throughput: 98 MB/sec 69881 packets/sec received: 100000 of 100000 missing: 0 success rate: 1.0 out of order: 0 avg offset: 0
特に重要な項目は、throughputとsuccess rateです。目標は、success rateを可能なかぎり1.0近くに維持しながら、最高のthroughputを見つけることです。100Mbネットワークの設定では、約10MB/秒の速度を達成する必要があります。1Gbネットワークの設定では、約100MB/秒の速度を達成する必要があります。これらの速度を実現するには、なんらかの速度調整が必要になります。ネットワークがこれらの速度を達成できない場合、または速度がかなり低い場合、ネットワーク構成の問題がある可能性が非常に高いです。ネットワーク・パフォーマンスのチューニングの詳細は、「ネットワーク・チューニング」を参照してください。
速度調整
-txRate M
パラメータを組み込むことによって、テストのパブリッシャ側で、MB/秒単位のデータ速度を指定して速度を調整できます。M
は、テストでネットワークに設定される最大MB/秒を表します。