この記事は公開されてから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を起動しました。
- リージョン:東京リージョン
- AMI:Amazon Linux AMI 2016.09.0(ami-1a15c77b) Amazon Linux AMI 2016.09は本日リリース!
- EBS:1,000GB (gp2)
- プレイスメントグループ:あり
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環境などでは丁度よいインスタンスではないでしょうか。