まじめにベンチマーク Mac ⇔ Linux箱=RAID箱 Sambaでね☆ [Benchmark]
というわけで(どんなわけ?)(^^;)
既存のベンチマークソフトに頼らずに、実際にファイル転送をしてみて、
その時間を計ることにします。
まず、計り方。
MacにもLinuxにも便利な、timeコマンドというものがあります。
time (スクリプト?、コマンド?)
と書くことで、スクリプトの実行時間を返してくれます。便利です☆
でもって、
スクリプト部分に、cp (コピー元)(コピー先)なぐあいに、
書いてあげればよいわけです。
コピー元:ファイルサーバー
コピー先:Mac
とすれば、ファイルサーバーからのReadの時間がわかりますし、
コピー元:Mac
コピー先:ファイルサーバー
とすれば、ファイルサーバーへのWriteの時間がわかるはずです。
ここで、Mac側ですが、ここには、Ramディスクをつくります。
でないと、MacのSSDへの書き込み、読み出しがボトルネックに
なる可能性もあるわけで。。
MacでのRAMディスクの作り方はこんなぐあい。
$ hdid -nomount ram://4096000
で、およそ2GBのRAMディスクがつくられます♪
できると、
/dev/disk1
な感じでデバイスファイルをつくったよ〜っと、返してくれるので、
そのデバイスファイルをつかって、
$ diskutil eraseDisk HFS+ ramdisk /dev/disk1
このおまじないで、マウントまでしてくれます。
マウント先は、
/Volume/ramdisk
ということで、Mac側はもっぱら、このramdisk上にファイルを
置くことになります。
あとは、適当なファイルを用意して、そのファイルサイズを
コピーにかかった時間で割れば、時間あたりの転送時間がわかります。
10Mbyteと100Mbyteのファイルを作成して、ベンチマークを
してみました♪
でもいきなり、Linux⇔Macのベンチマークを取るのではなく、
まずは、Linuxローカル、Macローカルでのベンチマークを
とってみます。
ちなみに、Ubuntuはなにもしなくても、標準で512Mbyteの
RAMディスクが作成されておりまして、/dev/shmが自由に使えます。
◆Linux
Read性能
$ time cp /st1/test/10m_1 /dev/shm/10m_1
/st1がベンチマークターゲットのRAIDアレイディレクトリ
10m_1 はおよそ10Mbyteのファイル
これを10コ作成し、10m_1,10m_2,10m_3,・・・10m_9,10m_0
などと名前をつけておきます。
別の名前にするのは、システム側でのキャッシュを防ぐためです。
やってみるとわかりますが、
$ time cp /st1/test/10m_1 /dev/shm/10m_1
これを2回以上繰り返すと、明らかに2回目以降は数字がよくなります。
これはシステム側でのキャッシュが原因かと。
同様に、
$ time cp /st1/test/100m_1 /dev/shm/100m_1
Write性能
$ time cp /dev/shm/10m_1 /st1/test/10m_1
$ time cp /dev/shm/100m_1 /st1/test/100m_1
こちらは、ファイルを10コ分ける必要はありません。
◆Mac
Linuxと同様です。
Read性能
$ time cp /tmp/10m_1 /Volume/ramdisk/10m_1
$ time cp /tmp/100m_1 /Volume/ramdisk/100m_1
Write性能
$ time cp /Volume/ramdisk/10m_1 /tmp/10m_1
$ time cp /Volume/ramdisk/100m_1 /tmp/100m_1
結果発表☆
Linux(Ubuntu サーバー版 9.04)
以下ファイル転送の単位はMB/sec
【Read性能】
No | 10MB転送 | 100MB転送 |
1 | 63.4 | 78.9 |
2 | 74.1 | 83.6 |
3 | 74.1 | 81.2 |
4 | 71.5 | 74.0 |
5 | 71.0 | 66.5 |
6 | 71.0 | 77.4 |
7 | 74.1 | 72.7 |
8 | 74.7 | 80.9 |
9 | 72.5 | 68.0 |
10 | 70.5 | 72.5 |
平均 | 71.7 | 75.6 |
【Write性能】
No | 10MB転送 | 100MB転送 |
1 | 108.8 | 112.3 |
2 | 93.6 | 102.6 |
3 | 111.2 | 106.7 |
4 | 88.6 | 69.6 |
5 | 111.2 | 105.3 |
6 | 88.6 | 113.2 |
7 | 110.0 | 101.9 |
8 | 110.0 | 105.9 |
9 | 115.1 | 88.0 |
10 | 112.5 | 91.9 |
平均 | 104.9 | 99.8 |
HDDはSeagate ST31000528AS で一般的に公開されている
ベンチマークの性能では、ReadもWriteも100~130MB/sec
程度ですので、Readが若干低いかな。。(^^;)
もしかすると、計測方法に問題があるか、RAID箱に問題が
あるのかもしれません。。
◆Mac
【Read性能】
No | 10MB転送 | 100MB転送 |
1 | 158.9 | 193.6 |
2 | 161.5 | 193.6 |
3 | 166.8 | 195.1 |
4 | 164.1 | 120.6 |
5 | 154.0 | 183.3 |
6 | 169.7 | 192.1 |
7 | 166.8 | 197.4 |
8 | 164.1 | 174.1 |
9 | 166.8 | 191.0 |
10 | 161.5 | 187.1 |
平均 | 163.4 | 182.8 |
【Wite性能】
No | 10MB転送 | 100MB転送 |
1 | 107.6 | 72.1 |
2 | 126.7 | 156.2 |
3 | 125.1 | 66.5 |
4 | 115.1 | 113.0 |
5 | 119.2 | 86.4 |
6 | 101.1 | 102.9 |
7 | 135.3 | 102.2 |
8 | 125.1 | 97.4 |
9 | 123.6 | 53.7 |
10 | 131.7 | 77.4 |
平均 | 121.0 | 92.8 |
MacはHDDをOCZ summitのSSDに換装して、
カタログスペックでは、
Read 220MB/sec
Write 200MB/sec
なので、こんなものでしょうか。
けっこーつかれました(^^;)
さてさて、Linux⇔Mac でもベンチマークしてみます♪
つづく
ところで、今のMacBook Proはこんなぐあいです。。☆ [Mac]
ちょっと、整理。
買ってちょうど2ヶ月ほどですが、この2ヶ月で、こんな具合に変わっています♪
型番はMB990J/A
初期状態 今
OS :Leopard → Snow Leopard
HDD:Fujitsu M250S 160GB → OCZ summit 120GB
メモリ:2GB → 4GB
Xbenchすると、、、
Results 161.89
System Info
Xbench Version 1.3
System Version 10.6.1 (10B504)
Physical RAM 4096 MB
Model MacBookPro5,5
Drive Type OCZ SUMMIT
CPU Test 160.77
GCD Loop 264.06 13.92 Mops/sec
Floating Point Basic 129.24 3.07 Gflop/sec
vecLib FFT 106.46 3.51 Gflop/sec
Floating Point Library 252.35 43.94 Mops/sec
Thread Test 247.12
Computation 412.32 8.35 Mops/sec, 4 threads
Lock Contention 176.43 7.59 Mlocks/sec, 4 threads
Memory Test 189.32
System 226.71
Allocate 364.19 1.34 Malloc/sec
Fill 175.29 8523.11 MB/sec
Copy 209.12 4319.34 MB/sec
Stream 162.51
Copy 155.97 3221.59 MB/sec
Scale 152.98 3160.52 MB/sec
Add 172.02 3664.41 MB/sec
Triad 170.88 3655.50 MB/sec
Quartz Graphics Test 180.25
Line 156.42 10.41 Klines/sec [50% alpha]
Rectangle 203.72 60.82 Krects/sec [50% alpha]
Circle 175.04 14.27 Kcircles/sec [50% alpha]
Bezier 180.83 4.56 Kbeziers/sec [50% alpha]
Text 192.54 12.04 Kchars/sec
OpenGL Graphics Test 77.96
Spinning Squares 77.96 98.89 frames/sec
User Interface Test 234.90
Elements 234.90 1.08 Krefresh/sec
Disk Test 197.74
Sequential 145.96
Uncached Write 134.84 82.79 MB/sec [4K blocks]
Uncached Write 98.78 55.89 MB/sec [256K blocks]
Uncached Read 135.41 39.63 MB/sec [4K blocks]
Uncached Read 403.25 202.67 MB/sec [256K blocks]
Random 306.44
Uncached Write 125.27 13.26 MB/sec [4K blocks]
Uncached Write 347.54 111.26 MB/sec [256K blocks]
Uncached Read 2523.33 17.88 MB/sec [4K blocks]
Uncached Read 556.60 103.28 MB/sec [256K blocks]
ちなみに、ディスクをRamディスクにすると、これくらいディスクの数字が
跳ね上がります!
Disk Test 1108.12
Sequential 715.27
Uncached Write 496.58 304.90 MB/sec [4K blocks]
Uncached Write 1835.19 1038.35 MB/sec [256K blocks]
Uncached Read 380.44 111.34 MB/sec [4K blocks]
Uncached Read 2468.84 1240.82 MB/sec [256K blocks]
Random 2458.31
Uncached Write 899.45 95.22 MB/sec [4K blocks]
Uncached Write 3422.63 1095.71 MB/sec [256K blocks]
Uncached Read 14296.53 101.31 MB/sec [4K blocks]
Uncached Read 6526.70 1211.08 MB/sec [256K blocks]
Ramディスク恐るべし。。
Ramディスクの作り方は、次回。
ベンチマーク考 Mac ⇔ Linux箱=RAID箱 [Benchmark]
Windows時代は楽でした、いろんなベンチマークソフトが
そろっていますし、その結果も皆さん公開されていて、
簡単に比較できたものです。
ところが、MacとLinuxでファイル共有のベンチマークと
なると、これがどうして、なかなか楽にはいきませんでした(^^;)
Linux箱がeSATAでRAID箱とつながっており、
Linux箱とMacbook Proは1Gbpsのイーサネットで
つながっています。(過去のエントリー参照)
さて、さて、、なにが楽にいかないって
まず、ベンチマーク用のソフトが見あたらない。
代表的なXbenchは、Xbench自体が途中でエラーで止まってしまいますし、
他のベンチマークソフトも用いてみましたが、安定して動きません(;;)
Linuxでは一般的なbonnie++も試してみました。
まず、Ubuntuのapp-getで得られるbonnie++は古いので、
最新のbonnie++をダウンロードして、コンパイルです。
その前に、開発環境が入っていないので、そちらをまず。。
# apt-get install make
# apt-get install gcc
# apt-get install g++
それから、
$ ./configure
このままmakeすると、正しく表示されない不具合があるので、
ヘッダーファイルを修正します。
$ vi bonnie.h
#define MinTime (0.5)
を
#define MinTime (0.01)
へ書き換えて保存。
そして、
# make
Mac版も同様です。
当初、Mac portsにbonnieが用意されていたので、
Mac portsの環境を整えて、そちらからインストールしてしまいました。
が、Linux版とバージョンも異なりますし、
#define MinTime (0.01)
の修正もなされていませんので、正しい数値が得られません。
ですので、ソースを落としてきて、こちらもコンパイルです。
ちなみに、Macの開発環境は、Snow LeopardのDVDから追加インストール
するだけです☆
コンパイルも、Linux版と全く同じです。
GCCのバージョンがLinuxは4.3系で、Macが4.2系なのが気になりますが。。。
bonnie++のバージョンは両方とも1.96で一応そろっています。
まぁ、bonnie++を使ってみます。
$ bonnie++ -d /tmp -s 512 -r 256
/tmp はベンチマークを取りたいディレクトリを指定します。
-s は測定時に作成する一時ファイルの最大サイズの指定
-r はメモリサイズの指定
結果。
◆Mac
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
naomac.local 512M 315 98 127691 30 98803 20 646 99 1454566 99 26641 187
Latency 61417us 230ms 220ms 14614us 258us 6127us
Version 1.96 ------Sequential Create------ --------Random Create--------
naomac.local -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 14084 79 238095 99 12274 84 1583 18 307212 99 642 11
Latency 63789us 149us 35416us 92571us 34us 271ms
1.96,1.96,naomac.local,1,1255016964,512M,,315,98,127691,30,98803,20,646,99,1454566,99,26641,187,16,,,,,14084,79,238095,99,12274,84,1583,18,307212,99,642,11,61417us,230ms,220ms,14614us,258us,6127us,63789us,149us,35416us,92571us,34us,271ms
◆Linux
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
fs 512M 95 99 57544 45 59491 30 686 99 759567 99 2609 33
Latency 92293us 1132ms 1218ms 28167us 36us 345ms
Version 1.96 ------Sequential Create------ --------Random Create--------
fs -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 13751 70 +++++ +++ 23685 83 17281 87 +++++ +++ 24293 81
Latency 824us 398us 453us 396us 33us 232us
1.96,1.96,fs,1,1255037106,512M,,95,99,57544,45,59491,30,686,99,759567,99,2609,33,16,,,,,13751,70,+++++,+++,23685,83,17281,87,+++++,+++,24293,81,92293us,1132ms,1218ms,28167us,36us,345ms,824us,398us,453us,396us,33us,232us
はい、なんだかよくわからない結果が帰ってきました(^^;)
MacでLinuxのボリュームのディスクをマウントして、またbonnie++
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
naomac.local 512M 1 9 11713 10 6656 10 1 9 11910 9 3397 88
Latency 8987ms 2012ms 2002ms 6996ms 2001ms 8893us
Version 1.96 ------Sequential Create------ --------Random Create--------
naomac.local -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 7 0 21696 18 18 1 8 0 1558 10 18 1
Latency 2231ms 4826us 149ms 2216ms 2545us 180ms
1.96,1.96,naomac.local,1,1255017747,512M,,1,9,11713,10,6656,10,1,9,11910,9,3397,88,16,,,,,7,0,21696,18,18,1,8,0,1558,10,18,1,8987ms,2012ms,2002ms,6996ms,2001ms,8893us,2231ms,4826us,149ms,2216ms,2545us,180ms
ながーらく、結果が帰ってきませんでした(^^;)
で?
って、感じの結果で。。。
bonnie++のソースを読む気力もなく。。
まぁ、なんです、よそ様のベンチマークソフトが何をやっているのか
よくわからないのと、その表示結果もよくわからないので、気持ち悪い
わけです(^^;)
ファイル転送のスピードが知りたいわけですから、実際にファイル転送
してみればいいわけですよね。。。
つづく