読者です 読者をやめる 読者になる 読者になる

電子計算記

個人的な検証を

IDCFクラウドオブストでs4cmd

IDCF Cloud Advent Calendar 2016 の12/5が空いていたので個人的に責任(?)をとって埋めておきますね。

IDCFクラウドのオブジェクトストレージ(以下オブスト)に、s3cmd使ってデータをやり取り、遅いですよね、嫌になっちゃいますよね。
実はオブストに並列にアクセスできればもっともっと速くなります。

ここにs4cmdというスレッド対応した素晴らしいツールがあります。
github.com

中身はbotoを使ってるんですが、AWS S3用にガリっとエンドポイントが書かれてるので、そこを修正してあげればオブストでも利用できます。

Ubuntuで入れた場合だと具体的には

/usr/local/lib/python2.7/dist-packages/botocore/utils.py 
/usr/local/lib/python2.7/dist-packages/botocore/data/endpoints.json

の2つです。

では早速、s3cmdとs4cmdで性能比較してみましょう。
テストファイルとして以下用意しました。

10MByteのバイナリファイル10個、
1MByteのバイナリファイル10個、
100KByteのバイナリファイル10個、
1KByteのバイナリファイル10個、
合計40個、112MByte。

次のように実行して、timeコマンドのreal timeの値で比較すると

$ time s3cmd sync ./testdata/ s3://cmdtest/testdata/
$ time s4cmd sync ./testdata/ s3://cmdtest/testdata/

s3cmd sync は10秒
s4cmd sync は1秒
でした。

試してみる価値ありそうですよね。
もしさくっと試してみたい場合は「IDCFCloud CLI toolset on Ubuntu」というコミュニティテンプレートを作ったのでそちらからどうぞ。


以上、アドカレまだ日にち空いてますので、是非埋めてください!

2500Base-Xをベンチマーク

前回のとおり、2500Base-Xをベンチマークしていきましょう。

ScalewayのC2Sタイプを2台作成、OSはUbuntu14.04。
2台間をプライベートIPで通信し、内部通信とします。

最近私は、ネットワークのベンチマークツールiperf3をよく使いますが、
Ubuntu14.04には標準パッケージにないので、iPerfオフィシャルのdebパッケージを利用。

# wget https://iperf.fr/download/iperf_3.1/iperf3_3.1.2-1_amd64.deb
# wget https://iperf.fr/download/iperf_3.1/libiperf0_3.1.2-1_amd64.deb
# dpkg -i libiperf0_3.1.2-1_amd64.deb iperf3_3.1.2-1_amd64.deb 

2台目(10.1.70.155)をサーバーとして実行。

# iperf3 -s

まずはTCPで、帯域を測りましょう。
1台目(10.1.69.243)をクライアントとして以下実行。

# iperf3 -c 10.1.70.155
Connecting to host 10.1.70.155, port 5201
[  4] local 10.1.69.243 port 48520 connected to 10.1.70.155 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   282 MBytes  2.37 Gbits/sec    0    675 KBytes       
[  4]   1.00-2.00   sec   281 MBytes  2.35 Gbits/sec   44    624 KBytes       
[  4]   2.00-3.00   sec   280 MBytes  2.35 Gbits/sec    0    638 KBytes       
[  4]   3.00-4.00   sec   280 MBytes  2.35 Gbits/sec    0    648 KBytes       
[  4]   4.00-5.00   sec   281 MBytes  2.36 Gbits/sec    0    648 KBytes       
[  4]   5.00-6.00   sec   281 MBytes  2.35 Gbits/sec    0    650 KBytes       
[  4]   6.00-7.00   sec   280 MBytes  2.35 Gbits/sec    2    634 KBytes       
[  4]   7.00-8.00   sec   280 MBytes  2.35 Gbits/sec    0    648 KBytes       
[  4]   8.00-9.00   sec   281 MBytes  2.36 Gbits/sec    0    655 KBytes       
[  4]   9.00-10.00  sec   280 MBytes  2.35 Gbits/sec    2    649 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec   48             sender
[  4]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec                  receiver

iperf Done.

2.35Gbps出ている。
ほぼほぼ2.5Gbps使いきれてる様子。すごいちゃんと帯域出るのか。

次にUDPで、pps処理性能を測りましょう。

