2015/02/27

AシリーズとDシリーズ、CPUの性能差


仮想マシンのサイズで、AシリーズとDシリーズ。
CPUのスピードはどれくらい違うのか試してみました。

# CPUスペックは、リージョン間で異なります。また、時系列で変動します。
# 下記は、あくまでも執筆時事点の筆者環境下におけるものです。

公称値は、DシリーズのほうがAシリーズよりも 60% 高速。
http://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/

計測は、筆者がC#で書いた自作アプリで、浮動小数点演算を繰り返すものを使用。
ほぼ、CPUのみに負荷がかかるようにしてあります。

結果、
A1:221 Mega flops
D1:366 Mega flops

366/221 ≒ 1.65

ということで、D1 が A1 よりも、65% 高速でした。浮動小数点演算、しかも特定パターンの演算しかしていませんので、たまたま、かもしれませんが、ほぼ公称値どおりです。

仮想マシンを、いったん D1 で作ってから、A1 にサイズ変更すると、D1 と A1 とで同じプロセッサが仮想マシンから見えます。今回、筆者が試した環境で、Azure上の仮想マシンから見えたCPUは、D1、A1 ともにコレでした。全部のタブをくまなく比較しましたが、すべて同じでした。


同じプロセッサですが、D1 と A1 とで「仮想マシンとしては」サービス規定に沿った性能になっているようです。

2015/02/10

負荷分散セットのルール

負荷分散された受信トラフィックを受信する一連の仮想マシン (負荷分散セットと呼ばれる) は、同じクラウド サービス内に存在する必要がある。

■負荷分散は2種類
パブリック負荷分散:public LoadBalancer:インターネットからの着信用
内部負荷分散:Internal LoadBalancer:Azure IaaS内や、オンプレミスからの着信用

設定するしないに関わらず、
パブリック負荷分散は、Cloud Service にフォルトで装備されている。
内部負荷分散は、Add-AzureInternalLoadBalancer コマンドで、
CloudServiceに対してILB(Internal LoadBalancer)が機能するよう施すことで装備される。Cloud Serviceごとに、内部負荷分散を機能させるか否か、を決められる。

で、その負荷分散セットが、
「パブリック負荷分散」なのか、それとも「内部負荷分散」なのかは、
Add-AzureEndpoint コマンド実行時に決まる


■内部負荷分散の場合
ILB(Internal Load Balancer)に割り当てるIPアドレスは、負荷分散先の仮想マシン「一式」と同じサブネット内にあること。

■再構成
Add-AzureEndpoint
Set-AzureEndpoint
Get-AzureEndpoint
Remove-AzureEndpoint
を使って、仮想マシンひとつひとつを再構成していく。
もしくは、
Set-AzureLoadBalancedEndpoint
で、同じクラウドサービス内のエンドポイントの設定を一括で再構成する。



負荷分散、まとめ
http://taleofazure.blogspot.jp/2015/03/blog-post_4.html

エンドポイントのルール

エンドポイントは、仮想マシンに紐付く。
1つのエンドポイントは、複数の仮想マシンに紐付けることもできる。

■エンドポイントは2種類
スタンドアロン:vNet標準のNATでインターネットから着信したパケットを、仮想マシンにポートフォワーディングする用。
負荷分散:vNet標準の負荷分散セットで着信したパケットを、仮想マシンに負荷分散する用。厳密には、パブリック負荷分散と、内部負荷分散があるが、エンドポイントとしての働きは同じ。

===「スタンドアロン」か「負荷分散」かは、
Add-AzureEndpoint
で仮想マシンにエンドポイントを割り当てる時に決まってしまう。後から変更はできない。変更するには、Remove-AzureEndpoint でいったん削除してから、Add-AzureEndpoint を再度実行する。
-LBSetName (Load Balanced Set Name) オプションが指定されていないと「スタンドアロン」に。指定されていると「負荷分散」になる。

===「パブリック負荷分散」か「内部負荷分散」かは、
-LBSetName オプションが指定されたうえで、
-InternalLoadBalancerName オプションが指定されていないと「パブリック負荷分散」に。指定されていると「内部負荷分散」になる。


■骨格となるパラメータは4つ
Name(エンドポイント名):任意
Protocol:TCP or UDP
PublicPort:上述のNATか負荷分散セットにおける、着信ポート番号
LocalPort:このエンドポイントを設定する仮想マシンで受け付ける、着信ポート番号

※「負荷分散」の場合は、上記に加えてコレも骨格の1つ
LBSetName(負荷分散セット名):任意 今回設定するエンドポイントを、どの負荷分散セットに所属させるかが、ココで決まる。逆説的に言うと、指定されたPublicPortに着信したパケットは、同じ負荷分散セット名に所属しているエンドポイント宛てに負荷分散される。
どのLBSetNameに、どのエンドポイント名が所属しているかは、
===例:Cloud Service Name が web、LBSetName が LBset の場合
> get-azurevm -ServiceName web | Get-AzureEndpoint | Where-Object {$_.LBSetName -eq "LBset"}
=
もしくは、
https://portal.azure.com
の中で確認できる。

■ルール
仮想マシンごとに・・・
エンドポイント名の重複はNG
ProtocolとPublicPortの対、の重複はNG
ProtocolとLocalPortの対、の重複はNG

例えば、
PublicPortで、TCP:80 を着信するエンドポイントは、1つの仮想マシンに1つまで設定できる。
同様に、LocalPortで、TCP:80 を着信するエンドポイントは、1つの仮想マシンに1つまで設定できる。



#EndPoint、LoadBalancer



負荷分散、まとめ
http://taleofazure.blogspot.jp/2015/03/blog-post_4.html