お名前.com VPSへ移転 その3: ベンチマーク

測定

前回はお名前.com VPSをDebian 7に初期化しました。これからいろいろセットアップしなければいけませんが、その前にちょっとベンチマークを行って以前使っていたServersMan@VPS (Standardプラン)と比較してみたいと思います。

なお、ServersMan@VPS時代のベンチマークは下記で見ることができます。今回は64bit同士の比較を行います。

ServersMan@VPSを64bitに変更 その5: ベンチマークで比較
今回は32bit版DebianをインストールしたServersMan@VPSと、64bit版DebianをインストールしたServersMan@VPSを比較してみます。 ベンチマークによって傾向は違いますが、おおむね64bit版のほうがスコアが良いようです。これからセットアップするならば64bit OSがお勧めです。

ServersMan@VPSは月額934円のStandardプラン(メモリ2GB, HDD 100GB)で、お名前.com VPSは月額1315円のメモリ2GBプラン(メモリ2GB, CPU 3コア, HDD 200GB)です。

bonnie++: ハードディスク性能

まずはハードディスクの性能をbonnie++というツールで測定してみます。実行したコマンドは

bonnie++ -q > 記録用ファイル.csv

になります。

測定結果は次の通りです。性能が良いほうを青い背景としておきました。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
スループット
(K/sec)
レイテンシ
(us)
スループット
(K/sec)
レイテンシ
(us)
スループット
(K/sec)
レイテンシ
(us)
シーケンシャル
アウトプット
キャラクタ単位 633 27,096 657 19,539 672 23,178
ブロック単位 146,415 454,000 264,862 243,000 278,811 85,515
ブロック単位
(再書き込み)
144,196 728,000 79,097 390,000 57,934 183,000
シーケンシャル
インプット
キャラクタ単位 2,896 3,877 3,938 66,323 3,929 66,300
ブロック単位 4,141,704 1,460 158,433 117,000 176,419 119,000
ランダムシーク 6.519 6,763 1.017 174,000 0.277 5,182,000
シーケンシャル
クリエイト
クリエイト 196 7,113 17,683
リード 488 636 549
デリート 6,581 1,166 1,196
ランダム
クリエイト
クリエイト 5,067 499 389
リード 113 104 51
デリート 7,389 1,123 722

もっと大差でお名前.com VPSのほうが勝つのではないかと思いましたが、勝ち負けの数は意外と拮抗しています。シーケンシャルインプットとランダムシークに関しては差がありすぎるため、ServersMan@VPSの測定時に記録間違えをしたのかもしれません。

またVirtioのON/OFFでも明確な差が出ませんでした。わずかにVirtio OFFのほうが優勢ですが明確な差があるようにも思えません。Virtio ONのほうが有利かと思っていたのですが、予想外でした。マルチスレッドを活用するベンチマークだと差が出るのかもしれません。

なお、何回か測定したのですが、大体上記のような傾向を示すものの、かなり数値のブレがありました。VPSはリソースを共有しているので仕方ないところもありますが、RAMディスクなどを使ってディスクの読み書きは減らすことを考えた方がよさそうです。

dbench: ハードディスク性能

つづいてdbenchというソフトでもハードディスク性能を測定してみます。実行したコマンドは

dbench スレッド数 -t 60 > 記録用ファイル.txt

となります。スレッド数を1, 2, 4, 8, 16と変えて試してみました。

結果は次の通りです。今回もスコアが良いほうを青い背景にしています。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio ON)
お名前.com VPS
64bit Debian
(Virtio OFF)
スループット
(MB/sec)
MAXレイテンシ
(ms)
スループット
(MB/sec)
MAXレイテンシ
(ms)
スループット
(MB/sec)
MAXレイテンシ
(ms)
1 スレッド 12.2828 205.874 203.468 109.789 144.021 104.780
2 スレッド 12.7204 397.215 338.866 179.441 195.09 125.548
4 スレッド 12.4459 598.216 557.197 95.768 287.463 244.282
8 スレッド 12.0671 1001.563 722.040 371.383 409.607 510.660
16 スレッド 12.7201 2298.850 777.967 447.950 526.246 311.759

このベンチマークでは全項目でお名前.com VPSの圧勝でした。

