さくらのVPSでUnixBenchを計測
UnixBenchとは、
Linuxパソコンの処理性能を測定するためのソフトウエアのことで、
CPUの演算性能、アプリケーション実行時の処理性能、2次元や3次元のグラフィックス処理性能を測定できるものです。
さらに、マルチコアプロセッサにも対応しているため、コア数の違いによるパフォーマンスを評価することもできます。
UnixBench が出力する数値は、処理時間とIndex値です。
処理時間は、文字通り各処理性能を測定する項目毎に実際にかかった処理時間が出力されます。
Index値は、「George」と呼ばれるUNIXシステム「SPARCstation 20-61」の処理性能を10としたときの倍率を表した数値が出力されます。
( つまり、ざっくりと言うと SPARCstation 20-61 の何倍早いか?という感じでしょうか。)
現在のマシン性能は、かなり良くなっているので、100倍,1000倍という数値が普通に出ます。
主にUnixBench の値として用いられるのは、このIndex値の総合評価値である System Benchmarks Index Scoreの値が用いられています。
最新(2014年8月)にさくらのVPSの1Gプランを契約し、UnixBenchを計測してみました。
UnixBenchのインストールについて
- UnixBenchの最新ファイルをダウンロードする。
$ wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
...
|
適当なディレクトリで解凍しておきます。
$ tar xfz UnixBench5.1.3.tgz
...
|
- GUI系の計測は不要なのでMakeFileを編集する。
計測が不要なものは、コメントアウトしておきます。
ここではGUI関係は不要なので、GRAPHIC_TESTS , GL_LIBS をそれぞれコメントアウトしておきます。
./UnixBench/Makefile を編集します。
- UnixBenchをコンパイルする。
UnixBenchをコンパイルするには、makeおよびgcc、perlが必要になります。
加えて CentOS/ScientificLinux の場合、perl のTime/HiResもインストールする必要があります。
前準備として以下のツールをインストールします。
CentOS/
ScientificLinux の場合
$ yum -y install make gcc perl perl-Time-HiRes
...
|
Debian/
Ubuntu の場合
$ apt-get -y install make gcc perl
...
|
準備を終えたら、続けてmakeを実行します。
実行するディレクトリは、先にUnixBenchを解凍したディレクトリで実行します。
[UnixBench]$ make
...
|
ここでエラーがでない場合は、すぐにでも計測できます。
以下のようにRunで実行です。
[UnixBench]$ ./Run
make all
make[1]: Entering directory `/root/UnixBench'
Checking distribution of files
./pgms exists
./src exists
./testdir exists
./tmp exists
./results exists
make[1]: Leaving directory `/root/UnixBench'
Version 5.1.3 Based on the Byte Magazine Unix Benchmark
...
|
Runは、概ね 1CPUあたり20分ぐらいでしょうか。単純に仮想CPU2あるので、倍の40分程度は掛かるものと思います。
また、負荷もかかるので、基本的には、実際に運用中のサーバーでの実施は避けた方が良いと思います。
でも、負荷が掛かっているときの情報が欲しい場合もあるでしょうから、計測する意図を考えて行うことが肝要かと思います。
UnixBenchの実施結果
以下の一覧表、およびグラフは、10回連続で実施し、System Benchmarks Index Score だけを抜粋したものです。
また、比較のために 以下のサーバーのUnixBenchについて一緒に掲載しています。
- 今回の 最新のさくらのVPS 1Gプラン(CentOS 6,CentOS 7で実施分)[さくらのVPS(2014)6 or 7]
- 2013年に調べた さくらのVPS 1Gプラン(CentOS 6で実施分)[さくらのVPS(2013)]
- 2013年に調べた お名前.com VPS 1Gプラン(CentOS 6で実施分)[お名前.com VPS]
- 2013年に調べた CloudCore VPS 2Gプラン(CentOS 6で実施分)[CloudCore VPS]
詳細表示切替
UnixBench
回数 | さくらのVPS (2013) #1CPU | さくらのVPS (2013) #2CPU | さくらのVPS (2014)6 #1CPU | さくらのVPS (2014)6 #2CPU | さくらのVPS (2014)7 #1CPU | さくらのVPS (2014)7 #2CPU | お名前.com VPS #1CPU | お名前.com VPS #2CPU | CloudCore VPS #1CPU | CloudCore VPS #2CPU |
---|
1 | 768.2 | 1762.8 | 1068.6 | 2244.7 | 945.4 | 2124.7 | 1418.7 | 2656.4 | 1378.0 | 1881.0 |
---|
2 | 763.2 | 1846.6 | 1077.6 | 2213.1 | 953.5 | 2130.1 | 1428.5 | 2620.8 | 1387.4 | 1908.1 |
---|
3 | 764.9 | 1769.2 | 1070.7 | 2102.1 | 949.9 | 2074.4 | 1417.8 | 2574.8 | 1405.6 | 1871.5 |
---|
4 | 765.1 | 1717.0 | 1068.2 | 2249.1 | 946.4 | 2115.8 | 1478.8 | 2644.9 | 1394.2 | 1876.0 |
---|
5 | 772.7 | 1765.5 | 1068.7 | 2158.3 | 931.7 | 2119.6 | 1450.8 | 2662.0 | 1395.8 | 1897.0 |
---|
6 | 774.1 | 1835.6 | 1066.6 | 2203.1 | 946.6 | 2122.0 | 1480.1 | 2666.4 | 1400.3 | 1867.5 |
---|
7 | 763.0 | 1809.7 | 1066.5 | 2223.3 | 944.1 | 2136.7 | 1456.2 | 2587.4 | 1385.9 | 1926.0 |
---|
8 | 776.9 | 1791.0 | 1069.2 | 2054.0 | 946.5 | 2112.4 | 1463.4 | 2567.1 | 1398.7 | 1918.8 |
---|
9 | 776.4 | 1884.2 | 1060.0 | 2194.4 | 939.8 | 2072.3 | 1479.8 | 2620.5 | 1382.4 | 1877.2 |
---|
10 | 770.6 | 1818.7 | 1070.0 | 2206.0 | 907.4 | 2109.5 | 1485.4 | 2627.2 | 1361.6 | 1855.0 |
---|
|
最小値 | 763.0 | 1717.0 | 1060.0 | 2054.0 | 907.4 | 2072.3 | 1417.8 | 2567.1 | 1361.6 | 1855.0 |
---|
最大値 | 776.9 | 1884.2 | 1077.6 | 2249.1 | 953.5 | 2136.7 | 1485.4 | 2666.4 | 1405.6 | 1926.0 |
---|
平均値 | 769.5 | 1800.0 | 1068.6 | 2184.8 | 941.1 | 2111.8 | 1456.0 | 2622.8 | 1389.0 | 1887.8 |
---|
中央値 | 769.4 | 1800.3 | 1068.7 | 2204.6 | 945.9 | 2117.7 | 1459.8 | 2624.0 | 1390.8 | 1879.1 |
---|
残念ながら、お名前.com VPSの 2013年分のUnixBenchにもかなわないものの、2013年の同プランのUnixBenchには勝っています。
ここから、少なからずさくらのVPSのハードスペックは、良くなってきています。
さらに、CloudCore VPS の2013年分のUnixBenchには勝っています。
以前から、さくらのVPSは、コア数が上がれば、コア数分でUnixBenchがほぼアップするように設定されています。
今回もその辺りは同じようで、1CPUと2CPUのUnixBenchのベンチマークは、ほぼ2倍になっています。
また、CentOS 6,CentOS 7では、微妙にベンチマークが異なります。
通常、バージョンアップすれば機能アップしますから、UnixBenchも多少悪くなるのは否めません。
ここでも CentOS 7 若干、悪くなっているようです。
結果からすれば、お名前.com VPS のUnixBenchのベンチマークが異常に高いので、そこまでは手が届かないものの、
さくらのVPSも、かなり、良くなってきたと言えると思います。
さくらのVPSでディスクパフォーマンスを計測
最新(2014年8月)にさくらのVPSの1Gプランを契約し、IOPS、レイテンシ(ディスクパフォーマンス)を計測してみました。
iops とは、
Input/Output Per Second の略で、簡単に言うと時間あたりの読み書き量を表す単位のことです。
ハードディスクなどの記憶装置の性能指標の一つで、ある条件の元で1秒間に読み込み・書き込みできる回数のことです。
1回の読み書きにかかる時間の逆数で、ハードディスクの場合はシークタイムと回転待ち時間、データ転送時間の和の逆数となります。
実際には、読み込み(リード)か書き込み(ライト)か、シーケンシャルアクセスかランダムアクセスか、
転送するデータの量がどれくらいかによって1回の動作に要する時間が異なるため、「4KBランダムライトIOPS」(4KBのデータをランダムに書き込んだ時のIOPS)のように計測条件を明示することが多いです。
(出典 : http://e-words.jp/w/IOPS.html)
レイテンシとは、
latencyのことで、直訳すると「遅延」という意味になります。
データ転送において、データを要求してから実際に送られてくるまでの待ち時間のことです。この時間が短いほどシステム全体の処理性能は高くなります。
(出典 : http://e-words.jp/w/E383ACE382A4E38386E383B3E382B7.html)
fioのインストールについて
- fioコマンドの最新ファイルをダウンロードする。
$ wget http://freecode.com/urls/3aa21b8c106cab742bf1f20d60629e3f -O fio.tar.gz
...
|
適当なディレクトリで解凍しておきます。
$ tar xfz fio.tar.gz
...
|
- fioをコンパイルする。
fioをコンパイルするには、makeおよびgcc、libaioが必要になります。
前準備として以下のツールをインストールします。
CentOS/ScientificLinux の場合
$ yum -y install make gcc libaio-devel
...
|
Debian/Ubuntu の場合
$ apt-get -y install make gcc perl libaio-dev
...
|
準備を終えたら、続けてmakeを実行します。
実行するディレクトリは、先にfioを解凍したディレクトリで実行します。
$ cd fio-2.1.10
[fio-2.1.10]$ make
...
|
ここでエラーがでない場合は、インストールします。
[fio-2.1.10]$ make install
install -m 755 -d /usr/local/bin
...
|
fioコマンドが使えるか確認します。
[fio-2.1.10]$ fio --version
fio-2.1.10
|
fioのパラメータについて
fioのパラメータは、読み込み、書き込み それぞれ さくらインターネットで使用されているパラメータと同じものを使用(詳細は、以下参照)します。
以下は、さくらインターネットで計測された際の fioコマンドのパラメータ設定ファイルになります。
- 書き込みパフォーマンスを確認したfioパラメータ設定ファイル
ファイル名:randwrite.fio
[global]
ioengine=libaio
direct=1
invalidate=1
group_reporting
directory=/home
filename=test.bin
runtime=60
[Rand-Write-4k-qd32]
readwrite=randwrite
size=4G
bs=4k
iodepth=32
numjobs=1
|
- 読み込みパフォーマンスを確認したfioパラメータ設定ファイル
ファイル名:randread.fio
[global]
ioengine=libaio
direct=1
invalidate=1
group_reporting
directory=/home
filename=test.bin
runtime=60
[Rand-Read-4k-qd32]
readwrite=randread
size=4G
bs=4k
iodepth=32
numjobs=1
|
[ fioパラメータの意味 ]
ioengine
jobで使用するIOを定義します。
- libaio : Linuxネイティブの非同期I/O
direct
true(or 1) を指定した場合、I/Oバッファは使用しません。(usually O_DIRECT)。デフォルト:false( or 0)。
invalidate
ファイルへの読み書きを始める際にバッファ・キャッシュを無効にします。デフォルト:true( or 1)。
group_reporting
これが設定された場合、numjobsが指定されている時に、ジョブごとの代わりにグループ単位のレポートを出力します。
directory
これが設定された場合、numjobsが指定されている時に、ジョブごとの代わりにグループ単位のレポートを出力します。
filename
fioで使用する ファイル名を指定します。通常、ジョブ名、スレッド番号、ファイル番号に基づいたファイル名になります。このファイル名でテスト用のファイルが作成されます。
runtime
指定した秒数後に処理を終了します。
readwrite
読み書きのパターンを以下のタイプで指定します。
- read : Sequential reads.
- write : Sequential writes.
- randread : Random reads.
- randwrite : Random writes.
- rw : Mixed sequential reads and writes.
- randrw : Mixed random reads and writes.
size
このジョブの読み書きの総サイズを指定します。
blocksize(or bs)
I/Oユニットのブロックサイズを指定します。デフォルト 4Kです。
iodepth
ファイルに対して非同期で同時に要求するI/Oユニット数を指定します。
numjobs
このジョブのクローンの数を指定します。デフォルト 1です。
上記のfio パラメータファイルは、fioコマンドで、以下のように指定することができます。
$ fio randread.fio
Rand-Read-4k-qd32: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=32
fio-2.0.13
..
|
fioの実施結果
以下の一覧表、およびグラフは、10回連続で実施し、IOPS、レイテンシ だけをそれぞれ抜粋したものです。
詳細表示切替
IOPS
回数 | IOPS(Read) | IOPS(Write) |
---|
1 | 3122 | 1782 |
---|
2 | 3337 | 3297 |
---|
3 | 3384 | 3316 |
---|
4 | 3204 | 3281 |
---|
5 | 3369 | 3323 |
---|
6 | 3294 | 3303 |
---|
7 | 3347 | 3302 |
---|
8 | 3261 | 3329 |
---|
9 | 3196 | 1612 |
---|
10 | 3259 | 3259 |
---|
|
最小値 | 3122 | 1612 |
---|
最大値 | 3384 | 3329 |
---|
平均値 | 3277 | 2980 |
---|
中央値 | 3278 | 3300 |
---|
詳細表示切替
レイテンシ(ms)
回数 | レイテンシ(Read) | レイテンシ(Write) |
---|
1 | 10.2 | 18.0 |
---|
2 | 9.6 | 9.7 |
---|
3 | 9.5 | 9.6 |
---|
4 | 10.0 | 9.7 |
---|
5 | 9.5 | 9.6 |
---|
6 | 9.7 | 9.7 |
---|
7 | 9.6 | 9.7 |
---|
8 | 9.8 | 9.6 |
---|
9 | 10.0 | 19.8 |
---|
10 | 9.8 | 9.8 |
---|
|
最小値 | 9.5 | 9.6 |
---|
最大値 | 10.2 | 19.8 |
---|
平均値 | 9.8 | 11.5 |
---|
中央値 | 9.8 | 9.7 |
---|
書き込みのパフォーマンスは、かなりばらつく時があるみたいですが、概ね、読み込みにおけるパフォーマンスは、平均的なようです。
ハードディスクのパフォーマンス自体が、書き込みでもたつくのは、ある程度、仕方がないのかもしれません。
ただ、このように読み込みがある程度パフォーマンスが出ていれば、それなりにサーバーとしての機能は、保たれたりしますから、まあまあ、悪くない結果と言えるかなぁと思います。
さくらのVPSのパフォーマンス総括
最後に、さくらのVPS 1Gプランのパフォーマンスを、お名前.com VPS と簡単に比較してみました。
ディスクパフォーマンスの物差し的な意味合いで、さくらのVPS SSDプラン および さくらのクラウド と比較してみました。
項目 |
お名前.com 1G |
さくらのVPS 1G |
さくらのVPS SSD 2G |
さくらのクラウド SSD 1G |
UnixBench |
1コア |
1,460 |
946 |
1,032.2 |
1,431.9 |
2コア |
2,624 |
2,118 |
2,107.8 |
? |
IOPS |
ランダムリード |
2,804 |
3,278 |
10,986 [ 10,000 ] |
6,000 [ 6,000 ] |
ランダムライト |
154 |
3,300 |
10,985 [ 10,000 ] |
1,497 [ – ] |
レイテンシ |
ランダムリード |
11.4 (ms) |
9.8 (ms) |
0.75 (ms) [ 0.26 (ms) ] |
4 (ms) [ 0.3 (ms) ] |
ランダムライト |
206.5 (ms) |
9.7 (ms) |
2 (ms) [ 0.12 (ms) ] |
1 (ms) [ – ] |
※[]内数値は、さくらインターネットで公開されているデータです。
※お名前.comに関するディスクパフォーマンスは、かなり値が振れます。良い時は、SSD以上に良いパフォーマンスを見せます。ここでの記載は、あくまで参考程度にご覧ください。
先に書いているように お名前.com VPS のディスクパフォーマンスは、数回しかやっていませんので、この値が、必ずしも妥当な値かはわかりません。
なお、その数回の中には、かなりパフォーマンスが良かったもの(IOPSで239,237とかなり良い値)もありますから、お名前.com VPS は、計測した当時、
ディスクの制約をそれほどきっちりと行っていなかったのかなぁと思います。(今はどうか不明です。)
ディスクパフォーマンスにおいては、さくらのVPS 1Gプラン も さくらのクラウド SSD と それほどの差がないことは、少々驚きでもあります。
今回計測した さくらのVPS 1Gプラン は、かなり、安定したディスクパフォーマンスが出ていて、UnixBenchにおいても さくらのVPS SSD 2G(2013年) と遜色ないことから、
かなり、安定したパフォーマンスが得られるのではないかと思います。