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

測定

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

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

今回は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)
シーケンシャル
アウトプット
キャラクタ単位63327,09665719,53967223,178
ブロック単位146,415454,000264,862243,000278,81185,515
ブロック単位
(再書き込み)
144,196728,00079,097390,00057,934183,000
シーケンシャル
インプット
キャラクタ単位2,8963,8773,93866,3233,92966,300
ブロック単位4,141,7041,460158,433117,000176,419119,000
ランダムシーク6.5196,7631.017174,0000.2775,182,000
シーケンシャル
クリエイト
クリエイト1967,11317,683
リード488636549
デリート6,5811,1661,196
ランダム
クリエイト
クリエイト5,067499389
リード11310451
デリート7,3891,123722

もっと大差でお名前.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.2828205.874203.468109.789144.021104.780
2 スレッド12.7204397.215338.866179.441195.09125.548
4 スレッド12.4459598.216557.19795.768287.463244.282
8 スレッド12.06711001.563722.040371.383409.607510.660
16 スレッド12.72012298.850777.967447.950526.246311.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)
MEMCPY3108.8373169.8633133.706
DUMB3852.2833564.7403590.463
MCBLOCK5860.6184981.6884848.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.57920.0012.15610.0012.17030.00
2 スレッド11.64850.006.16300.006.12450.00
4 スレッド11.77390.004.07170.004.07980.00
8 スレッド11.69370.024.08130.014.07840.001
16 スレッド11.66220.014.06810.014.07030.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.61370.002.71240.002.68150.00
2 スレッド4.10270.012.42710.001.72520.00
4 スレッド6.64820.001.79480.001.91270.00
8 スレッド10.59210.013.43920.003.32280.00
16 スレッド15.03400.014.76800.014.24930.01
32 スレッド15.08780.015.77400.015.54250.01
64 スレッド10.53830.024.62160.024.46550.02
128 スレッド8.96530.064.01600.013.60890.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.12520.000.07010.000.07130.00
2 スレッド0.10260.020.04200.000.05290.00
4 スレッド0.21930.130.03300.000.03550.01
8 スレッド0.52520.250.03270.010.02140.01
16 スレッド1.18860.440.05980.050.01040.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.55680.0021.04730.0021.54910.00
2 スレッド36.93840.0023.03920.0023.27650.00
4 スレッド36.44900.0023.43890.0023.60880.00
8 スレッド38.04880.0122.75480.0123.77630.01
16 スレッド37.40870.0222.67050.0122.93170.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の環境構築をしていきたいと思います。