4.13 WAN接続を使用したデータ転送の最適化

WAN接続用のデータ転送のパフォーマンスを最適化し、チューニングを行うことができます。これを実行するには、システムが、PlateSpin Serverホストにある環境設定ツールで行われている設定から読み取る環境設定パラメータを変更します。一般的な手順については、PlateSpin設定を参照してください。

4.13.1 パラメータの微調整

ファイル転送環境設定パラメータの設定を使用すると、WANでのデータ転送を最適化できます。これらの設定はグローバルなので、ファイルベースのレプリケーションおよびVSSレプリケーションのすべてに影響します。

メモ:これらの値が変更されると、Gigabit Ethernetなど高速ネットワーク上でのレプリケーション時間が遅くなるなどマイナスの影響を受ける可能性があります。これらのパラメータを変更する前に、まずPlateSpin Supportに相談することを検討してください。

ファイル転送速度を制御する環境設定パラメータは、PlateSpinの環境設定ページ(https://Your_PlateSpin_Server/platespinconfiguration/)にあります。表 4-4に、これらの環境設定パラメータのデフォルト値と最大値を示します。高レイテンシのWAN環境での動作を最適化するために、試行錯誤を繰り返してこれらの値を変更できます。

表 4-4 ファイル転送環境設定パラメータのデフォルト値と最適値

パラメータ

デフォルト値

Maximum Value

FileTransferCompressionThreadsCount

パケットレベルのデータ圧縮に使用されるスレッド数を制御します。圧縮が無効の場合、この設定は無視されます。圧縮はCPUに依存するため、この設定はパフォーマンスに影響を与える可能性があります。

2

該当なし

FileTransferMinCompressionLimit

パケットレベルの圧縮のしきい値をバイトで指定します。

0 (無効)

最大65536 (64KB)

FileTransferSendReceiveBufferSize

レプリケーションネットワークのTCP接続の送受信バッファの最大サイズ(バイト単位)を定義します。バッファサイズはTCP受信ウィンドウ(RWIN)のサイズに影響します。RWINは、TCP確認応答なしに送信できるバイト数を設定するものです。この設定はファイルベース転送とブロックベース転送の両方に関係があります。ネットワークの帯域幅とレイテンシに応じてバッファサイズを微調整することで、スループットが向上し、CPU処理が軽減されます。

値を0 (オフ)に設定すると、デフォルトのTCPウィンドウサイズ(8KB)が使用されます。カスタムのサイズにするには、サイズをバイトで指定します。

次の式を使用して、適切な値を決定します。

((リンク速度(Mbps) ÷ 8) x 遅延(秒))) x 1000 x 1024

たとえば、10ミリ秒の遅延のある100Mbpsのリンクでは、適切なバッファサイズは次のようになります。

(100/8)*0.01 * 1024 * 1000 = 128000バイト

微調整については、FileTransferSendReceiveBufferSizeの微調整を参照してください。

0 (8192バイト)

最大5242880 (5MB)

4.13.2 FileTransferSendReceiveBufferSizeの微調整

FileTransferSendReceiveBufferSizeパラメータは、レプリケーションネットワークのTCP接続の送受信バッファの最大サイズ(バイト単位)を定義します。バッファサイズはTCP受信ウィンドウ(RWIN)のサイズに影響します。RWINは、TCP確認応答なしに送信できるバイト数を設定するものです。この設定はファイルベース転送とブロックベース転送の両方に関係があります。ネットワークの帯域幅とレイテンシに応じてバッファサイズを微調整することで、スループットが向上し、CPU処理が軽減されます。

FileTransferSendReceiveBufferSizeパラメータを微調整することで、ご使用のレプリケーション環境におけるソースサーバからターゲットサーバへのブロックまたはファイルの転送を最適化できます。PlateSpinの環境設定ページ(https://Your_PlateSpin_Server/platespinconfiguration/)でパラメータを設定します。

最適なバッファサイズを計算するには:

  1. ソースサーバとターゲットサーバとの間のレイテンシ(遅延)を判断します。

    ここでの目的は、パケットサイズをできる限りMTUに近付けた場合に、レイテンシがどの程度かを確認することです。

    1. 管理者ユーザとしてソースサーバにログインします。

    2. コマンドプロンプトで次のコマンドを入力します。

      # ping <target-server-ip-address> -f -l <MTU_minus_28> -n 10

      通常、pingの-lオプションは、target-server-ip-addressに対して指定したペイロードのヘッダに28バイトを追加します。したがって、MTUから28を引いたバイト数のサイズの値を最初に試してみることをお勧めします。

    3. 次のメッセージが表示されるまで、ペイロードを変更してステップ 1.bのコマンドを再入力する操作を繰り返します。

      パケットの断片化が必要です。

    4. レイテンシを秒単位に変換してメモします。

      たとえば、レイテンシが35ms (ミリ秒)の場合、0.035をレイテンシとしてメモします。 

  2. 初期バッファサイズのバイト値を計算します。

    バッファサイズ = (帯域幅(Mbps) ÷ 8) x レイテンシ(秒) x 1000 x 1024

    ネットワーク帯域幅にはバイナリ値を使用します。つまり、10Gbpsの場合は10240Mbps、1Gbpsの場合は1024Mbpsを使用します。

    たとえば、10Gbpsネットワークでレイテンシが35msの場合、次のような計算になります。

    バッファサイズ = (10240 ÷ 8) x 0.035 x 1000 x 1024 = 45875200バイト
  3. (オプション)最適なバッファサイズを計算します。端数は最大セグメントサイズ(MSS)の倍数になるように切り上げます。

    1. MSSを判断します。

      MSS = MTUサイズ(バイト) - (IPヘッダサイズ + TCPヘッダサイズ) 

      IPヘッダサイズは20バイトです。TCPヘッダサイズは、20バイトにタイムスタンプなどのオプションのバイト数を足した値になります。

      たとえば、MTUサイズが1470の場合、MSSは通常1430になります。

      MSS = 1470バイト - (20バイト + 20バイト) = 1430バイト
    2. 最適なバッファサイズを計算します。

      最適なバッファサイズ = (roundup( バッファサイズ ÷ MSS )) x MSS

      上の例で計算すると、次のようになります。

      最適なバッファサイズ = (roundup(45875200 ÷ 1430)) x 1430 = 32081 x 1430 = 45875830

      切り捨てではなく切り上げで計算してください。切り捨てで計算すると、バッファサイズ45875200より小さいMSSの倍数になります。

      最適ではないバッファサイズ = 32080 x 1430 = 45874400