金曜日 9 26, 2008
金曜日 9 26, 2008
またしてもZFSを使ったちょっとした試験をしました。
私がこういう試験をするのは社内で利用しているシステムの更新をする時の、 実際の更新までの空いた時間でやっているので毎回違う構成になってしまいます。 今回のマシンも決して新しいマシンとは言えないのですが、もうすぐ実際の運用に回します。今回はすでにZFSを使っていて、 マシン間や新しいディスクアレイに移行する時に どうやって行うが早いのかいろいろ試してみました。 ZFSどうしなら当然zfs send/zfs recvの組み合わせが思い浮かびますが、 果たしてどのくらい他の方法に比べて早いのか? また、zfs send/recv はリリース間の互換性を今のところ保証していないので、 将来的にマシン間ではできなくなる可能性もあります。 他の方法はtar/gtar/cpioをそれぞれ試してみました。
まずはハードウエアの構成ですが、
となり、サーバは少し古いですが、メモリはたっぷりです。 OSはSolaris 10 + patch です。 ディスクアレーは私のブログに登場する中では珍しく現在販売している最新機種です (^ ^)。 試験は36GBをZFSで3way mirrorにしたファイルシステムにおいてあるものを、 6140のRAID-5に複写するという形で行いました。 結果を見るとわかりますが、この構成の詳細はあまり重要ではありませんでした。 複写したファイルシステムはある製品のソースコードが入っているもので、 およそ 16GB の容量に32万個のファイル(ディレクトリをのぞく)が入っているものです。 16GBということで、このシステムのメインメモリーにキャッシュされると思われるので、 ディスクのI/Oはこのベンチマークにはほとんど影響されない予定です。System : Sun Fire V1280 CPU Type : SUNW,UltraSPARC-III+ * 12 CPU MHz : 900MHz CPU 2nd Cache : 8MB Memory : 86GB Disk : 36GB * 3 Disk Array : StorageTek 6140
各方法の実行の仕方は、
の様になっております。 また、念のために読み込みだけの時間も計りました (上の例では書き込みのプロセスだけを計っていますが、 読み込み時は書き込み先を/dev/nullにして、読み込みのプロセスを計測しています)。tar EcfbB - 1024 . | (cd /${T} ; timex tar xfb - 1024) gtar cfbB - 1024 . | (cd /${T} ; timex gtar xfb - 1024) find . -print | cpio -ocC 524288 | (cd /${T} ; timex cpio -idmlC 524288 zfs send ${SP}@bench | timex zfs recv ${T}
結果は:
| read only | copy | |||||
|---|---|---|---|---|---|---|
| Real time | User time | Sys time | Real time | User time | Sys time | |
| tar | 05:34 | 04:16 | 01:17 | 32:22 | 06:17 | 32:13 |
| gtar | 01:06 | 00:18 | 00:45 | 06:18 | 00:41 | 08:08 |
| cpio | 02:21 | 00:20 | 02:23 | 09:47 | 00:44 | 10:12 |
| zfs send/recv | 00:56 | 00:00 | 00:56 | 04:50 | 00:00 | 06:30 |
ある意味想定通りCPUで頭打ちになっています。 しかし、これほどtarが遅いとは思いませんでした。 というか、gtarって早いんですね。 zfs send/recvが勝ってはいますが、思いの外gtarと近かったです。 ディスクアレイへの書き込みに関しては、StorageTek 3510FCへの書き込み (しかも、RAID-5に使っているディスクの本数も違う)と比べて誤差ぐらいの差しかありませんでしたので、 関係なさそうです。 この中で実時間よりもCPU時間の長い物がありますが、 Solarisのカーネルがマルチスレッドで複数のCPUを効率よく使って結果だと 思っているのですが、確認していません。 とここまで書いて思ったのですが、このマシン、運用に回すまでまだ1,2週間あるので、 もっと大きな(メインメモリを超えるような)ものもやってみようと思います。
面白い結果ですね~
cpio はまぁそんなもんかなと思いますが、確かに gtar が意外に早いのに驚きました。 blocking factor、同じサイズですよね?
ぜひメモリを超えるようなのもやってみてください!
Posted by Yuta on 9月月 28日, 2008年 at 10:53 午前 JST #
Yuta さんコメントありがとうございます。Blocking Factorは同じにしてあります。もっとも、zfs send/recvは
指定できないのでdefaultのままでけど。はい、メモリの大きさを超えるのは今やっておりますが、いかんせん
時間がかかるのでしばらくお待ちください。
Posted by Akira Ohsone on 9月月 28日, 2008年 at 07:35 午後 JST #