[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gfarm-discuss-ja:00092] Re: gfarm 速度調査
- From: Matsuo Akihiro <matsuo@xxxxxxxxxxxx>
- Date: Tue, 20 Sep 2005 13:57:38 +0900
おつかれさまです、ドワンゴの松尾壮紘です
ls が遅い原因がつかめました
建部さんの出してくれた
gfarm の最適化のところで、
> * slapd.conf で,loglevel 0 の指定
でした。
/var/log/slapd.log が 3.3 GB に成長していた為、
vi /etc/openldap/slapd.conf で
loglevel=296 を
loglevel=0 に変更したところ、
ズバット速くなりました
--- ls 速度比較
-- fuse
time -p ls /tmp/fuse/root/testfile (結果2件)
0.17秒 0.00秒 0.00秒 (昨日は6秒)
time -p ls /tmp/fuse/root/testfile/test100/ (結果100件)
0.22秒 0.07秒 0.07秒 (昨日は8秒)
-- system call hook
time -p ls /gfarm/root/testfile/
0.16秒 0.16秒 0.16秒 (昨日は7秒)
time -p ls /gfarm/root/testfile/test100
0.26秒 0.26秒 0.26秒 (昨日は14秒)
> 最後に気になる点
> meta サーバがひたすら io write していること。
まさにこれが犯人でした。
それと、
fuse から見えなくて system call から見える問題ですが
ハマっているうちにいろいろいじって、
正確な症状が判らなくなってしまいました。
現在は fuse 上のファイルも正しく見え、ツールも動作します。
恐らく原因は gfarm のバージョンが混在していたか、
fuse を再マウントしなかったことです。
上記の理由で、
client からは読めないけど meta サーバ上から読めたのだと思います
fuse 上のファイルは
・shell 上から cat でファイルは読める
・ツール上から ls でファイルリストは取れる
・ツール上から fopen に成功しているのにファイルの中身が読めない
というのが、前回までの症状でした
ところが、
今日ツールを作った担当者に見て貰った所、
ツールは問題なく動作しました。
前回やったことを少しづつ戻しながらテストしたところ
gfarm のバージョンが混在していたのが問題のようで、
1.2-4 がうまく入らなかった時に、
古いパッケージに戻したり、最新版にしたりして、
その時にバージョンが混在してしまったようです。
色々、バージョンを試してみた結果
meta 1.2-5
file 1.2-5
client 1.2-1
にしたときにfuse 上のファイルを cat では読めるが、
ツールからは can't read で読めないという症状になりました。
その後、いろんなバージョンを混在させてみたのですが、
前回と同じ症状になるものはなく、
また上記の混在バージョンに戻してみたのですが
正常に読めるようになってしまいました。
下記は、
meta 1.2-5
file 1.2-5
client 1.2-1
を混在させた時に client01 と client03 から同じファイルに対して
ls と cat を発行した物です。(ほぼ同時刻にやっています)
同じバージョンを入れているのですが、
client03 からは読めず、client 01 からは読めます
----------------------------------------------------------------------
[root@gfarm-client03 src]# rpm -qa | grep gfarm
gfarm-gsi-devel-1.2-1
gfarm-gsi-libs-1.2-1
[root@gfarm-client03 ~]# ls -l /tmp/fuse/root/testfile/test100/test.cpp
-rw-rw-rw- 1 root root 2298 Jul 4 18:22 /tmp/fuse/root/testfile/test100/test.cpp
[root@gfarm-client03 ~]# cat /tmp/fuse/root/testfile/test100/test.cpp
cat: /tmp/fuse/root/testfile/test100/test.cpp: Invalid argument
----------------------------------------------------------------------
[root@gfarm-client01 gfarm]# rpm -qa | grep gfarm
gfarm-gsi-devel-1.2-1
gfarm-gsi-libs-1.2-1
[root@gfarm-client01 gfarm]# ls -l /tmp/fuse/root/testfile/test100/test.cpp
-rw-rw-rw- 1 root root 2298 Jul 4 18:22 /tmp/fuse/root/testfile/test100/test.cp
p
[root@gfarm-client01 gfarm]# cat /tmp/fuse/root/testfile/test100/test.cpp
#include <cstdio>
〜以下略
----------------------------------------------------------------------
このあと、
client03 で umount /tmp/fuse ; gfarmfs /tmp/fuse を
行ったところ、正常にファイルが読めるようになりました。
gfarm のバージョンを入れ替えた際に、
fuse をマウントしっぱなし、再マウント忘れ
あたりがおかしくなる原因のように感じます。
大変お騒がせしました。
1.2-5 FedoraCore3 用のパッケージは
正常にインストールできました。
対応ありがとうございます
ちゃんと動くようになりましたので、
負荷試験の結果などを
wiki にアップしていきたいと思います
それでは今後ともよろしくお願いします
―[ Dwango ]―――――――――――――――――――――――
/株式会社ドワンゴ/京都研究開発センター/\
松尾壮紘 - Mail : matsuo@xxxxxxxxxxxx
―――――――――――――――――――――――――――――
On Mon, 19 Sep 2005 20:29:12 +0900 (JST)
Takuya Ishibashi <takuya@xxxxxxxxxx> wrote:
> 松尾さま、
>
> 創夢の石橋です。
> ワークショップの懇親会では Gfarm のことで盛り上がれて楽しかったです。
>
> # ちょうど建部さんからも返信がありましたが、
>
> > 0.準備
> > 昨日までのファイルは全部削除し、
> > メタサーバ1台、ファイルノード1台、クライアント1台で実験
> >
> > 参考までに昨日のファイル
> > filenode01 3447
> > filenode02 25552
> > filenode03 13868
> > 合計 42867 ファイルを以下のコマンドで削除
> >
> > # time -p gfrm -R *
> >
> > 削除にかかった時間 real 18930.62 秒 (約6時間)
>
> 最近、石橋も 10万個ファイルをつくってしまい、とても遅くなってしまいました。
> 増やしていくと、突然遅くなるような気がしていますが、きちんと調べてはいません。
>
> > 1.gfarm-1.2-4 へのアップグレード
> >
> > http://datafarm.apgrid.org/software/1.2/fc3/1.2-4/
> > FedoraCore3 用の RPM でアップデートしようとしたが、
> > rpm でアップデートしようとすると
> > FedoraCore3 には無いライブラリを要求されインストールできない
> > -------------------------------------------------------------------
> > # rpm -Uvh gfarm-gsi-client-1.2-4.i386.rpm gfarm-gsi-fsnode-1.2-4.i386.rpm gfarm-gsi-libs-1.2-4.i386.rpm
> > error: Failed dependencies:
> > libcrypto_gcc32.so.0 is needed by gfarm-gsi-client-1.2-4.i386
> > libglobus_common_gcc32.so.0 is needed by gfarm-gsi-client-1.2-4.i386
> > libcrypto_gcc32.so.0 is needed by gfarm-gsi-fsnode-1.2-4.i386
> > ・・・
> > 以下 *gcc32.so のライブラリを大量に求められるが
> > FedoraCore3 には存在しない
> > -------------------------------------------------------------------
>
> これはすみません。石橋が FC3 用の RPM を作ったのですが、失敗しています。
> 公開してある 1.2-4 はサイズ的にも明らかに --with-globus-static をつけて忘れて
> います。
>
> PL3 公開時においた 1.2-5 の RPM は大丈夫かと思いますが、いかがでしょうか。
>
> > 2.gfarm 1.2-5
> > 実はこっそり 1.2-5 が用意されていたので、
> > source RPM から rpmbuild してアップデートを行った
> >
> > 問題なく最新版にバージョンアップ完了
> >
> すみません、お手数をおかけしました。
>
> > 3.fuse 上のファイルが自作の負荷ツールから読めない
> >
> > 自作で、あるディレクトリ以下の
> > ・ファイルリストを作るツール
> > ・ファイルリストを元にファイルを読み出すツール
> > を作り、負荷試験用に用いていますが、
> >
> > ファイルリストを作るツールは問題ないが、
> > ファイルリストを元に読み出すツールから gfarm 上のファイルが読めない
> > あれこれチェックしてもらったが、原因が分からずじまい
> >
> > 調査した結果から分かった事は
> > ---
> > client サーバからだと fuse 上のファイルをツールから読めない
> > meta サーバからだと fuse 上のファイルをツールから読める
> > ---
> > fuse 上のファイルはツールから読めないが (/tmp/fuse/)
> > システムコールフックライブラリを使えばツールから読める (/gfarm)
> > ---
> > ということが、分かったので、
> > gfarm パッケージの追加インストールや、
> > 環境設定(おまじない)を見直してみたが症状が改善されない為、
> > システムコールを使ってのテストに切り替え。
>
> meta サーバからでは読めるというのが、謎です。
> 最初のメールの環境ということで、メタサーバはファイルシステムノード
> ではないということで、よろしいでしょうか?
> Gfarm で挙動が変わるとしたら、ファイルシステムノードか、それ以外かなので、
> メタサーバが、ファイルシステムノードではないとしたら、他の負荷クライアント
> と同等なはずです。
>
> client サーバから、FUSE 領域を、そのツールから読めないだけで、cat など
> は大丈夫ということなのでしょうか?
> そうだとすると、ちょっと謎です。FUSE でできないことがあったのかということで
> そのツールがなにをしているのかが気になります。
>
> そうでなく、cat もできないのであれば、実行フラグがついてるファイルで、
> クライアントノードとメタサーバのアーキテクチャが違うくらいしか、思いつ
> かないのですが、フックだとうまくいくようなので、関係なさそうです。。
>
> # うーん、石橋にはこれが限界です。
>
> > 4.ファイルコピー速度比較 「fuse」 vs 「system call hook」
> >
> > シェル上で普通にローカルディスクにある元ファイルを
> > gfarm 上に cp -a した場合にかかった時間
> >
> > -- fuse
> > 100 ファイル 143秒 157秒 148秒
> > 1000 ファイル 1431秒
> >
> > -- システムコールフック
> > 100 ファイル 74秒 78秒 79秒秒
> > 1000 ファイル 815秒
> >
> >
> > 100 ファイルコピーは3回連続テスト
> > コピー時のメモリキャッシュを考慮したがあまり影響は無い模様、
> > 1ファイルは約 1KB 前後
>
> GfarmFS-FUSE で、ファイルの create に時間がかかっているようですが、
> Gfarm 1.2 では対応されていて、それとあわせた修正を gfarmfs.c にすると
> 改善されるかもしれません。
> まだ公開していません。しばらくお待ちください。
>
> 修正内容は、gfarmfs.c で使われている gfs_pio_create すべてに GFARM_FILE_TRUNC
> フラグを追加しています。
>
> > 5.ls が表示されるまでの時間
> > gfarm 上の登録ファイル数 1100
> >
> > --- ls 速度比較
> > -- fuse
> > time -p ls /tmp/fuse/root/testfile (結果2件)
> > 6.69秒 0.02秒 0.03秒
> >
> > time -p ls /tmp/fuse/root/testfile/test100/ (結果100件)
> > 14.72秒 7.67秒 8.53秒
> >
> > -- system call hook
> > time -p ls /gfarm/root/testfile/ (結果2件)
> > 7.02秒 7.25秒 5.61秒
> >
> > time -p ls /gfarm/root/testfile/test100 (結果100件)
> > 14.86秒 13.97秒 14.26秒
> >
> >
> > ※fuse の方が2回目以降はキャッシュが効くので速い
> >
> > ls の表示速度から見る結果 (fuse の場合)
> > 総ファイル数
> > 1100ファイル 8秒
> > 31500ファイル 230秒 (昨日のテスト結果)
> >
> > 8秒 x 28.6 = 229秒 なので、
> > 総ファイル数が増えると、ほぼリニアに応答時間が増える
> >
> フックでは gfarm_agent 使うとどうでしょうか。
>
> > 最後に気になる点
> > meta サーバがひたすら io write していること。
> > SWAP は発生していない
> > client から ls すると、結果が返ってくるまでひたすら
> > meta サーバ上で io write が発生している理由が判らない
> >
> 書き込みですか。それは気づきませんでした。
> どういうことなのかわかりませんが、石橋の作った環境も ls だけで db 以下の
> ファイルが更新されているようです。
>
> > 以上、
> >
> > 明日からは自作ツールを使いファイル読み込みにかかる時間と
> > クライアント台数を増やした場合の性能劣化を測定予定
>
> --
> 石橋拓也 @ 株式会社 創夢 第一開発部
>