スループット

読み:するーぷっと / 英語表記:Throughput

一定時間内に実際に転送・処理できたデータ量や処理件数を表す性能の指標。ネットワークではビット/秒などで表し、ヘッダーなどのオーバーヘッドや確認応答の待ち時間、再送の影響を受けるため、回線の伝送速度を超えることはない。

イマシルちゃんの解説

1Gbit/sの回線につないでも、ファイルのダウンロードがそこまで速くならないことがあるんだ。
回線の速さは、信号を送り出せる最大の速さにすぎないからだよ。
実際の通信では、宛先などを書いたヘッダーがデータに付くし、返事を待つ時間や送り直しも発生するの。
そうした分を差し引いて、一定時間に本当に運べたデータの量を表す性能の指標がスループットなんだ。
サーバが1秒間に処理できる要求の数のように、機器やシステムの処理能力を表すときにも使うよ。
カタログの数字ではなく実際に運べる量で考えるから、回線や機器を選ぶときの大切なものさしになるんだね。

より深い解説

回線の速さとの違い

スループットは「単位時間あたりに実際に運べた量」である。回線速度(伝送速度)は、物理的に信号を送り出せる速さを示す。両者は同じビット/秒で表すため混同しやすいが、回線速度は設備の能力、スループットは通信の結果である。

ネットワーク機器の性能試験では、もう少し厳密な定義も使われる。RFC 1242は、装置が提示されたフレームを一つも落とさずに転送できる最大の速さをスループットと定義している。測定手順はRFC 2544にまとめられている。一方、日常の会話や午後問題では、利用者から見た実効的な転送速度を指すことが多い。どちらの意味で使われているかは、文脈から判断する。

用語何を表すか例
回線速度回線が信号を送り出せる速さ1000BASE-Tの1Gbit/s
スループット実際に転送できた量の速さ測定で得た940Mbit/s
グッドプットヘッダーや再送を除いた、アプリケーションが受け取った有効なデータの速さファイル本体の転送速度
回線利用率回線速度に対する実際の通信量の割合平均40%

goodputは、スループットのうちアプリケーションにとって意味のあるデータだけを数えた値である。同じ回線でも、どの層のどの部分を数えるかで値が変わる。比べるときは、測定した層と範囲をそろえる必要がある。

スループットを下げる要因

スループットが回線速度に届かない理由は、大きく次の四つに分けられる。原因によって対策が違うため、まずどれに当たるかを見極める。

要因内容主な例
オーバーヘッドデータ以外に送る情報や送信の間隔プリアンブル、各層のヘッダー、フレーム間ギャップ
待ち時間確認応答などを待つ間は送れないTCPのウィンドウ不足、ストップアンドウェイト
損失と再送失われたデータを送り直す輻輳による破棄、無線の電波干渉
処理能力経路上の機器や端末の処理が追いつかないファイアウォールの検査、サーバのCPUやディスク

経路上で最も能力の低い部分が、全体のスループットを決める。この箇所をボトルネックと呼ぶ。回線を増速しても、その箇所が別の場所にあれば結果は変わらない。

計算例:フレームに付く情報

1Gbit/sのイーサネットで、TCPを使って大きなファイルを送る場合を考える。MTUは1,500オクテット、IPv4とTCPのヘッダーはオプションなしでそれぞれ20オクテットとする。

1フレームで運べるTCPのデータは1,500 − 40 = 1,460オクテットである。一方、回線上では1フレームごとに次の領域も送られる。

領域長さ(オクテット)
プリアンブルとSFD8
MACヘッダー14
ペイロード(IPパケット)1,500
FCS4
フレーム間ギャップ12

合計は1,538オクテットになる。データの割合と、アプリケーションに届くデータの速さの上限は次のとおりである。

データの割合 = 1,460 ÷ 1,538 ≒ 0.9493
上限 = 1Gbit/s × データの割合 ≒ 949Mbit/s

つまり誤りも待ち時間もない理想的な状態でも、TCPのデータは回線速度の約95%しか運べない。TCPのタイムスタンプオプションなどでヘッダーが長くなれば、さらに少し下がる。

