データファイルは大きいのがいいの?検証
データファイルは大きいのがいいの?検証
0.更新履歴
- 2002.03.15 新規作成.
- 2002.03.18 並列でちっちゃいファイル複写の計測と結果の追加.
- 2002.03.19 大きいファイルとの比較を追加.
1.はじめに
このドキュメントでは,Windows2000サーバ上で,データファイルをSMBによってネットワーク転送する場合,ファイルサイズの関係によってどの程度差があるのかを検証する為のものである.
この検証は,たとえば,Oracleでオープンバックアップをしたデータファイルを,別のサーバに転送して利用する際に,より効率の良い方法を導くものである.
2.テストその1 ファイルは小さいほうが良いのではないか
2.1.仮説
同じ容量のデータファイルを使用する場合,単一の大きいファイルより,複数の小さいファイルの方が,転送効率は良いのではないか.
でっかいファイル |
1GB単一ファイル. |
|
ちっちゃいファイル |
256MB×4ファイル. |
こっちの方が速いのでは? |
2.2.テストパターンと内容
パターンNo |
内容 |
1 |
1GBの単一ファイル |
2 |
512MB×2ファイル |
3 |
256MB×4ファイル |
- あらかじめ,どこかのドライブをマウントしておく.
- コマンドプロンプトを起動し,その上で,copyコマンドを使って複写する.
- このテストのために,特別に独立したネットワークは作らない.
- 使ったバッチファイルは次のとおり.
テストで使ったバッチファイル
@echo off
echo 1GB Start
now
copy s:\test1g.dat
now
echo 1GB End
echo 512MB Start
now
copy s:\test51*.dat
now
echo 512MB End
echo 256MB Start
now
copy s:\test25*.dat
now
echo 256MB End
|
- Win2000についている,timeコマンドでは秒まで表示されないので,NT4.0リソースキットについているnow.exeを使っている.
2.3.結果
|
1GB |
512MB |
256MB |
1回目 |
開始 |
18:08:27 |
18:10:56 |
18:13:24 |
終了 |
18:10:56 |
18:13:24 |
18:15:55 |
経過時間 |
00:02:29 |
00:02:28 |
00:02:31 |
2回目 |
開始 |
18:45:17 |
18:47:43 |
18:50:10 |
終了 |
18:47:43 |
18:50:10 |
18:52:39 |
経過時間 |
00:02:26 |
00:02:27 |
00:02:29 |
3回目 |
開始 |
19:05:06 |
19:07:32 |
19:10:00 |
終了 |
19:07:32 |
19:10:00 |
19:12:35 |
経過時間 |
00:02:26 |
00:02:28 |
00:02:35 |
平均 |
00:02:27 |
00:02:28 |
00:02:32 |
どの結果も,同じ結果が出ている.
合計サイズが同容量であれば,ファイル数が少ないほうが高速に複写されるようである.
3.並列で複写をした場合にどうなるか
256MBのファイル4つ,合計1GBのファイルを,並列で複写した場合,速いか遅いかを確認する.
並列というのは,コマンドプロンプトを4つ開いて,それぞれで256MBの別々のファイルをほぼ同時にcopyコマンドを実行した結果である.
|
1回目 |
2回目 |
3回目 |
開始 |
21:36:11 |
21:42:22 |
21:48:45 |
終了 |
21:41:32 |
21:47:31 |
21:54:22 |
経過時間 |
00:05:21 |
00:05:09 |
00:05:37 |
平均 |
00:05:22 |
並列で複写させると,オーバヘッドがかかるためか,直列時の2倍の時間が必要になっている.
この結果から考えると,データベースのような常時I/Oが多いアプリケーションが稼動している際に,I/O負荷の高い処理を行うのは,あまりお勧めできないのかもしれない...
4.大きいファイル時の1MBあたりの転送効率
さらに大きいファイルをcopyして,その経過時間から転送量を計算し,秒あたりの転送量を調べる.
256MBファイルの複写
|
1回目 |
2回目 |
3回目 |
開始時刻 |
12:18:49 |
12:18:49 |
12:28:33 |
終了時刻 |
12:19:27 |
12:19:27 |
12:29:15 |
経過時間 |
00:00:38 |
00:00:38 |
00:00:42 |
秒 |
38 |
38 |
42 |
転送MB/sec |
6.74 |
6.74 |
6.10 |
512MBファイルの複写
|
1回目 |
2回目 |
3回目 |
開始時刻 |
12:32:47 |
12:41:24 |
12:46:44 |
終了時刻 |
12:33:59 |
12:42:36 |
12:47:56 |
経過時間 |
00:01:12 |
00:01:12 |
00:01:12 |
秒 |
72 |
72 |
72 |
転送MB/sec |
7.11 |
7.11 |
7.11 |
1GBファイルの複写
|
1回目 |
2回目 |
3回目 |
開始時刻 |
18:08:27 |
18:45:17 |
19:05:06 |
終了時刻 |
18:10:56 |
18:47:43 |
19:07:32 |
経過時間 |
00:02:29 |
00:02:26 |
00:02:26 |
秒 |
149 |
146 |
146 |
転送MB/sec |
6.87 |
7.01 |
7.01 |
2GBファイルの複写
|
1回目 |
2回目 |
3回目 |
開始時刻 |
11:09:35 |
11:25:16 |
11:30:46 |
終了時刻 |
11:14:50 |
11:30:22 |
11:36:17 |
経過時間 |
00:05:15 |
00:05:06 |
00:05:31 |
秒 |
315 |
306 |
331 |
転送MB/sec |
6.50 |
6.69 |
6.19 |
3GBファイルの複写
|
1回目 |
2回目 |
3回目 |
開始時刻 |
11:37:04 |
11:50:11 |
11:59:58 |
終了時刻 |
11:45:34 |
11:58:52 |
12:08:43 |
経過時間 |
00:08:30 |
00:08:41 |
00:08:45 |
秒 |
510 |
521 |
525 |
転送MB/sec |
6.02 |
5.90 |
5.85 |
平均
1ファイルのサイズ |
転送速度 |
256MB |
6.52MB/sec |
512MB |
7.11MB/sec |
1GB |
6.97MB/sec |
2GB |
6.46MB/sec |
3GB |
5.92MB/sec |
この結果から,転送効率が良いのは,単一512MBか1GBファイルとなる.
特に,7MB/sec出ているので,これが100Mbit Etherの限界に近い数値がでている.