すでにお気づきの方も多いと思われますが、
microインスタンスってCPU弱いですよねー。
でも、以下を見ると
「スモールインスタンスと同等」もしくは「バーストとかあるからむしろ速くなるんじゃね?」
と勘違いしがち。
スモール インスタンス(デフォルト)
http://aws.amazon.com/jp/ec2/instance-types/
1 EC2 Compute Unit (1 EC2 Compute Unitを有する1仮想コア)
マイクロインスタンス
最大2 EC2 Compute Units (短期の定期的なバースト)
しかし、あきらかに
マイクロインスタンスのCPUはスモールインスタンスより遅い
です。
特に、CPUを長時間占有するmakeなどはかなり顕著に違いが出ます。
さらによく見ると以下のようなことが書いてありますね。
マイクロインスタンスは、少量の整合性のあるCPUリソースを提供し、他のサイクルが可能になると、CPU容量をバーストできます。定期的にかなりの計算サイクルを消費する、少量のスループットアプリケーションやウェブサイトに最適です。マイクロンスタンスは、定常状態では、スモールインスタンスが実行するコンピュートリソースの一部を受け取ります。したがって、莫大な計算量や定常状態を必要とするアプリケーションには、スモール インスタンス(または、必要に応じてより大きいもの)の使用をお勧めします。しかしマイクロ インスタンスは、2 ECU まで定期的にバーストすることができます (短期間)。これは、スタンダード スモール インスタンスで利用可能な ECU の2倍に相当します。したがって、時折著しいコンピュートサイクルの消費を必要とする比較的低いスループットのアプリケーションやウェブサイトには、マイクロ インスタンスの使用をお勧めします。
http://aws.amazon.com/jp/ec2/instance-types/
ほほー、マイクロインスタンスのCPUリソースは
スモールインスタンスが実行するコンピュータリソースの一部を受け取る、
と書いてありますね。
どうもこのあたりが怪しい。
どのくらい性能が違うのか
試してみました。*1
とあるインスタンスにmuninエージェントを置いて、2台のサーバを監視しています。*2
muninはデフォルトで5分おきに静的にグラフを生成しますが、その時に負荷が高くなっているようです*3。
CPUグラフは以下のようになりました。
左側がmicroインスタンスで実行している時。
右端のほうは途中でsmallインスタンスに変更したときのグラフです。
microインスタンスには血の雨が…!
この赤い部分はstealという値。
ゲストOSが「リソースくれくれ」といってるのにホストOSが「やあよやあよ」って言ってる割合らしいです。
http://www.atmarkit.co.jp/flinux/rensai/xen05/xen05b.html
ちなみにLoadAverageはこんな感じ。
同じくmicroインスタンス(左側)とsmallインスタンス(右側)。*4
10倍くらい違いますね。