- - PR -
ファイル数とネットワークコピー速度
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-15 22:46
こんにちは
初めて書き込みさせていただきます。 ファイルサーバーなどでネットワーク越しでデータをコピーする際、 同じ容量でもファイル数が多い場合、コピー速度が遅くなると感じたことは ありませんでしょうか?(※SMB/CIFSプロトコルで) この度、200MBぐらいのデータで簡単にテストを行ってみたら以下のような結果になりました。 200MB:1500ファイル ⇒ 7〜8分 200MB:1ファイル ⇒ 40〜50秒 何度かやってみましたが、大体10倍近く差が出ました。 1つのファイルのサイズが数バイトとかなら、1パケットで運べる効率が悪くなるなど予想されるかと思うのですが、1500ファイルの場合1ファイル50KB程度なので10倍も変わるほど効率が悪くなるとは思えません。 ディスクへの書き込みのみの速度も計ってみましたが、2倍も差が出ない結果でした。 (CドライブからDドライブへコピー) これはいったい何がボトルネックなのでしょうか? SMB/CIFSの仕様なのでしょうか? データ移行などの作業時に作業時間を見積もることが出来ず困ってしまいます。 何か知っている方がおりましたら、ぜひぜひ教えて下さい。 | ||||
|
投稿日時: 2006-12-16 03:11
チャブーンです。
SMB ベースのネットワーク遅延については MS からたとえば、したのような情報がでています。調べてみるとよいのでは? ほかの情報も MSKB (サポート技術情報) には載っているので、あわせてご自分で調べるといいですよ。 http://support.microsoft.com/kb/321098/ http://support.microsoft.com/kb/321169/ http://support.microsoft.com/kb/885189/ja http://support.microsoft.com/kb/330929/ うえの情報で該当しそうな内容がないかあたりをつけ、普通はパケットキャプチャ(ネットワークトレース)をとって調査をし、可能性が高そうならレジストリ値を調整するなどで対応する方法になると思います。 | ||||
|
投稿日時: 2006-12-16 11:22
7〜8[分] ÷ 1500[ファイル] = 0.28〜0.32[秒/ファイル] 200[MB] ÷ 1500[ファイル] = 133[KB/ファイル] ですよね。たしかに遅いですね。 転送時間がファイル数に比例するのかどうかを調べられたほうが良いと思います。 たとえば 1/5 の 300ファイルだと何秒かかるでしょうか。 時間もそれに比例して 1/5 になれば、ネットワークの問題やウィルス対策ソフトウェアの影響ぐらいしか考えられません。 もし、時間が 1/5 よりも短くなったら、ファイル数が多いとだんだん遅くなるという現象だということになります。FAT16 などの古いファイルシステムのひとつのディレクトリーにファイルを詰め込むと遅くなるとかそういうことかもしれません。 逆に、もし、時間が 1/5 よりも長くなったら、う〜ん、なんでしょう。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2006-12-16 12:09
回答になっていないかも知れませんが、まずファイルを圧縮して1つにまとめ、 それを転送して、最後に転送先で解凍すれば、そんなに時間がぶれる事はないと思います。 | ||||
|
投稿日時: 2006-12-16 14:38
皆様
早速のご回答ありがとうございます。 前に書き込んだテスト結果ですが、使用したファイルサーバーのボリュームに圧縮属性がかかっていたりしたので再度、テストしなおしてみました。 【条件】 100MB:1ファイル・・・imgファイル 100MB:220ファイル・・・xlsファイル(460KB) 100MB:520ファイル・・・xlsファイル(200KB) 100MB:2000ファイル・・・xlsファイル(50KB) 100MB:5260ファイル・・・xlsファイル(20KB) ケース1)サーバーからクライアントへのDL 1ファイル : 14秒 220ファイル : 47秒 520ファイル : 45秒 2000ファイル : 95秒 5260ファイル : 210秒 ケース2)クライアントからサーバーへの書き込み 1ファイル : 14秒 220ファイル : 19秒 520ファイル : 26秒 2000ファイル : 43秒 5260ファイル : 82秒 ケース3)クライアント内でのパーティション間のコピー 1ファイル : 14秒 220ファイル : 13秒 520ファイル : 14秒 2000ファイル : 22秒 5260ファイル : 50秒 ケース1、2より、何かしらの速度とファイル数の因果関係があると想定できるかと思います。 さらに、よりパフォーマンスの高いサーバーへの書き込みの場合、 その逆と比べ、遅延の傾斜がゆるくなっているので、 データの作成、書き込み時のCPU、メモリ、ディスクI/Oなどが関係しているのかと想像します。 ケース3より単純にデータの作成、書き込みのみの速度とファイル数にも因果関係があるかと思います。 ちなみに、FTPでも同様のテストをおこなって見ました。 ケース4)FTPサーバーからクライアントへのDL 1ファイル : 12秒 220ファイル : 18秒 520ファイル : 24秒 2000ファイル : 57秒 5260ファイル : 148秒 以上の結果からいろいろ考えては見たのですが、どうも問題はネットワークでなく ディスクのI/Oやその他の原因がくさいのかなと思っています。 ご指摘のとおり、サーバー、クライアントともに NortonのAutoProtect(ファイルが作成、変更されるたびにスキャンを実行) が効いておりますので、そちらをはずした検証を行わないと正確なことは言えないような 気もします。 原因となりうる要因が多すぎて、奥が深い問題になってしまいました。 気軽に質問してしまい、すみません。 「細かいデータ郡は圧縮して1つにして送る」案については さっそく採用しようと思います! | ||||
|
投稿日時: 2006-12-16 16:09
参考までに、FDへ書き込みをするとファイル数の増加により圧倒的に遅くなるのを体感できますよ。
| ||||
|
投稿日時: 2006-12-17 05:31
ファイル数が多い場合、複数スレッド使って転送かけてみてはどうでしょうか。
SMBはできないかもしれませんがFTPはできたと思います。 | ||||
|
投稿日時: 2006-12-19 12:13
チャブーンです。
#質問されてる方が納得されてるようなのでオフトピ扱いでかまいませんが > ケース1)サーバーからクライアントへのDL > 1ファイル : 14秒 > ... > 5260ファイル : 210秒 > > ケース2)クライアントからサーバーへの書き込み > 1ファイル : 14秒 > ... > 5260ファイル : 82秒 5260 ファイルの差から考えて、(やりとりするクライアントとサーバは同じ機材なのでしょうから) SMB の影響もあるのかなとは思っています。 ただし、こちらでは、どういう環境で実施しているかわからない (ドメインコントローラの有無や OS のバージョンなど KB からあたりを付ける場合に必要になるでしょう) こと、最初にコメントしたとおり調査の方法がそれなりに面倒になりますから、ご自身で腰を据えて調べられるか、わかる人に見てもらう必要があるかもしれません。 話しの流れから、"ファイルコピーを早くしたい、完了時間の目処が知りたい" ということのようですので、これ以上はとくに申し上げることはありません。 |