Virtio ON/OFFではVirtio ONのほうが高速なようです。MAXレイテンシに関しては一部逆転しています。MAXレイテンシはあくまでもMAXなので、共有している他のVPSの動き次第で大きくぶれるので、参考程度に考えてよいと思います。

mbw: メモリ性能

メモリの性能はmbwというソフトで試してみました。実行したコマンドは

mbw 256 > 記録用ファイル.txt

となります。256MBのデータを使ってデータコピーを行いスループットを測定します。

結果は次の通りです。今回もスコアが良いほうを青い背景にしています。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
スループット
(MB/sec)
スループット
(MB/sec)
スループット
(MB/sec)
MEMCPY 3108.837 3169.863 3133.706
DUMB 3852.283 3564.740 3590.463
MCBLOCK 5860.618 4981.688 4848.320

こちらは2勝1敗でServerMan@VPSのほうが有利となりました。

メモリ性能なのでVirtio ON/OFFは特に影響がないようです。

sysbench: 総合テスト

最後にsysbenchという総合ベンチマークソフトを使って性能を測定してみます。sysbenchはテスト項目が「cpu」「threads」「mutex」「fileio」「oltp(データベース)」が選択できます。

ServerMan@VPSのときにmutexの測定結果を忘れてしまったので、それ以外の結果を紹介します。

測定結果に標準偏差という見慣れない数値が出てきますが、これは測定結果にどれだけのブレがあったかを示す数値です。小さいほうが安定しているということができます。

CPU

sysbenchの説明によれば素数の演算を行うことにより測定するようです。実行したコマンドは

sysbench --test=cpu --num-threads=スレッド数 run > 記録用ファイル.txt

となります。スレッド数は1,2,4,8,16と変化させました。スレッド数を増やすことによりスケジューラの性能も評価できるようです。

結果は次の通りです。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
平均処理時間 標準偏差 平均処理時間 標準偏差 平均処理時間 標準偏差
1 スレッド 11.5792 0.00 12.1561 0.00 12.1703 0.00
2 スレッド 11.6485 0.00 6.1630 0.00 6.1245 0.00
4 スレッド 11.7739 0.00 4.0717 0.00 4.0798 0.00
8 スレッド 11.6937 0.02 4.0813 0.01 4.0784 0.001
16 スレッド 11.6622 0.01 4.0681 0.01 4.0703 0.02

このベンチマークでは明らかに1スレッド以外ではお名前.com VPSのほうが圧勝です。CPU性能については明らかにお名前.com VPSのほうに分があるようです。

VirtioのON/OFFについては誤差とみてよいと思います。このテストはCPUのベンチマークなので、VirtioのON/OFFでは差がつかないものと思います。

マルチスレッド

sysbenchの説明によればスケジューラのパフォーマンスを測定するために作られたテストとのことです。実行するコマンドは

sysbench --num-threads=スレッド数 --test=threads run > 記録用ファイル.txt

になります。スレッド数は1,2,4,8,16,32,64,128と変化させて行いました。

結果は次の通りです。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
平均処理時間 標準偏差 平均処理時間 標準偏差 平均処理時間 標準偏差
1 スレッド 3.6137 0.00 2.7124 0.00 2.6815 0.00
2 スレッド 4.1027 0.01 2.4271 0.00 1.7252 0.00
4 スレッド 6.6482 0.00 1.7948 0.00 1.9127 0.00
8 スレッド 10.5921 0.01 3.4392 0.00 3.3228 0.00
16 スレッド 15.0340 0.01 4.7680 0.01 4.2493 0.01
32 スレッド 15.0878 0.01 5.7740 0.01 5.5425 0.01
64 スレッド 10.5383 0.02 4.6216 0.02 4.4655 0.02
128 スレッド 8.9653 0.06 4.0160 0.01 3.6089 0.02

このベンチマークでは全項目でお名前.com VPSの圧勝です。体感できるぐらいが出るのではないかと思います。

また、お名前.com VPSでのVirtio ONとOFFではVirtio OFFのほうがわずかに有利な状況です。誤差というレベルだとおもますが、その割にはVirtio OFFのほうが微妙に良いので、実際に差があるのかもしれません。

ファイルI/O

