- PR -

ファイル数とネットワークコピー速度

投稿者投稿内容
たあ
会議室デビュー日: 2006/12/14
投稿数: 8
投稿日時: 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/11/25
投稿数: 149
投稿日時: 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/

うえの情報で該当しそうな内容がないかあたりをつけ、普通はパケットキャプチャ(ネットワークトレース)をとって調査をし、可能性が高そうならレジストリ値を調整するなどで対応する方法になると思います。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-12-16 11:22
引用:

たあさんの書き込み (2006-12-15 22:46) より:
200MB:1500ファイル ⇒ 7〜8分


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}
dodo
ベテラン
会議室デビュー日: 2004/05/12
投稿数: 99
お住まい・勤務地: 東京都渋谷区
投稿日時: 2006-12-16 12:09
引用:

たあさんの書き込み (2006-12-15 22:46) より:

200MB:1500ファイル ⇒ 7〜8分
200MB:1ファイル   ⇒ 40〜50秒
何度かやってみましたが、大体10倍近く差が出ました。

データ移行などの作業時に作業時間を見積もることが出来ず困ってしまいます。
何か知っている方がおりましたら、ぜひぜひ教えて下さい。



回答になっていないかも知れませんが、まずファイルを圧縮して1つにまとめ、
それを転送して、最後に転送先で解凍すれば、そんなに時間がぶれる事はないと思います。
たあ
会議室デビュー日: 2006/12/14
投稿数: 8
投稿日時: 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つにして送る」案については
さっそく採用しようと思います!
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-12-16 16:09
参考までに、FDへ書き込みをするとファイル数の増加により圧倒的に遅くなるのを体感できますよ。
Johann
ベテラン
会議室デビュー日: 2005/08/31
投稿数: 52
投稿日時: 2006-12-17 05:31
ファイル数が多い場合、複数スレッド使って転送かけてみてはどうでしょうか。
SMBはできないかもしれませんがFTPはできたと思います。
チャブーン
大ベテラン
会議室デビュー日: 2006/11/25
投稿数: 149
投稿日時: 2006-12-19 12:13
チャブーンです。

#質問されてる方が納得されてるようなのでオフトピ扱いでかまいませんが

> ケース1)サーバーからクライアントへのDL
> 1ファイル : 14秒
> ...
> 5260ファイル : 210秒
>
> ケース2)クライアントからサーバーへの書き込み
> 1ファイル : 14秒
> ...
> 5260ファイル : 82秒

5260 ファイルの差から考えて、(やりとりするクライアントとサーバは同じ機材なのでしょうから) SMB の影響もあるのかなとは思っています。

ただし、こちらでは、どういう環境で実施しているかわからない (ドメインコントローラの有無や OS のバージョンなど KB からあたりを付ける場合に必要になるでしょう)
こと、最初にコメントしたとおり調査の方法がそれなりに面倒になりますから、ご自身で腰を据えて調べられるか、わかる人に見てもらう必要があるかもしれません。

話しの流れから、"ファイルコピーを早くしたい、完了時間の目処が知りたい" ということのようですので、これ以上はとくに申し上げることはありません。

スキルアップ/キャリアアップ(JOB@IT)