EC2の基礎
-パフォーマンスを100%引き出すオプション設定-
菊池修治
2⾃⼰紹介
菊池 修治
- クラスメソッド AWS事業部
- Solutions Architect
- AWS認定 5冠
- SIer → 製造業 → クラスメソッド
- 好きなデータストア
- MongoDB
3Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
4Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
5EC2のパフォーマンスを考える
性能問題/パフォーマンスチューニング
• 指標を明確にすること
• アプリケーションのレスポンス/スループット
6EC2のパフォーマンスを考える
性能問題/パフォーマンスチューニング
• 指標を明確にすること
• アプリケーションのレスポンス/スループット
• よくある間違い
• CPU使⽤率が⾼い!
• メモリ使⽤率が⾼い!
7EC2のパフォーマンスを考える
性能問題/パフォーマンスチューニング
• 指標を明確にすること
• アプリケーションのレスポンス/スループット
• よくある間違い
• CPU使⽤率が⾼い!
• メモリ使⽤率が⾼い!
パフォーマンスが良好であれば問題ない
CPU/メモリ/ストレージ/NW、全てのリソースが⾼い使⽤率を維持
できているのが最も望ましい状態
8EC2作成時の設定項⽬:マネジメントコンソール
1. AMIの選択
2. インスタンスタイプの選択
3. 詳細設定
• インスタンス数
• 購⼊オプション(スポット)
• VPC
• サブネット
• パブリックIPの⾃動割当の有無
• プレイスメントグループ
• IAMロール
• シャットダウン動作
• 削除保護
• 詳細モニタリング
• EBS最適化
• テナンシー
• ネットワークインターフェースの設定
• ユーザーデータ
4. ストレージ追加
5. タグ
6. セキュリティグループの選択
7. キーペアの選択
9EC2作成時の設定項⽬:マネジメントコンソール
1. AMIの選択
2. インスタンスタイプの選択
3. 詳細設定
• インスタンス数
• 購⼊オプション(スポット)
• VPC
• サブネット
• パブリックIPの⾃動割当の有無
• プレイスメントグループ
• IAMロール
• シャットダウン動作
• 削除保護
• 詳細モニタリング
• EBS最適化
• テナンシー
• ネットワークインターフェースの設定
• ユーザーデータ
4. ストレージ追加
5. タグ
6. セキュリティグループの選択
7. キーペアの選択
パフォーマンスを左右する項⽬に注⽬
10Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
11インスタンスタイプの選択
12インスタンスタイプの選択
13インスタンスタイプの選択
インスタンスタイプによって異なるのはvCPU、メモリ
だけではない
• インスタンスストレージの有無/タイプ
• EBS最適化/最⼤スループット
• ネットワークパフォーマンス
• バースト有無
14T2インスタンス
• ⼀定のベースラインパフォーマンスを持つ
• CPUクレジットを消費することでバーストすること
ができる
1CPUクレジット:1CPUコアを1分間、100%使⽤可能
15T2インスタンス
インスタンス
タイプ
初期CPU
クレジット
1時間に受け取る
CPUクレジット
vCPU
ベースライン
パフォーマンス
最⼤獲得CPU
クレジットバランス
t2.nano 30 3 1 5% 72
t2.micro 30 6 1 10% 144
t2.small 30 12 1 20% 288
t2.medium 60 24 2 40%(最⼤200%) 576
t2.large 60 36 2 60%(最⼤200%) 864
t2.xlarge 120 54 4 90%(最⼤400%) 1296
t2.2xlarge 240 81 8 135%(最⼤800%) 1944
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html
1CPUクレジット:1CPUコアを1分間、100%使⽤可能
16T2インスタンス
インスタンス
タイプ
初期CPU
クレジット
1時間に受け取る
CPUクレジット
vCPU
ベースライン
パフォーマンス
最⼤獲得CPU
クレジットバランス
t2.nano 30 3 1 5% 72
t2.micro 30 6 1 10% 144
t2.small 30 12 1 20% 288
t2.medium 60 24 2 40%(最⼤200%) 576
t2.large 60 36 2 60%(最⼤200%) 864
t2.xlarge 120 54 4 90%(最⼤400%) 1296
t2.2xlarge 240 81 8 135%(最⼤800%) 1944
17T2インスタンス
インスタンス
タイプ
初期CPU
クレジット
1時間に受け取る
CPUクレジット
vCPU
ベースライン
パフォーマンス
最⼤獲得CPU
クレジットバランス
t2.medium 60 24 2 40%(最⼤200%) 576
t2.large 60 36 2 60%(最⼤200%) 864
t2.xlarge 120 54 4 90%(最⼤400%) 1296
t2.2xlarge 240 81 8 135%(最⼤800%) 1944
ベースラインの表記は1vCPUを使⽤した場合の使⽤率であることに注意
• t2.mediumの場合、vCPU全体(2)では 40➗2 = 20%の使⽤率
• t2.xlargeの場合、vCPU全体(4)では 90➗4 = 22.5%の使⽤率
18Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
19EC2のストレージ
EBS
• 永続可能なブロックストレージ
• パフォーマンス/コストの異なるタイプ
• SSD:IO1、GP2
• HDD:ST1、SC1、(マグネティック)
インスタンスストア
• 揮発性のブロックストレージ
• インスタンスタイプにより固定の割当
• HDD、SSD、NVMe SSD
20EBSの選択
GP2(汎⽤SSD)
• 1GBあたり 3 IOPSのIO性能が割り当て(ベースライン)
• 1TB未満では”クレジット”を消費して3000 IOPSまでバースト
• クレジットが枯渇するとベースラインまで低下
• 1ボリューム最⼤10,000 IOPS
• 1インスタンス最⼤75,000 IOPS(複数ボリュームを使⽤)
ただし、インスタンスタイプによりパフォーマンス上限が設定され
ていることに注意
21EBSの選択
IO1(プロビジョンドIOPS)
• $0.073/IOPSで必要性能を割り当て
• 50 IOPS/GBまでプロビジョニング可能
• 1ボリューム最⼤20,000 IOPS
• 1インスタンス最⼤75,000 IOPS(複数ボリュームを使⽤)
ただし、インスタンスタイプによりパフォーマンス上限が設定され
ていることに注意
22EBSの変更
• 2017年2⽉のアップデートでEBSのタイプ変更と容量追加がオンラ
インで可能に
• GP2からIO1、IO1からGP2など
• 追加分の容量を利⽤するためにはファイルシステムの拡張が必要
• GP2では..
• 容量追加に伴うIO性能向上は⾃動で反映
• クレジット枯渇時に容量変更すると、クレジットが完全に回復
• ただし、1度変更すると次の変更は6時間後まで不可能
23EBS最適化
• 通常のNWトラフィックと分離したEBS専⽤の帯域を確保することでNW I/O
との競合を最⼩化
• T2を除く現⾏の主要インスタンスタイプ(M4/C4/R4/I3)ではデフォルト
で有効化
• デフォルトで有効でないインスタンスタイプでは追加コストが発⽣
Network
EBS
Network
EBS
EBS最適化⾮対応インスタンス EBS最適化インスタンス
24EBS最適化
• インスタンスタイプによりIO性能の限界があることに注意
インスタンス
タイプ
最⼤スルー
プット(MB/s)
最⼤IOPS
(16KB)
c4.large 62.5 4,000
c4.xlarge 93.75 6,000
c4.2xlarge 125 8,000
c4.4xlarge 250 16,000
c4.8xlarge 500 32,000
i3.large 50 3,000
i3.xlarge 100 6,000
i3.2xlarge 200 12,000
i3.4xlarge 400 16,000
i3.8xlarge 850 32,500
i3.16xlarge 1,750 65,000
インスタンス
タイプ
最⼤スルー
プット(MB/s)
最⼤IOPS
(16KB)
m4.large 56.25 3,600
m4.xlarge 93.75 6,000
m4.2xlarge 125 8,000
m4.4xlarge 250 16,000
m4.10xlarge 500 32,000
m4.16xlarge 1,250 65,000
r4.large 54 3,000
r4.xlarge 109 6,000
r4.2xlarge 218 12,000
r4.4xlarge 437 18,750
r4.8xlarge 875 37,500
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSOptimized.html
25EBSのプレウォーミング
• スナップショット/AMIから復元したEBSは初期化が必要
• EBS各ブロックの初回アクセス時にレイテンシが増⼤
• dd/fioで⼀度、全ブロックにアクセスすることで本来のパ
フォーマンスが発揮可能に
• 新規に作成したEBSは初期化不要
26インスタンスストア
• 揮発性(停⽌/起動でデータは失われる)ではあるが、イン
スタンスタイプによっては、追加コスト無しでハイパフォー
マンスなストレージを可能
• 2017年2⽉にI3インスタンスがGA
• NVMe SSD(PCI Express直結のSSD)
• 最⼤ 3,300,000 IOPS
27ストレージ最適化インスタンス
インスタンス
サイズ
vCPU メモリ
I3インスタンス
ストレージ
I2インスタンス
ストレージ
I3料⾦ I2料⾦
large 2 15.25 1 x 475 NVMe SSD - $0.18 -
xlarge 4 30.5 1 x 950 NVMe SSD 1 x 800 SSD $0.37 $1.00
2xlarge 8 61 1 x 1900 NVMe SSD 2 x 800 SSD $0.73 $2.00
4xlarge 16 122 2 x 1900 NVMe SSD 4 x 800 SSD $1.46 $4.00
8xlarge 32 244 4 x 1900 NVMe SSD 8 x 800 SSD $2.93 $8.00
16xlarge 64 488 8 x 1900 NVMe SSD - $5.86 -
• I3が登場しストレージ最適化インスタンスが⼿頃に
28Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
29EC2のネットワーク最適化
拡張ネットワーキング
プレイスメントグループ
30拡張ネットワーキング
• シングルルートI/O仮想化(SR-IOV)を有効化すること
でPPS、レイテンシが最適化
• 対応インスタンスタイプ
• Intel 82599 Virtual Function(VF):
C3、C4、D2、I2、R3、M4 (m4.16xlarge を除く)
• Elastic Network Adapter(ENA):
F1、I3、P2、R4、G3、X1 および m4.16xlarge
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html
31拡張ネットワーキング
• VF/ENAとも、インスタンス属性での有効化とドライバの
対応が必要
• Amazon Linuxでは対応のインスタンスタイプを選択する
ことで⾃動で有効化される
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html
32拡張ネットワーキング
VF有効化の確認
• インスタンス属性の確認
• カーネルモジュール(ixgbevf)の確認(Linuxの場合)
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html
$ aws ec2 describe-instance-attribute --instance-id instance_id --attribute sriovNetSupport
"SriovNetSupport": {
"Value": "simple”
},
$ modinfo ixgbevf
filename: /lib/modules/3.10.48-55.140.amzn1.x86_64/kernel/drivers/amazon/ixgbevf/ixgbevf.ko
version: 2.14.2
license: GPL
description: Intel(R) 82599 Virtual Function Driver
:
:
有効化されていない場合は値が空
最低推奨バージョン2.14.2以降
33拡張ネットワーキング
ENA有効化の確認
• インスタンス属性の確認
• カーネルモジュール(ena)の確認(Linuxの場合)
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking.html
$ aws ec2 describe-instances --instance-id instance_id --query 'Reservations[].Instances[].EnaSupport’
[
true
]
$ modinfo ena
filename: /lib/modules/4.4.11-23.53.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko
version: 0.6.6
license: GPL
:
:
インストールされていなければERROR
trueであればサポートされている
34プレイスメントグループ
• インスタンスを論理グループ化しインスタンス間の通信を最適化
• 同⼀AZに限る
• ピアリングしたVPCにも適⽤可能
• 拡張NWと組み合わせることで効果を最⼤化
• InsufficientInstanceCapacityエラーのリスクに注意
• InsufficientInstanceCapacity:リソース不⾜による起動失敗
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-groups.html
35拡張ネットワーキングとプレイスメントグループ
効果
• 同⼀AZ内のインスタンス間のPingレイテンシ(100回)
• インスタンスタイプ:c3.large
• OS:CentOS6
条件 最⼩(ms) 平均(ms) 最⼤(ms) 標準偏差
デフォルト 0.318 0.385 0.814 0.075
拡張ネットワーキング有効化 0.202 0.220 0.389 0.023
プレイスメントグループ有効化 0.239 0.301 0.410 0.034
拡張ネットワーキング +
プレイスメントグループ 0.130 0.157 0.172 0.018
http://dev.classmethod.jp/cloud/aws/ec2-placement-group/
36Agenda
Introduction
インスタンスタイプ
EC2のストレージ
EC2のネットワーク
まとめ
37まとめ
• EC2のパフォーマンスを引き出すためにはCPU/メモリ/ディスク
/NWの全体で最適化する
• インスタンスタイプによってvCPU/メモリ以外にも、ストレージ、
ネットワークのパフォーマンス特性が異なることに注意
• 最新世代のインスタンス + Amazon Linuxであればデフォルト
で最適化される設定が多い
38

[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -