Upload
shuji-kikuchi
View
4.421
Download
0
Embed Size (px)
Citation preview
2⾃⼰紹介
菊池 修治- クラスメソッド AWS事業部
- Solutions Architect
- AWS認定 5冠
- SIer → 製造業 → クラスメソッド
- 好きなデータストア
- MongoDB
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. キーペアの選択
パフォーマンスを左右する項⽬に注⽬
13インスタンスタイプの選択
インスタンスタイプによって異なるのはvCPU、メモリだけではない
• インスタンスストレージの有無/タイプ
• EBS最適化/最⼤スループット
• ネットワークパフォーマンス
• バースト有無
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%の使⽤率
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が登場しストレージ最適化インスタンスが⼿頃に
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/
37まとめ
• EC2のパフォーマンスを引き出すためにはCPU/メモリ/ディスク/NWの全体で最適化する
• インスタンスタイプによってvCPU/メモリ以外にも、ストレージ、ネットワークのパフォーマンス特性が異なることに注意
• 最新世代のインスタンス + Amazon Linuxであればデフォルトで最適化される設定が多い