インスタンスタイプの「ネットワーク帯域幅」「EBS 帯域幅」で「最大」と書かれていたり書かれていなかったりするのはなぜなのか

記事タイトルとURLをコピーする

コーヒーが好きな木谷映見です。

タイトルの通りですが、社内で質問があったので調査してみました。
意外と奥が深くてクラクラしてしまいました。

インスタンスタイプの「ネットワーク帯域幅」「EBS 帯域幅」に「最大」と書かれていたり書かれていなかったりする

こちらのページは EC2 インスタンスタイプの一覧が大変見やすく掲載されています。 aws.amazon.com

例えば画面左のメニューで「コンピューティング最適化」をクリックすると、「C」で始まるインスタンスタイプの一覧が表示されます。

この中でも例えば「C5」のタブを選択してインスタンスタイプの一覧を見てみると、「ネットワーク帯域幅」「EBS 帯域幅」の項目で「最大」と書かれているインスタンスタイプと「最大」と書かれていないインスタンスタイプがあります。
この違いは何なのでしょうか?

なぜなのか

「EBS 帯域幅」と「ネットワーク帯域幅」のそれぞれについて見ていきます。

「EBS 帯域幅」について

こちらのドキュメントに詳細が記載されています。
docs.aws.amazon.com

このドキュメントで「*」の印があるインスタンスタイプでは、最大パフォーマンスを 24 時間につき少なくとも 30 分間維持できると記載されています。つまり、1 日に 30 分以上継続してこのパフォーマンスを維持することはできない可能性があるということです。
普段は「ベースパフォーマンス」という、最大パフォーマンスより小さい値で稼働しています。
ベースパフォーマンスについては同じページに値が表記されています。
「*」の印がない他のインスタンスでは、最大パフォーマンスを無期限に維持できます。

印をつけている「c5.large」「c5.xlarge」「c5.2xlarge」「c5.4xlarge」ではそれぞれ以下のようなパフォーマンスになります。

インスタンスタイプ EBS 帯域幅の最大帯域幅 (Mbps) EBS 帯域幅のベースライン帯域幅 (Mbps)
c5.large 4,750 650
c5.xlarge 4,750 1,150
c5.2xlarge 4,750 2,300
c5.4xlarge 4,750 4,750

DBインスタンスでも同様です。
Amazon RDS インスタンスタイプ | AWS

DB インスタンスクラスのハードウェア仕様
DB インスタンスクラス - Amazon Relational Database Service

補足:EBS 最適化とは

EBS 最適化とは、EBS のパフォーマンスを最適化するための EC2 の設定です。
EBS は EC2 インスタンスとネットワーク経由で接続しています。
このネットワークは EBS と EC2 インスタンス間の通信以外にその他のトラフィックとも共有されているのですが、EBS 最適化が有効になっていると、その他のトラフィックとは別に EBS 専用の帯域幅が提供されます。
EBS 最適化を有効化することで「EBS ボリュームの I/O」と「インスタンスからのその他のトラフィック」の競合を最小に抑え、EBS ボリュームのパフォーマンスを向上します。

参考リンク:Amazon EBS 最適化インスタンスを使用する - Amazon Elastic Compute Cloud

「ネットワーク帯域幅」について

ネットワーク帯域幅が「最大」と表示されているインスタンスについてはこのページに注釈が記載されています。
インスタンスタイプ - Amazon EC2 | AWS

ネットワーク帯域幅が「最大」と表示されているインスタンスは、EBS 最適化と同様にネットワーク帯域幅のベースラインがあり、ネットワーク I/O クレジットメカニズムを使用して、ベースライン帯域幅を超えるバーストをベストエフォートで行うと記載されています。

ネットワーク I/O クレジットメカニズムとはなんでしょうか?
以下のドキュメントに詳細が記載されていますので、詳しく見ていきます。
docs.aws.amazon.com

EC2 インスタンスで使用できるネットワーク帯域幅は、以下のような要因によって異なります。

マルチフロートラフィック

マルチフロートラフィックは 1 対多の通信です。
マルチフロートラフィックをまとめたときに使える帯域幅は、トラフィックの宛先によって異なります。

リージョン内 インスタンスで使用可能な全ネットワーク帯域幅を利用可能
他リージョンへの通信、インターネットゲートウェイ、Direct Connect、ローカルゲートウェイ vCPU を 32 以上搭載した現行世代のインスタンスでは、利用可能なネットワーク帯域幅の最大 50% を利用可能。32 vCPU 未満の現行世代のインスタンスの帯域幅は 5 Gbps に制限される