小さいフレームでは、データ以外の領域が占める比率がずっと大きい。最小の64オクテットのフレームは、プリアンブルとギャップを加えると回線上で84オクテットを占める。1Gbit/sで送れるフレーム数は次のとおりである。

1,000,000,000 ÷(84 × 8)≒ 1,488,095フレーム/秒

機器の性能表で、ビット/秒とは別に1秒あたりのパケット数(pps)が示されるのはこのためである。

計算例:ウィンドウとRTT

TCPは、確認応答を待たずに送れる量(ウィンドウ)を送り切ると、返事が届くまで次を送れない。そのため1本のTCPコネクションのスループットには、次の上限がある。

スループットの上限 ≒ ウィンドウサイズ ÷ RTT

ウィンドウサイズが65,535オクテット、RTT(往復遅延時間)が20msの場合を計算する。

65,535 × 8 ÷ 0.02 = 26,214,000ビット/秒 ≒ 26.2Mbit/s

この経路の回線が1Gbit/sでも、1本のTCPコネクションは約26Mbit/sで頭打ちになる。逆に1Gbit/sを使い切るのに必要なウィンドウは、帯域とRTTの積(帯域遅延積)で求める。

1,000,000,000 × 0.02 = 20,000,000ビット = 2,500,000オクテット(約2.5Mバイト)

TCPヘッダーのウィンドウ欄は16ビットなので、そのままでは65,535オクテットまでしか表せない。より大きな値はRFC 7323のウィンドウスケールオプションで扱う。遠い拠点との通信だけ遅いという症状では、回線速度より先にRTTと受信バッファの大きさを確認する。

計算例:転送時間の見積り

スループットが分かれば、転送にかかる時間を見積もれる。例えば、200Mバイトのファイルを実効80Mbit/sで送る場合は次のとおりである。ここでは1Mバイトを10^6オクテットとする。

200 × 10^6 × 8 ÷(80 × 10^6)= 20秒

回線速度の100Mbit/sで割ると16秒になり、実際より短く見積もってしまう。午後問題で伝送効率が条件に与えられたら、回線速度に掛けて実効速度を求める。実効速度が直接与えられた場合は、その値でデータ量を割る。

機器のスループットを読む

ルータやスイッチが、すべてのポートで回線速度いっぱいのフレームを落とさず転送できることをワイヤレート(ワイヤスピード)での転送という。性能表を比べるときは、フレーム長の条件を確認する。大きいフレームではビット/秒が高く見え、64オクテットのような小さいフレームではpps性能が問われる。

ファイアウォールやUTMでは、有効にする機能によって値が大きく変わる。パケットフィルタリングだけの値、IPSを有効にした値、TLSインスペクションを有効にした値は別物である。製品の資料に書かれた数値は、測定条件とあわせて読む必要がある。同時セッション数や新規接続数/秒も、スループットとは別の上限として確認する。

サーバやシステムでは、1秒あたりのトランザクション数(TPS)や要求数をスループットとして扱う。負荷を上げていくとスループットはある点で頭打ちになり、そこから先は応答時間だけが延びる。この頭打ちの点を把握することが、性能テストやサイジングの目的の一つである。

測定するときの注意点

スループットは、測り方によって値が大きく変わる。次の点をそろえないと、正しく比較できない。

TCPのスループット試験の考え方はRFC 6349が整理している。RTTと帯域遅延積を先に測り、理論上の上限と実測値を比べる手順である。

改善策の選び方

対策は、低下の原因に合わせて選ぶ。原因を確かめずに回線を増速しても、効果が出ないことがある。

原因対策の例
回線の帯域不足増速、リンクアグリゲーション、通信のピークを分散する
ウィンドウ不足(RTTが大きい)受信バッファの拡大、ウィンドウスケールの利用、並列転送
パケット損失輻輳箇所の解消、QoSによる優先制御、無線環境の改善
機器の処理能力不足上位機種への更改、検査機能の対象の見直し、負荷分散
送る量そのものが多い圧縮、キャッシュ、CDNの利用

午後での問われ方

この用語が出てくる記事

↑