mhddfs→GlusterFSと、FUSEを2回通ることによるパフォーマンスダウンが懸念されますので、簡単にベンチしてみました。
■別マシンの仮想サーバからネットワーク越しに書き込みテスト
○準備運動
[root@gluster01 storage]# dd if=/dev/zero of=/dev/null bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 0.153937 s, 6.8 GB/s
○mhddfsを通さずGlusterFSに直接書き込み
[root@gluster01 storage]# dd if=/dev/zero of=pair01/zero3 bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 22.86 s, 45.9 MB/s
○mhddfsを通してGlusterFSに書き込み
[root@gluster01 storage]# ls
pair01 pair02 pair03 pair04 storage01
[root@gluster01 storage]# dd if=/dev/zero of=storage01/zero4 bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 67.8727 s, 15.4 MB/s
■同一マシンのローカルで書き込みテスト
○準備運動
[root@kfs02 storage]# dd if=/dev/zero of=/dev/null bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 0.0946512 s, 11.1 GB/s
○mhddfsを通さずGlusterFSに直接書き込み
[root@kfs02 storage]# dd if=/dev/zero of=pair01/zero bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 47.8904 s, 21.9 MB/s
○mhddfsを通してGlusterFSに書き込み
[root@kfs02 storage]# dd if=/dev/zero of=mhddfs01/zero2 bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 45.7485 s, 22.9 MB/s
■結果まとめ
リモートとローカル、mhddfsの使用と不使用で、結果が全然違う。
ローカルの方が当然速いだろうと思いきや、リモートでmhddfs不使用がダントツで速い。でもmhddfsを通すと一気に遅くなる。
ローカルではmhddfsの使用不使用は関係なく、同じくらい遅い。
何度か繰り返しましたが、同等の結果が得られました。
■考察
意外な結果になりました。
リモートでmhddfsが遅くなるのは、ネットワークを経由することによるレイテンシ起因とかでしょうか。同期書き込みなら妥当な挙動かなぁ。
ローカルアクセスとリモートアクセスでGlusterFSの速度が段違いなのは、リモートでアクセスするとGlusterFSの処理がリモートとローカルに分割されるので高速化するとか、そんなところでしょうか。
○リモート/クライアント側
・mhddfsあり
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15763 root 20 0 251m 20m 1424 S 106.7 6.6 66:46.59 glusterfs
15988 root 20 0 309m 960 384 S 19.9 0.3 0:39.16 mhddfs
18092 root 20 0 103m 1696 576 S 4.0 0.5 0:01.16 dd
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15763 root 20 0 251m 20m 1424 S 24.3 6.6 67:42.98 glusterfs
18134 root 20 0 103m 1700 580 S 4.3 0.5 0:00.68 dd
○リモート/サーバ側
・mhddfsあり
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4654 root 20 0 410m 22m 1912 S 22.2 0.3 50:14.01 glusterfsd
4658 root 20 0 410m 22m 1916 S 20.6 0.3 49:10.81 glusterfsd
・mhddfsなし
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4654 root 20 0 412m 22m 1912 R 34.5 0.3 50:51.63 glusterfsd
4658 root 20 0 412m 22m 1916 R 33.5 0.3 49:46.95 glusterfsd
○ローカル(ちなみにsystem負荷が高かったので、XFSの負荷も無視できないかも知れません)
・mhddfsあり
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12848 root 20 0 230m 35m 2140 R 121.2 0.5 3:25.39 glusterfs
4654 root 20 0 414m 22m 1912 S 55.1 0.3 52:43.88 glusterfsd
4658 root 20 0 414m 22m 1916 S 50.8 0.3 51:36.55 glusterfsd
13092 root 20 0 309m 904 544 S 16.6 0.0 0:09.56 mhddfs
14460 root 20 0 103m 1688 568 S 5.6 0.0 0:00.50 dd
・mhddfsなし
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12848 root 20 0 230m 35m 2116 R 103.8 0.5 2:36.40 glusterfs
4658 root 20 0 414m 22m 1916 R 100.8 0.3 50:56.41 glusterfsd
4654 root 20 0 414m 22m 1912 R 93.7 0.3 52:05.21 glusterfsd
14452 root 20 0 103m 1684 568 S 44.4 0.0 0:02.82 dd
■で、どうする?
遅いけど、まぁ、仕方ないよね。。データの初期コピーの最初だけ、mhddfsを通さずに実施したいと思います。
読み出しは、どの組み合わせでも70〜80MB/sくらい出るようなので問題視しないことにします。。
mhddfsが導入できないクライアントのための中継機能は、ストレージサーバ自体に持たせようと思います。mhddfsで束ねた領域をNFSでエクスポートしちゃうの。パフォーマンスが多少いいので。
0 件のコメント:
コメントを投稿