38
EC2の基礎 -パフォーマンスを100%引き出すオプション設定- 菊池修治

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

Embed Size (px)

Citation preview

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% 72t2.micro 30 6 1 10% 144t2.small 30 12 1 20% 288t2.medium 60 24 2 40%(最⼤200%) 576t2.large 60 36 2 60%(最⼤200%) 864t2.xlarge 120 54 4 90%(最⼤400%) 1296t2.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% 72t2.micro 30 6 1 10% 144t2.small 30 12 1 20% 288t2.medium 60 24 2 40%(最⼤200%) 576t2.large 60 36 2 60%(最⼤200%) 864t2.xlarge 120 54 4 90%(最⼤400%) 1296t2.2xlarge 240 81 8 135%(最⼤800%) 1944

17T2インスタンスインスタンスタイプ

初期CPUクレジット

1時間に受け取るCPUクレジット vCPU ベースライン

パフォーマンス最⼤獲得CPUクレジットバランス

t2.medium 60 24 2 40%(最⼤200%) 576t2.large 60 36 2 60%(最⼤200%) 864t2.xlarge 120 54 4 90%(最⼤400%) 1296t2.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,000c4.xlarge 93.75 6,000c4.2xlarge 125 8,000c4.4xlarge 250 16,000c4.8xlarge 500 32,000i3.large 50 3,000i3.xlarge 100 6,000i3.2xlarge 200 12,000i3.4xlarge 400 16,000i3.8xlarge 850 32,500i3.16xlarge 1,750 65,000

インスタンスタイプ

最⼤スループット(MB/s)

最⼤IOPS(16KB)

m4.large 56.25 3,600m4.xlarge 93.75 6,000m4.2xlarge 125 8,000m4.4xlarge 250 16,000m4.10xlarge 500 32,000m4.16xlarge 1,250 65,000r4.large 54 3,000r4.xlarge 109 6,000r4.2xlarge 218 12,000r4.4xlarge 437 18,750r4.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.002xlarge 8 61 1 x 1900 NVMe SSD 2 x 800 SSD $0.73 $2.004xlarge 16 122 2 x 1900 NVMe SSD 4 x 800 SSD $1.46 $4.008xlarge 32 244 4 x 1900 NVMe SSD 8 x 800 SSD $2.93 $8.0016xlarge 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.16xlargehttp://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 ixgbevffilename: /lib/modules/3.10.48-55.140.amzn1.x86_64/kernel/drivers/amazon/ixgbevf/ixgbevf.koversion: 2.14.2license: GPLdescription: 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 enafilename: /lib/modules/4.4.11-23.53.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.koversion: 0.6.6license: 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