Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

クラウド間のスループットを測る

By Joshua FoxMar 1, 20227 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

cloud metrics

リージョン間のスループットとレイテンシを測る新ツール

クラウドはまるで次元を超えた空間のようで、どれだけのデータでも一瞬で流れていくように感じられます。しかし、時空の根本的な制約とTCPプロトコルの仕組みがある以上、物理的な距離という単純な要素が大きな差を生みます。クラウド間で大量のデータを移動させるのに苦労しているなら、送信元にできるだけ近い場所に送信先を配置するしかありません。

本記事では、データフローを測るうえで性質が大きく異なるものの相互に関連する2つの指標、スループットとレイテンシを取り上げ、それらをリージョン間で計測する新しいツールを紹介します。

レイテンシはスループットを左右する

レイテンシ(往復時間)とは、リクエストを送信してからレスポンスが返ってくるまでの時間をミリ秒単位で表したものです。一方スループットは、1秒あたりに伝送されるビット数を指します。

レイテンシが低くなくても高いスループットは得られますし、逆もまた然りです。ミシシッピ川のように、毎秒大量のデータが流れつつもA地点からB地点まで時間がかかる場合もあれば、急流のように毎秒わずか数バイトしか流れないにもかかわらず、稲妻のような速さで目的地に届く場合もあります。

とはいえ実際には、最も一般的なプロトコルであるTCPにおいて、レイテンシはスループットに直接影響します。TCPはコネクション指向のプロトコルで、各パケットに対して確認応答(ACK)を必要とし、必要に応じて再送を行います。TCP送信バッファには、送信済みでまだリモートホストから確認応答が返っていないデータがすべて保持され、これにより未確認パケットの再送が可能になります。しかしバッファのサイズには上限があるため、ウィンドウ内に未確認のメッセージが一定数たまると伝送は一時停止します。たとえば往復時間80ms、TCPウィンドウが一般的な64KByteの場合、最大スループットは66Mbit/秒程度にとどまります( こちらの計算ツールを参照)。クラウドで宣伝されている毎秒ギガバイト級の速度には遠く及びません。

その「毎秒ギガバイト級」が示しているのは帯域幅、つまり契約したチャネルで得られる可能性のある1秒あたりの最大ビット数です。TCPウィンドウのようなボトルネックがあると、スループットは帯域幅をはるかに下回ることがあります。

高レイテンシ環境でスループットを最大化するには

高レイテンシのTCPチャネルで大量のデータを流したい場合は、何らかの工夫が必要になります。

  • 帯域幅の上限まで複数のストリームを同時に送る。ただし、APIの想定する利用方法によって制限されることが多く、たとえば単一のレスポンスで大量のデータを返す前提になっていたり、呼び出しにレートリミットが課されている場合があります。
  • UDPのようなコネクションレス型プロトコルを使い、再送処理を自前で実装する。これはスタック全体を制御できる場合にのみ可能です。特に、現在APIで広く使われているHTTP(S)のほとんどのバージョンはTCP上で動作します(なお、最近のHTTP 3/QUICのようなUDP上のプロトコルでも再送機能を提供するものがあり、伝送バッファに関する基本的な問題は同様に存在します)。
  • OSレベルでウィンドウサイズなどのTCPパラメータを変更する。ただしクラウドでは、こうした制御を許さないサーバーレスサービスを使うことが多いのが実情です。
  • 結局、残された変数は距離を縮めることだけです。これはクラウド間のやり取りで特に重要です。多くの場合、同一クラウドプロバイダー内のリージョン同士はプライベートネットワークで接続されているからです。

クラウドのネットワーク層は通常、信頼性が高く広帯域です。大手クラウドプロバイダーが最高水準の設備に投資できるためです。同一クラウド内のトラフィックは極めて高速で、クラウドプロバイダー間であっても、家庭やオフィス、さらにはオンプレミスのデータセンターよりはるかに優れています。

光速は有限である

パブリックインターネットの輻輳を別にすれば、レイテンシの最大の制約は距離と光速です。最も遠い送信先は地球上の対蹠点同士で、往復距離は地球の全周に相当し、光速で約130ミリ秒かかります。その他の大陸間ルートも、これに近い値になります。経路上の処理遅延も加味すると、現在使われている高度に最適化されたルーターをもってしても、数千キロメートル先までデータを送って戻すには相当のミリ秒数を要します。そしてこのレイテンシが、TCP伝送のスループットを根本的に制約するのです。

コストに関する補足

本記事の主題はスループットとレイテンシですが、もう一つの指標であるコストも忘れてはなりません。クラウドのデータ転送料金は、コストの高い順に、サービス外への下り(egress)、同一クラウド内のリージョン間、ゾーン間という形で課金されます。

クラウドにおけるスループット計測:新ツールの紹介

各クラウド内およびクラウド間でリージョン間のスループットとレイテンシを測るオープンソースツールを作りました。AWSとGoogle Cloud Platformに対応しています。

知る限り、このようなツールは初めての部類に入ります。既存の指標はスループットよりもレイテンシに重点を置いており、その多くはクラウド間ではなく単一クラウド内のネットワークを対象としているためです。

仕組み

スループットとレイテンシ

Intercloud Latencyツールは、さまざまなリージョンに小さな仮想マシンを起動して動作します。次に、スループット計測ツールのiperfと、レイテンシ計測のpingを使ってテストを実行します。

ドキュメントは performance_test.py --help を実行して確認してください。

リージョン間テスト

テストはあるリージョンから別のリージョンに対して実行されます。デフォルトではリージョン内のテストは行いません。リージョン内の計測値は良すぎて、リージョン間テストと比較できないためです。

すべてのGCPリージョンと、デフォルトで有効化されているすべてのAWSリージョンを含めると、46リージョン、テストペアは n * (n - 1)(つまり2070)組になります。

距離

距離は、各種公開情報源から収集したデータセンターの所在地に基づいています。クラウドプロバイダーは正確な所在地を公表していませんが、秘密というわけでもありません。

ただし、所在地を厳密なものとして扱うべきではありません。各リージョンは耐障害性のために複数の(アベイラビリティ)ゾーンに分散しており、場合によっては数十キロメートル離れていることもあります(これを明確に示すWikileaksの地図を参照)。本ツールでは近似として都市中心部の座標を使用しています。とはいえ、ここで計測している速度を踏まえれば、リージョン位置を近似値として用いても統計値は十分に精度が高く、誤差はネットワーク挙動の他の変動に埋もれてしまいます。

オプション

すべてのリージョンを一度にテストしたくない場合のために、リージョンペアの選択を絞り込むオプションを用意しています。

特定のリージョンペアを直接指定することも、システムにリージョンペアを選ばせたうえで、その選択を以下のように制限することもできます。

  • 単一のクラウドに限定する
  • 特定のクラウド間ペアに限定する(例:GCP-to-AWSのみ、またはGCP-to-GCPのみ)
  • リージョン間距離の範囲を指定する:同時にテストする2つのリージョン間の最小距離と最大距離
  • 選択するリージョンの最大数を制限する

速度とコスト管理のため、テストはデフォルトで並列実行されますが、順次バッチでの実行に切り替えることもできます。

使用する仮想マシン(インスタンス)タイプは小さく、AWSとGCPで同等のものを選んでいます。マシンタイプは変更も可能です。ここで重要なのは、本ツールは低レイテンシや高スループットの達成を目指すテストではなく、これらの指標を距離をまたいで比較するテストである、という点です。したがって、テスト同士が比較可能でありさえすればよいのです。最小のインスタンスでもギガビット/秒級の帯域幅が割り当てられており、本テストはネットワークとTCPスタックの定義によって制約され、CPU、RAM、ディスクの影響は受けないため、より大きなインスタンスを使ってもほとんど差は出ません。

例外は、互いに非常に近いGCPリージョン同士の場合で、利用可能なリソースに依存するスループットの上限に達することがあります。チャートをご覧ください。ただし、これは以下にまとめる結論には影響しません。

コスト

全リージョンでインスタンスを起動しても、コストはそれほどかかりません。小さなインスタンスは1時間あたり0.5〜2セント程度です。並列化のおかげでテストスイートは短時間で完了し、インスタンス料金はフルテストでも2ドル未満に収まります。データ量はテストあたり10MBで、費用の大半を占めるのは下り(egress)料金で、全リージョン対象のテストで最大20ドル程度です。

出力

平均往復時間とビットレートはCSVファイルにまとめられ、5つのチャート(全クラウドペア、GCP-to-GCP、GCP-to-AWS、AWS-to-GCP、AWS-to-AWS)として表示されます。

スループットテストの結果

結果にはノイズが多く含まれます。パブリックインターネットでは、輻輳やBGPの再調整がレイテンシとスループットの両方に大きく影響し得るためです。とはいえ、いくつかの明確な傾向が見えてきます。レイテンシもスループットも、クラウドをまたぐよりは同一クラウド内のほうが良好です。ただし、思っているほどの差ではないかもしれません。

本記事の主眼である距離の影響については、レイテンシは距離に対して線形に増加することがわかります(相関係数 r=0.92)。光速とルーターでの最小限の処理時間が、ほぼそのまま積み上がるかたちです。スループットのほうはばらつきが大きく、TCPバッファなどのボトルネックが線形ほど素直ではない形で伝送を遅くしますが、距離に対して明確に対数比例の関係にあります(r=-0.7)。

以下のチャートをご覧ください。結論はこうです。原理的にはデータの大河を長距離にわたってゆっくり流すこともできますが、実際にはTCPバッファの存在により、レイテンシ、ひいては距離がスループットを阻害します。クラウド間で大量のデータをオフロードしたいなら、物理的な所在地を調べて最寄りのリージョンを選びましょう。

All Data: Distance to latency and throughputAWS to AWS: Distance to latency and throughputAWS to GCP: Distance to latency and throughputGCP to AWS: Distance to latency and throughputGCP to GCP: Distance to latency and throughput