# iperf3 -u -b 0 -l 64 -c 10.1.70.155
Connecting to host 10.1.70.155, port 5201
[  4] local 10.1.69.243 port 42226 connected to 10.1.70.155 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  14.0 MBytes   117 Mbits/sec  228730  
[  4]   1.00-2.00   sec  13.9 MBytes   117 Mbits/sec  228370  
[  4]   2.00-3.00   sec  14.0 MBytes   117 Mbits/sec  228660  
[  4]   3.00-4.00   sec  13.9 MBytes   117 Mbits/sec  227960  
[  4]   4.00-5.00   sec  13.9 MBytes   117 Mbits/sec  227810  
[  4]   5.00-6.00   sec  13.9 MBytes   117 Mbits/sec  228080  
[  4]   6.00-7.00   sec  13.9 MBytes   117 Mbits/sec  227740  
[  4]   7.00-8.00   sec  13.9 MBytes   117 Mbits/sec  227770  
[  4]   8.00-9.00   sec  13.9 MBytes   117 Mbits/sec  227940  
[  4]   9.00-10.00  sec  13.9 MBytes   117 Mbits/sec  227820  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   139 MBytes   117 Mbits/sec  0.003 ms  1875/2280861 (0.082%)  
[  4] Sent 2280861 datagrams

iperf Done.

だいたい22万pps、
10G NICには及ばないとしてもまずまずの性能は出ているんじゃないでしょうか。

2.5G NICとしては、ちゃんと性能も出てるし十分だけど、
10G NICが安くなってきた今、2.5Gの費用感がぜんぜんわからないので何とも。。。

でも、やっぱりScaleway良いなー、ハードウェア的にいつもおもしろい。

2500Base-Xって何だ?

C2タイプがリリースされたScalewayですが、そのリリース時のブログを見ると

we're introducing next generation 2500Base-X networking as a standard feature

とのことで、ネットワークは2500Base-Xを使ってるようですが、2500Base-Xて初耳でした。
内部通信なら2.5Gbps出るとのこと。

今回はこいつを調べてみた。
せっかくのベアメタルですからハードウェア情報さらりと見れるだろうし。

Ubuntu14.04のC2Sでサーバー作成。中を見ていきましょう。

# apt-get install ethtool -y
# ethtool eth0
Settings for eth0:
	Supported ports: [ FIBRE ]
	Supported link modes:   2500baseX/Full 
	Supported pause frame use: Symmetric
	Supports auto-negotiation: Yes
	Advertised link modes:  2500baseX/Full 
	Advertised pause frame use: Symmetric
	Advertised auto-negotiation: Yes
	Speed: 2500Mb/s
	Duplex: Full
	Port: FIBRE
	PHYAD: 0
	Transceiver: external
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: g
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

おお、ホントに2500baseXと出てくる、しかも速度も2500Mb/sとあるし。
ポートは、ファイバーとあるので、2.5GBASE-Tではない様子。
ドライバはどうなってるか見てみると、

# ethtool -i eth0
driver: igb
version: 5.3.0-k
firmware-version: 0.0.0
bus-info: 0000:00:14.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

igb!
なんとIntel NICですか、Intelが出していれば、それなりに知名度あると思ったけど、そんな存在知らなかった。
ハードウェアの情報をもう少し見てみる。

# apt-get install lshw -y
# lshw -c network
  *-network               
       description: Ethernet interface
       product: Ethernet Connection I354 2.5 GbE Backplane
       vendor: Intel Corporation
       physical id: 14
       bus info: pci@0000:00:14.0
       logical name: eth0
       version: 03
       serial: 00:07:cb:03:98:8c
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical fibre autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.3.0-k duplex=full firmware=0.0.0 ip=10.1.71.39 latency=0 link=yes multicast=yes port=fibre
       resources: irq:0 memory:80000000-8001ffff ioport:1040(size=32) memory:80020000-80023fff

IntelのI354、初耳。バックプレーンとあるので、シャーシに組み込まれてるのか。
独自デザインと言う実機の写真見ても、集積型だから、こういった用途向けに出荷してるんだろうね。

igbのドライバのREADMEには、

The igb driver supports 2.5 Gbps operating speed on 2500BASE-KX only for I354-based network connections.

とあり、2500BASE-KXとありKXなので、やはりバックプレーンでの実装なのでしょう。

では、次回はホントに2.5Gbps出るかベンチマーク

ScalewayとRunAbove、海外の格安クラウドが熱い

ScalewayのARMサーバの在庫切れが復活、
併せてC2タイプがリリース、でもC2はARMではなくなりIntel Atomに。
ARMだから良かったのに。。。

一方で、Raspberry Pi3は、64bit ARM採用。
でも、Raspbianは未だに32bitのまま。。。

