cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

gp2に関するチラ裏な考察です。

OS起動の高速化によるアジリティの強化

AWSの公式発表の中で参考値として以下のような記述があります。

典型的なLinuxの起動にはだいたい7,000 I/O操作が必要で、Windowsの起動には、だいたい70,000のI/O操作が必要でした。Magneticボリュームから同じ容量のGeneral Purpose (SSD)ボリュームにスイッチすることで、Windows 2008 R2の典型的な起動時間はおよそ50%短縮されます。

Googleなどのコンテナ技術による仮想化を行っているクラウドサービスはOSの起動時間が非常に短いです。Dockerなどを試したことがある人はよくご存知でしょう。AWSはXenベースで独自のカスタマイズを施したハイパーバイザーベースの仮想化のうえでOSを起動します。アーキテクチャの根本的な違いはあれど、コンテナベースのサービスとの差を埋める方法としては有効だと思います。

特に、ワークロードの増減に合わせたAuto Scalingを構成している場合、いかに素早く反応してインフラをプロビジョンするかというのが重要なポイントになってきます。

Auto Scalingの動作フェーズは主に以下の3点です。

  • メトリックの取得間隔
  • オートスケール条件発動
  • OS起動時間など

このうち上2つは設定である程度調整が可能ですが、3つ目は設定や運用者ではいかんともしがたい部分なので、ここが短縮されることには大きな意味があると思います。

ディスク作成後の暖機運転(Pre-Warming)はいまだに必要

ツイートにあるとおり、gp2のみならずio1(PIOPS SSD)についてもPre-Warmingは必要です。

以下のようにしてボリュームの全ブロックをReadしないと、5〜50%のパフォーマンスロスがありうるようです。うちの運用でもPIOPSのボリュームを作ったときには必ず一度EBSを洗っています。

gp2もPre-Warmingをすれば、当然I/Oクレジットを消費することになるはずなので、要件によってはPre-Warmingしないで使う(割り切り)か、本番投入よりもだいぶ前(回復時間を見込んだ)の時期にPre-Warmingしておくといったあたりを考えるとよいと思います。

悩んだらどれを選ぶべきか

東京リージョンで100GB、1000GBそれぞれで、gp2、io1で設定した場合の月額料金は以下です。

  • 100GB gp2
    • (バースト)3000IOPS、(ベースライン)300IOPS
    • $12/月
  • 100GB io1
    • 3000IOPS
    • $14.2+$342=$356.2/月
  • 1000GB gp2
    • 3000IOPS固定
    • (バースト)3000IOPS、(ベースライン)300IOPS
    • $120/月
  • 1000GB io1
    • 4000IOPS固定
    • $142+$456=$598/月

はい、判明しました。3000PIOPSの100GB(io1)より3000IOPS Infiniteの1000GB(gp2)のほうがおトクです。
つまり、「迷ったら1TBのgp2を使え」です。

大事なのでもう一度言います。「迷ったら1TBのgp2を使え」

io1は3000IOPS以上が必要な場合以外には不要だと思います。

既存のEBSは「Magnetic」

多分「磁気ハードディスク」という意味。

元記事はこちら