sysbenchはファイルI/Oに関してはシーケンシャルとランダムでそれぞれ読み込み・書き込み・読み書きの3パターン、合計6パターンの測定を行うことができます。今回は時間がないのでランダムの読み書きのみ測定してみました。実行したコマンドは

sysbench --test=fileio --file-test-mode=rndrw prepare
sysbench --test=fileio --file-test-mode=rndrw --num-threads=スレッド数 run > 記録用ファイル.txt
sysbench --test=fileio --file-test-mode=rndrw cleanup

になります。スレッド数は1,2,4,6,16と変化させて行いました。

結果は次の通りです。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
平均処理時間 標準偏差 平均処理時間 標準偏差 平均処理時間 標準偏差
1 スレッド 0.1252 0.00 0.0701 0.00 0.0713 0.00
2 スレッド 0.1026 0.02 0.0420 0.00 0.0529 0.00
4 スレッド 0.2193 0.13 0.0330 0.00 0.0355 0.01
8 スレッド 0.5252 0.25 0.0327 0.01 0.0214 0.01
16 スレッド 1.1886 0.44 0.0598 0.05 0.0104 0.00

このベンチマークでも全項目でお名前.com VPSのほうが有利です。

興味深いのはお名前.com VPSでのVirtio ONとOFFの違いです。スレッド数が多くなるとVirtio OFFのほうが有利のようです。これは意外な結果でした。

データベース(MySQL)

最後にデータベースの速度比較です。sysbenchによると単純な検索のほかに複数の処理を組み合わせたトランザクションなどの処理を行っているとのことです。

このベンチマークを行う前にテスト用のデータベースを作成しておく必要があります。これはルートでMySQLに接続して行います

mysql -u root -p
(rootのパスワードを入力)
mysql> CREATE DATABASE benchmark;
mysql> GRANT ALL ON benchmark.* to benchmark@localhost;
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR benchmark@localhost=password('benchmark');

テスト用のデータベースの名前はbenchmarkとして作成し、パスワードもbenchmarkとしておきます。

準備が整ったらsysbenchを実行します。

sysbench --test=oltp --mysql-table-engine=myisam --mysql-user=benchmark --mysql-password=benchmark --mysql-db=benchmark --oltp-table-size=1000000 prepare
sysbench --test=oltp --mysql-table-engine=myisam --mysql-user=benchmark --mysql-password=benchmark --mysql-db=benchmark --oltp-table-size=1000000 --num-threads=スレッド数 run > 記録用ファイル.txt
sysbench --test=oltp --mysql-table-engine=myisam --mysql-user=benchmark --mysql-password=benchmark --mysql-db=benchmark --oltp-table-size=1000000 cleanup

スレッド数は1,2,4,8,16と変化させて行いました。

結果は次の通りです。

ServersMan@VPS
64bit Debian
お名前.com VPS
64bit Debian
(Virtio: ON)
お名前.com VPS
64bit Debian
(Virtio: OFF)
平均処理時間 標準偏差 平均処理時間 標準偏差 平均処理時間 標準偏差
1 スレッド 36.5568 0.00 21.0473 0.00 21.5491 0.00
2 スレッド 36.9384 0.00 23.0392 0.00 23.2765 0.00
4 スレッド 36.4490 0.00 23.4389 0.00 23.6088 0.00
8 スレッド 38.0488 0.01 22.7548 0.01 23.7763 0.01
16 スレッド 37.4087 0.02 22.6705 0.01 22.9317 0.01

このベンチマークでもお名前.com VPSの圧勝です。Virtio ONとOFFでは常にVirtio ONのほうが早かったですが、差は微々たるものです。どちらを使うか難しいところです。

まとめ

今回は新たにセットアップしたお名前.com VPSと従来使っていたServersMan@VPSを各種ベンチマークテストで比較しました。

ベンチマークテストにより若干のブレはあるものの、全体を通してお名前.com VPSのほうが性能が高い数値が出ています。WordPressでサイトを構築したときにどのような差が出るのか興味があるところです。

なお、お名前.com VPSでVirtioをONにしたときとOFFにしたときについては、差があるのかないのかよくわかりません。LinuxのようにVirtioに対応しているOSを動かす場合は、VirtioをONにすることが推奨のようなので、とりあえずONにして運用したいと思います。

次回からはこのお名前.com VPSの環境構築をしていきたいと思います。