どれもパッとしないなか、
RunAbove ARM CloudがAlphaからBetaに更新。
やっとアカウントをアクティベートできたので、
今回はRunAboveとScalewayを比べてみましょう。

月額 CPUコア数 Memory GB Volume GB Arch 仮想化
Scaleway C1 €2.99 4 2 50 armv7l ベアメタル
Scaleway VC1 €2.99 2 2 50 x86_64 KVM
Scaleway C2S €11.99 4 8 50 x86_64 ベアメタル
RunAbove VPS-ARM1 $1.13 1 2 10 aarch64 KVM
RunAbove VPS-ARM2 $5.65 4 8 20 aarch64 KVM
RunAbove VPS-ARM3 $16.97 12 24 30 aarch64 KVM

実験価格とは言えVPS-ARM1が安過ぎでしょう。
そして、クラウドで64bit ARMが使える時代に!

では、OSをUbuntu 14.04に揃えて性能比較です。
では定番のUnixBenchから。スコアが大きい方が速い。

UnixBench Single UnixBench Multi
Scaleway C1 262.0 697.4
Scaleway VC1 671.8 1238.1
Scaleway C2S 872.7 2065.0
RunAbove VPS-ARM1 469.3 -
RunAbove VPS-ARM2 351.7 1097.6
RunAbove VPS-ARM3 370.1 1457.9

1コアあたりの性能はそうでもないですが、やはり4コア揃うと速いです。
では、もう少し見ていきましょう。処理時間なので、スコアが小さい方が速い。

qn24b N=17 sec gcc build 7-zip sec
Scaleway C1 32.895 72.65
Scaleway VC1 32.403 56.09
Scaleway C2S 16.202 28.08
RunAbove VPS-ARM1 82.376 120.30
RunAbove VPS-ARM2 21.697 31.55
RunAbove VPS-ARM3 7.024 11.66

ScalewayのC1とVC1で同じ値段なのに、約2倍の性能、Avotonさすがですね。
ARMが安いと言われてるのにそれを越えてくる、ScalewayがCPU変えてきたのにも納得です。

同じ4コアのScaleway C1とRunAbove VPS-ARM2で比べると、
VPS-ARM2の方が値段相応かそれ以上に速いですね。
この勢いで64bit ARMはやらないかなー。

俺のラズパイ2がこんなに遅いわけがない

Scalewayとの比較にあたり、同じARMということでRaspberry Pi 2 Model Bとベンチマーク
俺のラズパイ2でUnixBenchを実行すると、自分が計測したスコアと、他のサイトに載ってるスコアが違う。

こちらのスコアは、1並列で約120、4並列で約300。 Link
他のサイトのスコアは、1並列で約170、4並列で約440。

誤差の範囲ではなさそうということで調べてみたときの流れ。


1) OSの差を確認
UnixBenchはOSによってもスコアが変わってきます。
可能ならOSもバージョンも揃えたい。

他のサイトを見ると、具体的に何のOS使ってるか明示されてなかったりもするけど
UnixBenchの結果に載ってる情報だと、Linuxカーネルのバージョンは
3.18.6-v7+
3.18.7-v7+
3.18.8-v7+
とあり、Raspbian 7 (wheezy)あたりでしょう。
エントリの日時見ても8 (jessie)ではなさそう。

ちなみにこちらは、

pi@raspberrypi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

Raspbian7の3.18.11-v7+、
メンテナンスバージョンが多少違いますが、このくらいであればスコアには影響でなさそう。
次へ。


2) オーバークロック/クロックダウンを確認
Raspberry Piでは、CPUの動作クロックを変更することができます。
知らず知らずのウチに定格から落としていたのなと。
次のように変更できます。

pi@raspberrypi ~ $ sudo raspi-config

でコンフィグを開き、
「7 Overclock」
を選択し、定格の
「Medium 900MHz ARM, 250MHz core, 450MHz SDRAM, 2 overvolt」
を選択し、再起動。

結果、遅いまま変わらず。
クロックアップ
「Pi2 1000MHz ARM, 500MHz core, 500MHz SDRAM, 2 overvolt」
して実行、それでもスコアは遅いまま変わらず。
クロックが影響しないとなるとアレですね。


3) 電源不足を確認
クロック変えてもスコアが変わらないとなると電源の問題だなあと。
USB電流&電圧チェッカー使って確認。

f:id:fujish:20151215225700j:plain

問題なさそう。
給電には、Owltech OWL-ACUS4を使ってましたが、
故障を疑ってGen Andru USB Chargerに変更。
それでも結果変わらず。


