ServersMan@VPSを64bitに変更 その5: ベンチマークで比較

32bit OS vs 64bit OS

前回ServersMan@VPSを初期化して64bit版Debianに変更した後の状態を紹介しました。

CPU割り当て具合が変わっていたものの、そのほかには特に大きな変更はありません。今回はベンチマークソフトを使って、動作速度に差があるのかどうかを比較してみます。

初期化前(32bit版 Debian)のときのベンチマークはWebサーバやデータベースサーバを停止した上で行いましたが、ほかにもいろいろなソフトが動いていたかもしれません。また、どうも時間帯によって動作速度に差があるようなので、ここで紹介する数値は参考程度にお考えください。

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

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

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

になります。

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

32bit Debian64bit Debian
スループット
(K/sec)
レイテンシ
(us)
スループット
(K/sec)
レイテンシ
(us)
シーケンシャル
アウトプット
キャラクタ単位51428,15463327,096
ブロック単位159,327415,000146,415454,000
ブロック単位
(再書き込み)
43,043784,000144,196728,000
シーケンシャル
インプット
キャラクタ単位1,7349,0432,8963,877
ブロック単位2,899,2111714,141,7041,460
ランダムシーク0.4409,5106.5196,763
シーケンシャル
クリエイト
クリエイト46,074196
リード1,309488
デリート3,1796,581
ランダム
クリエイト
クリエイト6,4785,067
リード140113
デリート18,9977,389

法則性は見えてきませんが、全体的に64bitのほうが早そうです。ファイルの読み込みが早くなっているということはデータベースの処理が早くなりWordPressのレスポンスがよくなることが期待できます。

dbench: ハードディスク性能

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

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

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

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

32bit Debian64bit Debian
スループット
(MB/sec)
レイテンシ
(ms)
スループット
(MB/sec)
レイテンシ
(ms)
1 スレッド8.10645298.43012.2828205.874
2 スレッド8.29630729.39412.7204397.215
4 スレッド8.04201999.30512.4459598.216
8 スレッド11.93631205.78112.06711001.563
16 スレッド12.31512002.49612.72012298.850

dbenchでもbonnie++と同様に64bit版のほうが優勢でした。

mbw: メモリ性能

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

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

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

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

32bit Debian64bit Debian
スループット
(MB/sec)
スループット
(MB/sec)
MEMCPY1729.1903108.837
DUMB4157.8963852.283
MCBLOCK10691.9265860.618

ハードディスク性能と違ってこちらは32bit版のほうが優勢となりました。

sysbench: 総合テスト

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

mutexは測定し忘れてしまったので、それ以外の結果を紹介します。

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

CPU

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

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

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

結果は次の通りです。

32bit Debian64bit Debian
平均処理時間標準偏差平均処理時間標準偏差
1 スレッド16.16300.0011.57920.00
2 スレッド12.00900.0011.64850.00
4 スレッド13.44440.0111.77390.00
8 スレッド12.19190.0311.69370.02
16 スレッド12.03590.0211.66220.01

このベンチマークテストの結果では64bit版のほうが終始優勢でした。それもそのはずで、このベンチマークソフトの説明では演算は64bitの整数を用いて行う、と書かれています。64bit版のほうが効率よく数値を扱えたのだと思われます。

マルチスレッド

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

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

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

結果は次の通りです。

32bit Debian64bit Debian
平均処理時間標準偏差平均処理時間標準偏差
1 スレッド6.65990.003.61370.00
2 スレッド6.64990.004.10270.01
4 スレッド9.61900.006.64820.00
8 スレッド14.60230.0010.59210.01
16 スレッド20.19800.0015.03400.01
32 スレッド20.33840.0115.08780.01
64 スレッド14.79030.0310.53830.02
128 スレッド12.79040.058.96530.06

標準偏差(安定性)で若干32bit版のほうがよいようですが、処理時間という面では明らかに64bit版のほうが性能がよいようです。

ファイル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と変化させて行いました。

結果は次の通りです。

32bit Debian64bit Debian
平均処理時間標準偏差平均処理時間標準偏差
1 スレッド0.11300.000.12520.00
2 スレッド0.08840.000.10260.02
4 スレッド0.22740.080.21930.13
8 スレッド0.45640.070.52520.25
16 スレッド0.95250.431.18860.44

このテストは32bit版のほうが優勢となりました。原因はわかりません。

データベース(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と変化させて行いました。

結果は次の通りです。

32bit Debian64bit Debian
平均処理時間標準偏差平均処理時間標準偏差
1 スレッド44.20840.0036.55680.00
2 スレッド43.57030.0036.93840.00
4 スレッド44.52770.0036.44900.00
8 スレッド45.30280.0138.04880.01
16 スレッド43.53500.0237.40870.02

このテストでは64bit版の全勝となりました。データベースが早いということはWordPressの処理が早くなりそうです。

テストが終了したらテスト用のデータベースを削除しておきます。

mysql -u root -p
(rootのパスワードを入力)
mysql> DROP DATABASE benchmark;
mysql> DELETE FROM mysql.user WHERE user='benchmark' AND host='localhost' ;
mysql> FLUSH PRIVILEGES;

まとめ

今回は32bit版DebianをインストールしたServersMan@VPSと、64bit版DebianをインストールしたServersMan@VPSを比較してみました。

ベンチマークソフトによって傾向は違いますが、おおむね64bit版のほうがスコアが良い方向に出るようです。これからVPSをセットアップするならば64bit OSを選ぶことをお勧めします。また、すでに32bit版で環境構築をしてしまっている方も、パフォーマンスで困っている場合は、64bit版に変更することを検討してもよさそうです。

次回は特別編として、Google I/O 2014の様子を紹介します。