雑多なインフラエンジニア日記

技術ブログでっす~

EC2 AZ間のスループット計測 (netperf)

ここ(http://aws.amazon.com/jp/ec2/instance-types/instance-details/)に明確な数値が
書いてないので、インスタンスタイプ毎のAZ間のスループットを計測してみました。


東京リージョンの 1a から 1b、1c に対してnetperfで負荷を掛けています。
(AZはAWSアカウント毎にDC群が異なりますので結果は目安として下さい。)

EIP間の通信ではない&同一VPC内のプライベートネットワーク間の通信を
計測対象としています。

計測方法

・各AZに small、large、xlarge インスタンスを立てて、
netperf -f M -H 対象ホストスループットを計測。
・試行回数は30回とし、平均値を取得。
・負荷掛け側/掛けられる側のインスタンスタイプは同じとする。

スループット計測結果

・単位はMbps、30回の平均値。

1a→1b 1a→1c
small 38.671 39.320
large 108.30 90.698
xlarge 147.40 155.508


多少のブレはありますが、1a→1b、1a→1c ほぼ同等のスループットと考えて
良いかと思います。
上記には載せてないですが、1a→1a間(インスタンスは異なる)も同等の数値
でした。

おおよそ、small 40Mbps、large 100Mbps、xlarge 150Mbps となりました。


netperf導入

http://linux.kororo.jp/cont/tips/netperf.php
http://dminor11th.blogspot.jp/2011/07/netperf.html
上記のサイトではソースインストールしていますが、AmazonLinuxはyumでも
インストール出来ます。

計測ツール (netp.sh)

・使い方
netp.sh 試行回数 IPアドレス

#!/bin/bash

CNT=0
MAX_CNT=$1
MBPS=0
TOTAL=0
SCA=3

MYIP=`ifconfig -a|grep -A1 eth0 | grep "inet addr:" | awk -F ":" '{print $2}' | awk '{print $1}'`
RIP=$2


printf "netperf : ${MYIP} to ${RIP} \n\n"
printf "Count\tMbps\n"

while [ $CNT -lt $MAX_CNT ] ; do

        MBPS=`netperf -f M -H ${RIP} | tail -1 | awk '{print $5}'`
        CNT=`expr $CNT + 1`
        TOTAL=`echo "scale=$SCA ; $TOTAL+$MBPS" | bc`
        AVG=`echo "scale=$SCA ; $TOTAL/$CNT" | bc`

        printf "$CNT\t$MBPS\n"
        sleep 1

        if [ $CNT -eq $MAX_CNT ] ; then
                printf "\n\e[36mAverage $AVG\e[m\n"
        fi

done


実行例 (とりあえずループバックへの負荷掛け)

$ ./netp.sh 5 127.0.0.1
netperf : 10.0.1.100 to 127.0.0.1

Count Mbps
1 1217.79
2 1226.55
3 1224.52
4 1218.00
5 1221.86

Average 1221.744
$



以上です。