ネットワーク性能が20GbpsのEC2 m4.16xlargeが使用可能になりました

ネットワーク性能が20GbpsのEC2 m4.16xlargeが使用可能になりました

2016.09.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

先程20Gbpsのネットワーク性能を発揮するm4.16xlargeが使用可能になったのでレポートします。

Expanding the M4 Instance Type – New M4.16xlarge

m4.16xlarge

m4.16xlargeは昨年発表されたM4ファミリーのEC2の上位タイプとなります。今まではm4.10xlargeまででしたので全体的スペックが160%となっています。ネットワークやEBS性能はm4.10xlargeの2倍になっています。

タイプ 仮想CPU メモリ (GB) ストレージ ネットワーク EBS最適化 備考
スループット (Mbps) 最大IOPS (16KB) 最大帯域幅 (MB/s)
m4.large 2 8 EBSのみ 中 450 3,600 56.25 既存
m4.xlarge 4 16 EBSのみ 高 750 6,000 93.75 既存
m4.2xlarge 8 32 EBSのみ 高 1,000  8,000 125 既存
m4.4xlarge 16 64 EBSのみ 高 2,000 16,000 250 既存
m4.10xlarge 40 160 EBSのみ 10 Gbps 4,000 32,000 500 既存
m4.16xlarge 64 256 EBSのみ 20 Gbps 10,000 64,000 1,250 New!

大きなポイントは、CPUがIntel(R) Xeon(R) CPU E5-2686 v4、Elastic Network Adapter(ENA)に対応、という2点です。

m4.16xlargeを起動する

以下の環境でm4.16xlargeを起動しました。

CPU情報

まずはCPU情報を確認します。CPUのモデル名はIntel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHzとなっています。

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
stepping        : 1
microcode       : 0xb000014
cpu MHz         : 1853.835
cache size      : 46080 KB
physical id     : 0
siblings        : 32
core id         : 0
cpu cores       : 16
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq monitor est ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt
bugs            :
bogomips        : 4600.06
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

・
・
・

メモリ情報

次にメモリ情報を確認します。認識しているメモリのサイズは264146432 kBとなっています。

$ cat /proc/meminfo
MemTotal:       264146432 kB
MemFree:        263367748 kB
MemAvailable:   263339388 kB
Buffers:           11244 kB
Cached:           121256 kB
SwapCached:            0 kB
Active:           127724 kB
Inactive:          19084 kB
Active(anon):      14336 kB
Inactive(anon):       56 kB
Active(file):     113388 kB
Inactive(file):    19028 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         14404 kB
Mapped:            11712 kB
Shmem:                64 kB
Slab:             104528 kB
SReclaimable:      36120 kB
SUnreclaim:        68408 kB
KernelStack:        8464 kB
PageTables:         2204 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    132073216 kB
Committed_AS:     111904 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12288 kB
DirectMap2M:     2084864 kB
DirectMap1G:    267386880 kB

ネットワーク

以下のドキュメントを元にENAの対応状況を確認します。

VPC 内の Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化

カーネルモジュール (ena)

Amazon Linuxを使用しているため標準で導入されています。

$ modinfo ena
filename:       /lib/modules/4.4.19-29.55.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko
version:        1.0.2
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
srcversion:     EB49676051BBF026315D272
alias:          pci:v00001D0Fd0000EC21sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd0000EC20sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00001EC2sv*sd*bc*sc*i*
alias:          pci:v00001D0Fd00000EC2sv*sd*bc*sc*i*
depends:
intree:         Y
vermagic:       4.4.19-29.55.amzn1.x86_64 SMP mod_unload modversions
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable)
			  0 - Automatically choose according to device capability (default)
			  1 - Don't push anything to device memory
			  3 - Push descriptors and header buffer to device memory (int)
parm:           enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int)
parm:           enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int)
parm:           numa_node_override_array:Numa node override map
 (array of int)
parm:           numa_node_override:Enable/Disable numa node override (0=disable)
 (int)

Amazon Linux以外のLinuxディストリビューションの場合は、以下の内容に基いてenaモジュールを導入してください。

Windows Serverの場合は、OS設定は特にありません。

インスタンス属性 (enaSupport)

インスタンスで拡張ネットワーキングenaSupport属性の状態を確認します。
m4.16xlargeであるため有効になっています。

$ aws ec2 describe-instances --instance-id i-12345678901234567 --query Reservations[].Instances[].EnaSupport --region ap-northeast-1
[
    true
]

イメージ属性 (enaSupport)

イメージ属性を確認します。
ところがAuthFailureが出力されてしまいます。ドキュメントによると、自分のアカウントに属していないイメージの場合はAuthFailureが出力する場合があるようです。今回はパブリックイメージを使用しているため権限がなかったようです。Amazon LinuxであるためenaSupportが設定されていると判断して先に進めます。

$ aws ec2 describe-image-attribute --image-id ami-1a15c77b --attribute enaSupport --region ap-northeast-1

An error occurred (AuthFailure) when calling the DescribeImageAttribute operation: Not authorized for image:ami-1a15c77b

ネットワークインターフェイスドライバ

インターフェイスの状態を確認します。以下のようにドライバはenaとなっています。

$ ethtool -i eth0
driver: ena
version: 1.0.2
firmware-version:
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

ネットワークパフォーマンスを確認する

ENAのパフォーマンスを計測してみます。計測にはiPerfを使用します。使用方法の詳細はこちらのブログエントリを参照ください。

以下の環境で計測を行いました。

  • MTU:9001 (ドキュメントの内容より)
  • 対抗インスタンス:m4.16xlarge (m4.16xlargeのENAのパフォーマンスを計測するため)
  • プレイスメントグループ:あり

以下のコマンドを実行し、10回試行しました。

サーバ側

サーバ側は普通にTCPで待ち受けます。

$ iperf -s
クライアント側

クライアント側は1並列と5並列で実行します。

$ iperf -c 192.0.2.1
$ iperf -c 192.0.2.1 -P 5
結果

1並列の計測結果は以下になります。
平均で9.40Gbpsの帯域幅となっています。

インターバル 転送量 帯域幅
0.0-10.0 sec 10.9 GBytes 9.34 Gbits/sec
0.0-10.0 sec 10.7 GBytes 9.23 Gbits/sec
0.0-10.0 sec 11.0 GBytes 9.44 Gbits/sec
0.0-10.0 sec 11.1 GBytes 9.52 Gbits/sec
0.0-10.0 sec 10.8 GBytes 9.30 Gbits/sec
0.0-10.0 sec 11.0 GBytes 9.44 Gbits/sec
0.0-10.0 sec 10.8 GBytes 9.24 Gbits/sec
0.0-10.0 sec 10.9 GBytes 9.33 Gbits/sec
0.0-10.0 sec 11.2 GBytes 9.58 Gbits/sec
0.0-10.0 sec 11.1 GBytes 9.57 Gbits/sec

5並列の計測結果は以下になります。
全て20.6Gbpsとなっています。ENAの限界まで速度を出せています。

インターバル 転送量 帯域幅
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec
0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec

さいごに

今までENAはx1.32xlargeのみで使用可能でした。x1.32xlargeは費用が高いため高スループットなネットワーク環境が必要な場合でも利用には二の足を踏んでいたと思います。しかしm4.16xlargeが出たため3割以下の価格で20Gbpsのインスタンスを利用できるようになりました。CPUもBroadwellアーキテクチャのXeon E5-2686 v4となっており高いパフォーマンスが期待できます。 HPC環境などでは丁度よいインスタンスではないでしょうか。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事