使用可能なインスタンスのネットワーク帯域幅は、インスタンスの vCPU の数によって異なります。
例えば、

  • m5.8xlarge インスタンスの場合:32 vCPU、10 Gbps のネットワーク帯域幅
  • m5.16xlarge インスタンスの場合:64 vCPU、20 Gbps のネットワーク帯域幅

などです。

トラフィックが使用できる帯域幅の量は、vCPU の数と宛先によって異なります。
例えば、m5.16xlarge インスタンスは 64 vCPU のため、リージョン内の別のインスタンスへのトラフィックは、使用可能な全帯域幅(20 Gbps)を利用できます。
ただし、異なるリージョンの別のインスタンスへのトラフィックは、使用可能な帯域幅の 50% (10 Gbps) しか利用できません。

さらに、32 vCPU 未満のインスタンスの場合、異なるリージョンの別のインスタンスへのネットワーク帯域幅は 5 Gbps に制限されます。

では、32 vCPU 未満のインスタンスで同じリージョン内の別のインスタンスへのトラフィックはどうなるのでしょうか?

vCPU が 16 以下のインスタンス (サイズ 4xlarge 以下) の場合、帯域幅に「最大」と記載されています。
確かに、以下ページを確認すると 16 vCPU 以下のインスタンスタイプでネットワーク帯域幅に「最大」と記載されているのがわかります。
インスタンスタイプ - Amazon EC2 | AWS

vCPU が 16 以下のインスタンスには、ベースライン帯域幅があります。
vCPU が 16 以下のインスタンスでは「ネットワーク I/O クレジット」を使用して、ベースライン帯域幅を超えてバーストすることができます。

ネットワーク I/O クレジットメカニズムについて

32 vCPU 未満のインスタンスで同じリージョン内の別のインスタンスへ通信する際、トラフィックがどうなるか見ていきます。

32 vCPU 未満のインスタンスは、起動時にネットワーク I/O クレジットの最大数を受け取ります。 インスタンスはインスタンスのサイズに応じて、ネットワーク I/O クレジットを消費しネットワーク帯域幅をバーストできます。バーストした帯域幅は一定期間のみ (通常は 5~60 分) 使用できます。
インスタンスがネットワーク I/O クレジットを使い果たすと、ベースライン帯域幅に戻ります。
実行中のインスタンスは、ベースライン帯域幅よりも少ないネットワーク帯域幅を使用していると、ネットワーク I/O クレジットがたまってきます。
インスタンスが停止していると、ネットワーク I/O クレジットはたまりません。
バースト帯域幅は共有リソースであるため、ネットワーク帯域幅のバーストはベストエフォートベースで行われます。

ネットワーク帯域幅がどれだけバーストできるかは、以下のリンク先を英語でご参照ください。

以下が Compute optimized instances(コンピューティング最適化インスタンス)のページの例ですが、「Baseline bandwidth (Gbps)」がベースライン帯域幅で、「Burst bandwidth (Gbps)」がバーストした帯域幅(ネットワーク帯域幅で「最大」と書いてあった値)です。

シングルフロートラフィック

シングルフロートラフィックは 1 対1 の通信です。
インスタンスが同じクラスタープレイスメントグループにない場合、シングルフロートラフィックの帯域幅は 5 Gbps に制限されます。
低レイテンシーを実現し、シングルフローの帯域幅を増やすために、以下の方法が検討できます。

  • クラスタープレイスメントグループを使用して、同じグループ内のインスタンスで最大 10 Gbps の帯域幅を実現できます。
  • マルチパス TCP (MPTCP) でより高い帯域幅を実現するために、2 つのエンドポイント間に複数のパスを設定します。
  • 同じサブネット内の適格なインスタンスに対して ENA Express を構成し、それらのインスタンス間で最大 25 Gbps を達成します。

マルチパス TCP (MPTCP)というのは TCP の拡張技術であり、アプリケーションが複数のパスを同時に使用できるようにするものです。
ENA Express については以下ブログが参考になります。
新機能 – ENA Express: EC2 でのネットワークレイテンシーとフローごとのパフォーマンスが向上 | Amazon Web Services ブログ

終わりに

以外と奥が深くて理解するのに時間がかかりました。EC2 インスタンスの T 系インスタンスの CPU クレジットのように、ネットワーク帯域幅もネットワーク I/O クレジットというものが使えるのですね。
プレイスメントグループや拡張ネットワーキングにも触れたかったのですが、今回はここまでとさせてください。
帯域幅の「最大」という記載について、疑問に思っていた方の理解の一助になれば幸いです。

emi kitani(執筆記事の一覧)

AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。