Azure サポートに B-Series の core 申請を投げていたのが通ったので、前回の続きとして実際に B-Series VM を作成して調べてみることにします。
基本的な B-Series と t2 に関する違いは前回のエントリを見てください。
まずは個人的に AWS でよく使っている t2.small と同じサイズの B1ms の VM を作ります。
プレビュー中ですが、1 時間当たりの金額はかなり安いです。コスパが非常に高いです。
作成した B-Series VM の CPU クレジットは Azure Monitor から 1 分間隔で確認できるようになっていました。CloudWatch は 5 分だった気がするので、Azure のが少し細かいですね。
CPU クレジットとは
まだ Azure の公式ドキュメントには CPU クレジットについては言及がないので、AWS t2 インスタンスの方を読んだ方がいいかも知れません。考え方はほぼ同じになっているはずです。
CPU クレジットとは何ですか。
1 個の CPU クレジットは、1 台の vCPU を使用率 100% で 1 分間実行することに相当します。たとえば、1 台の vCPU を使用率 50% で 2 分間実行したり、2 台の vCPU を使用率 25% で 2 分間実行したりなど、他の vCPU、使用率、時間の組み合わせでも、1 個の CPU クレジットに相当します。
T2 インスタンス - Amazon Elastic Compute Cloud
t2 と同じように複数の vCPU がある場合には少し計算が分かりにくいかも知れません。
バーストと CPU クレジットの使用
B1ms はベースラインパフォーマンスが 20% ですが、CPU クレジットが残っている場合には 100% まで利用することが出来ます。実際に負荷を掛けてみると 100% まで問題なく使われます。
Azure Monitor で CPU クレジットを確認すると、CPU クレジットが消費されていることが分かります。
何故か 1 vCPU を 100% 使用しても、CPU クレジットは 0.5 しか消費されませんでした。これは B-Series の不具合っぽいので、質問を投げていますがよくわかりません。追記:直ってました。
ちなみに Azure Monitor 上は CPU 使用率も 50% になっていました。明らかにおかしいですね。
ベースラインパフォーマンスの確認
今は CPU クレジットの消費が何故か半分になっているので、なかなか CPU クレジットを消費しきれませんでしたが、数時間かけて何とかクレジットを使い切ることが出来ました。
しかし、CPU クレジットが完全に 0 になることはありませんでした。
そしてベースラインパフォーマンスにまで落とされていても、タスクマネージャー上は 100% のままになります。正しい値を読み取るには Azure Monitor から参照する必要があります。
ベースラインパフォーマンスが 20% とはいえ、ハイパーバイザによって 20% きっちりに上限が設定されるわけではないみたいです。平均値が 20% になるように調整されているように見えます。
とはいえ、Azure Monitor の値に不安があるので再検証が必要な気もします。
VM の再起動と CPU クレジット
t2 インスタンスは VM を再起動すると貯まっていた CPU クレジットが初期化されるようになってますが、Azure B-Series でも同様の挙動となっています。
たまたま何故かインスタンスが再起動した結果、Azure Monitor の値にその痕跡がありました。
CPU クレジットが 30 を下回っていましたが、再起動後には 30 に戻っていることが分かります。この挙動を知らないと不具合かと思ってしまいそうですが、多分これは意図した動作です。
逆に CPU クレジットが初期クレジット以上に貯まっていても、再起動で初期化されています。
インスタンスサイズと初期 CPU クレジット
Azure のドキュメントには初期 CPU クレジットが記載されておらず、Twitter ではいろいろと話が飛び交ってましたが、実際に別のインスタンスサイズで作って確認します。
申請時に 8 cores しか要求しなかったので、仕方なく Standard B4ms を作りました。
4 vCPU と 16GB メモリの仮想マシンがプレビュー中は 7000 円程、GA になっても 14000 円程で使えるのは非常に嬉しいですね。本当にもう A-Series VM は要らないです。
Azure Monitor で確認すると、120 CPU クレジットが与えられていました。つまり 1 vCPU あたり 30 CPU クレジットが予め与えられるようです。
このあたりの仕様も AWS の t2 インスタンスと同じようなので、ある意味予想通りという感じです。
気になる部分については確認しましたが、バースト周りの仕様については t2 と同じようです。ただし Azure B-Series はストレージパフォーマンスにも言及されてるので、そこは注意したいです。
追記:CPU クレジットの消費が直ってました
起動したまま放置していた 1 vCPU を持った B-Series インスタンスがあったので、久し振りに負荷を目いっぱいかけてみたところ、正しく CPU クレジットが消費されるようになっていました。
以前は CPU 使用率が 100% であっても、CPU クレジットは 0.5 しか消費されていませんでしたが、今は正しくほぼ 1 が消費されていることが確認できます。
これまでは 0.5 CPU クレジットしか消費されなかったので、ある意味お得ではあったのですが、ちゃんと Azure Monitor で正しい値が確認出来るようになって良かったです。