#バースト可能インスタンスとは
・AWSのインスタンスt2とt3・t3aに存在するシステム
・あまりCPUを必要としないサーバや、たまにしかCPUを使わないサーバの場合にこのインスタンスタイプにする
・このシステムを使ってるインスタンスは安い
#バースト可能インスタンスの詳しい説明
CPUを使わないときに「クレジット」と呼ばれる通貨みたいなものを貯めておき
いざCPUを使いたいとなったときにその通貨を支払って100%のパフォーマンスを出すことができる
t2、t3・t3a以外のインスタンスは普通に100%のCPUを使うことができるが料金が高い
##仕組み
CPU100%の状態を1分間続けると1クレジット失われる(全インスタンスタイプ共通)
(例えば20%の状態を1分間続けば1/5クレジット、2分間続くと2/5クレジットが失われる)
逆に起動している間、常にクレジットは回復していく
インスタンスによって1時間に回復するクレジットが異なる(t2.nanoの場合1時間に3クレジット回復)
払うCPUがなくなったときは「ベースラインパフォーマンス(図で説明)」までのCPUしか使うことができなくなる。
##各インスタンスのクレジット関連のスペック
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-credits-baseline-concepts.html#t-instance-credit-table
#t3インスタンスとt3aインスタンスの違い
t3はintel製のCPUを使用しているのに対して、t3aはAMDのEPYCシリーズを使用している
t3に比べて、t3aのほうが10%安い
IntelとAMDスペック比較についてはあまりよくわかってないので
こちらを見ていただくとわかりやすいと思います。
https://dev.classmethod.jp/cloud/aws/compare-rebuildtime-amd-epyc-t3a/#toc-t3at3-
https://www.pressmantech.com/tech/aws/6781
#t2インスタンスとt3・t3aインスタンスの違い
t2 | t3・t3a | |
モードデフォルト設定 | スタンダードモード | 無制限モード |
起動クレジット | 有り | 無し |
インスタンス停止時 | クレジットはすべて失われる | 7日間保持される |
料金 | - | t2に比べてインスタンス料金が10%程度安い |
仮想コア数 | - | nano~smallはt2に比べて2倍 |
CPUクレジット回復量 | - | t2に比べて多い |
ただし、24時間 or 起動していた時間での平均CPUが ベースラインパフォーマンス を超えていた場合は追加料金が発生する
##起動クレジットとは
t2インスタンスかつスタンダードモードの場合、インスタンスを起動したときに、[ vCPUの数 ☓ 30 ] のクレジットを持った状態で開始できる
vCPUの数はインスタンスタイプによって異なる
起動クレジットの獲得は、リージョン内の全インスタンス合計で24時間100回の制限がある。
100回を超えてしまうとそれ以上のインスタンス起動には起動クレジットが付与されない。
##t3インスタンスを使用するための必要条件
t3インスタンスにはAWS Nitroと呼ばれる仕組みを使用しており、
それには必要なドライバ等があるのでインストールしなければならない
###条件1:64ビット版の OS かつ HVM である
$ uname -m
x86_64 ← x86_64なら64ビット
###条件2:NVMeドライバがインストールされている
kernelが 3.19以降の場合は入っている
$ uname -r
4.4.19-29.55.amzn1.x86_64
# yum update kernel
完了後インスタンス再起動
###条件3:Elastic Network Adapter(ENA)ドライバがインストールされている
$ 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)
上記のような行が出てきていればOK
ERROR: modinfo: could not find module ena
と出ていればNG
条件2がクリアしていればおそらく問題ないはず
###条件4:インスタンスに拡張ネットワーキングの enaSupport 属性が設定されている
$ aws ec2 describe-instances --instance-ids インスタンスid --query "Reservations[].Instances[].EnaSupport"
[
true ← trueならOK(設定されていない場合は何も出ない)
]
#対象インスタンスを停止した状態で
$ aws ec2 modify-instance-attribute --instance-id インスタンスid --ena-support