前回はServersMan@VPSを初期化して64bit版Debianに変更した後の状態を紹介しました。
CPU割り当て具合が変わっていたものの、そのほかには特に大きな変更はありません。今回はベンチマークソフトを使って、動作速度に差があるのかどうかを比較してみます。
初期化前(32bit版 Debian)のときのベンチマークはWebサーバやデータベースサーバを停止した上で行いましたが、ほかにもいろいろなソフトが動いていたかもしれません。また、どうも時間帯によって動作速度に差があるようなので、ここで紹介する数値は参考程度にお考えください。
bonnie++: ハードディスク性能
まずはハードディスクの性能をbonnie++というツールで測定してみます。実行したコマンドは
bonnie++ -q > 記録用ファイル.csv
になります。
測定結果は次の通りです。性能が良いほうを青い背景としておきました。
32bit Debian | 64bit Debian | ||||
スループット (K/sec) |
レイテンシ (us) |
スループット (K/sec) |
レイテンシ (us) |
||
シーケンシャル アウトプット |
キャラクタ単位 | 514 | 28,154 | 633 | 27,096 |
ブロック単位 | 159,327 | 415,000 | 146,415 | 454,000 | |
ブロック単位 (再書き込み) |
43,043 | 784,000 | 144,196 | 728,000 | |
シーケンシャル インプット |
キャラクタ単位 | 1,734 | 9,043 | 2,896 | 3,877 |
ブロック単位 | 2,899,211 | 171 | 4,141,704 | 1,460 | |
ランダムシーク | 0.440 | 9,510 | 6.519 | 6,763 | |
シーケンシャル クリエイト |
クリエイト | — | 46,074 | — | 196 |
リード | — | 1,309 | — | 488 | |
デリート | — | 3,179 | — | 6,581 | |
ランダム クリエイト |
クリエイト | — | 6,478 | — | 5,067 |
リード | — | 140 | — | 113 | |
デリート | — | 18,997 | — | 7,389 |
法則性は見えてきませんが、全体的に64bitのほうが早そうです。ファイルの読み込みが早くなっているということはデータベースの処理が早くなりWordPressのレスポンスがよくなることが期待できます。
dbench: ハードディスク性能
つづいてdbenchというソフトでもハードディスク性能を測定してみます。実行したコマンドは
dbench スレッド数 -t 60 > 記録用ファイル.txt
となります。スレッド数を1, 2, 4, 8, 16と変えて試してみました。
結果は次の通りです。今回もスコアが良いほうを青い背景にしています。
32bit Debian | 64bit Debian | |||
スループット (MB/sec) |
レイテンシ (ms) |
スループット (MB/sec) |
レイテンシ (ms) |
|
1 スレッド | 8.10645 | 298.430 | 12.2828 | 205.874 |
2 スレッド | 8.29630 | 729.394 | 12.7204 | 397.215 |
4 スレッド | 8.04201 | 999.305 | 12.4459 | 598.216 |
8 スレッド | 11.9363 | 1205.781 | 12.0671 | 1001.563 |
16 スレッド | 12.3151 | 2002.496 | 12.7201 | 2298.850 |
dbenchでもbonnie++と同様に64bit版のほうが優勢でした。
mbw: メモリ性能
メモリの性能はmbwというソフトで試してみました。実行したコマンドは
mbw 256 > 記録用ファイル.txt
となります。256MBのデータを使ってデータコピーを行いスループットを測定します。
結果は次の通りです。今回もスコアが良いほうを青い背景にしています。
32bit Debian | 64bit Debian | |
スループット (MB/sec) |
スループット (MB/sec) |
|
MEMCPY | 1729.190 | 3108.837 |
DUMB | 4157.896 | 3852.283 |
MCBLOCK | 10691.926 | 5860.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 Debian | 64bit Debian | |||
平均処理時間 | 標準偏差 | 平均処理時間 | 標準偏差 | |
1 スレッド | 16.1630 | 0.00 | 11.5792 | 0.00 |
2 スレッド | 12.0090 | 0.00 | 11.6485 | 0.00 |
4 スレッド | 13.4444 | 0.01 | 11.7739 | 0.00 |
8 スレッド | 12.1919 | 0.03 | 11.6937 | 0.02 |
16 スレッド | 12.0359 | 0.02 | 11.6622 | 0.01 |
このベンチマークテストの結果では64bit版のほうが終始優勢でした。それもそのはずで、このベンチマークソフトの説明では演算は64bitの整数を用いて行う、と書かれています。64bit版のほうが効率よく数値を扱えたのだと思われます。
マルチスレッド
sysbenchの説明によればスケジューラのパフォーマンスを測定するために作られたテストとのことです。実行するコマンドは
sysbench --num-threads=スレッド数 --test=threads run > 記録用ファイル.txt
になります。スレッド数は1,2,4,8,16,32,64,128と変化させて行いました。
結果は次の通りです。
32bit Debian | 64bit Debian | |||
平均処理時間 | 標準偏差 | 平均処理時間 | 標準偏差 | |
1 スレッド | 6.6599 | 0.00 | 3.6137 | 0.00 |
2 スレッド | 6.6499 | 0.00 | 4.1027 | 0.01 |
4 スレッド | 9.6190 | 0.00 | 6.6482 | 0.00 |
8 スレッド | 14.6023 | 0.00 | 10.5921 | 0.01 |
16 スレッド | 20.1980 | 0.00 | 15.0340 | 0.01 |
32 スレッド | 20.3384 | 0.01 | 15.0878 | 0.01 |
64 スレッド | 14.7903 | 0.03 | 10.5383 | 0.02 |
128 スレッド | 12.7904 | 0.05 | 8.9653 | 0.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 Debian | 64bit Debian | |||
平均処理時間 | 標準偏差 | 平均処理時間 | 標準偏差 | |
1 スレッド | 0.1130 | 0.00 | 0.1252 | 0.00 |
2 スレッド | 0.0884 | 0.00 | 0.1026 | 0.02 |
4 スレッド | 0.2274 | 0.08 | 0.2193 | 0.13 |
8 スレッド | 0.4564 | 0.07 | 0.5252 | 0.25 |
16 スレッド | 0.9525 | 0.43 | 1.1886 | 0.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 Debian | 64bit Debian | |||
平均処理時間 | 標準偏差 | 平均処理時間 | 標準偏差 | |
1 スレッド | 44.2084 | 0.00 | 36.5568 | 0.00 |
2 スレッド | 43.5703 | 0.00 | 36.9384 | 0.00 |
4 スレッド | 44.5277 | 0.00 | 36.4490 | 0.00 |
8 スレッド | 45.3028 | 0.01 | 38.0488 | 0.01 |
16 スレッド | 43.5350 | 0.02 | 37.4087 | 0.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の様子を紹介します。
コメント