4) ラズパイの故障を確認
これはもうRaspberry Pi自体が故障しているのではないかと。
久しぶりに起動してるし、結構初期の頃に買ったものだし。
なので、もう1枚買ってきた。

・・・結果変わらず。



5) OSの中身の問題
ハードウェア周りが問題ないとなるとOSの中の方の問題というわけで。
まずは、動作クロックを疑ってみた。

pi@raspberrypi ~ $ lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
pi@raspberrypi ~ $ cat /proc/cpuinfo 
processor	: 0
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 57.60
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 5

processor	: 1
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 57.60
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 5

processor	: 2
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 57.60
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 5

processor	: 3
model name	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 57.60
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 5

Hardware	: BCM2709
Revision	: a01041
Serial		: 00000000ae0b8681

クロックは出てこないようなので別方法で。

pi@raspberrypi ~ $ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
600000

なんと600 MHz!定格は900 MHzのはず。
つまり、CPUの省電力機能が動いているわけで。

pi@raspberrypi ~ $ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
powersave
pi@raspberrypi ~ $ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
conservative ondemand userspace powersave performance 

やっぱり、powersaveになってる。performanceに変えてやろう。

pi@raspberrypi ~ $ sudo apt-get install cpufrequtils -y
pi@raspberrypi ~ $ sudo cpufreq-set -g performance
pi@raspberrypi ~ $ cpufreq-info

cpufreq-infoで、current policyがperformanceになっていて、
current CPU frequencyが900 MHzになっていれば成功。

この状態で実行。
本来のスコアが出たよ! Link

知らなかった、Raspberry Pi 2のCPUからは、クロック可変だったの。
ARMとARM Linuxも進んでますねー。

ipaddr.showをアップデート

ipaddr.show、自分のIPがわかるだけだと面白くないので少しアップデートしました。

自分がアクセスしてるグローバルIPが知りたいなら

$ curl ipaddr.show
126.70.251.117
$

といった感じででてきますが、CUIで操作してると改行いらないということもありますよね。
そのときは「n」オプションをつけてみてください。

$ curl ipaddr.show/n
126.70.251.117$


あとは、IPじゃなくてホスト名(FQDN)が知りたいとき。

$ curl ipaddr.show/host
softbank126070251117.bbtec.net


他にはソースのポート番号とユーザーエージェントも。

$ curl ipaddr.show/port
52105
$ curl ipaddr.show/ua
curl/7.43.0


今回追加したものも改行消せます、「n」を先につけてください。

$ curl ipaddr.show/n/host
softbank126070251117.bbtec.net$ 


この手の自分のグローバルIP見える系のサイトだと、ブラウザでグラフィカルに表示できたり、リファラとか他にも色々な情報とれますが、こんな感じで自分が使いそうなものだけ実装しました。

以上、自宅からYahoo!BB経由の実行例でお届けしました。

Scalewayの性能を見てみる:クラウド/VPSと比較

時間空きましたが、Scalwayの続き。
今回は性能を見ていきましょう。

Scalewayと比較するなら、DigitalOceanとかVultrみたいな海外の格安VPSとかなと思ったのですが、時間かかりそうなのでさくっと普段使いのDTI ServersMan@VPSIDCFクラウドで比較してみましょう。

月額 円 CPUコア数 Memory GB Volume GB
Scaleway C1 400 4 2 50
IDCFクラウド light.S1 500 1 1 15
DTI ServersMan@VPS Entry 467 2 1 50


Scalewayは月額で2.99ユーロです。私のカードの明細を見ると、9月分が415円、10月分が400円でした。
カードの手数料とレートを考えても安いですね。

OSは3つともUbuntu 14.04にして比較しました。
では定番のUnixBenchから。スコアが大きい方が速い。

UnixBench Single UnixBench Multi
Scaleway C1 262.0 697.4
IDCFクラウド light.S1 348.3 -
DTI ServersMan@VPS Entry 84.7 90.5


1コアあたりの性能はそうでもないですが、やはり4コア揃うと速いです。
では、もう少し見ていきましょう。処理時間なので、スコアが小さい方が速い。

qn24b N=17 sec gcc build 7-zip sec
Scaleway C1 32.895 72.65
IDCFクラウド light.S1 144.787 155.74
DTI ServersMan@VPS Entry 264.367 344.00

やはり変わらず速いですね。
マルチコアが活用できるなら、Scalewayは最高のコスパになるのではないでしょうか。
ただし、ARMプロセッサなのが注意点ですかね。