Windows共有CIFS(SMB2.0)とftpの転送速度性能(スループット)比較


CIFS(Windows共有、SMB2.0)とftpのLAN内転送速度比較


テスト概要

テストケース1: サーバーA、サーバーB等もにアロケーションユニットサイズを4KB(デフォルト)としてテスト
テストケース2: サーバーAのアロケーションユニットサイズ64KB、サーバーBのアロケーションユニットサイズ4KB(標準)でテスト
テストケース3: サーバーA、サーバーB共にアロケーションユニットサイズ64KBでテスト

各々のテストケースで、以下のテストをする
cifsのテスト概要:
サーバーA画面からサーバーBに対しcifs接続し、サーバーBにあるテストデータファイルをコピーする。
ftpのテスト概要:
サーバーB画面からサーバーAのFTPサーバーに対しFTP接続し、サーバーBにあるデータをmputする。
それぞれ実行画面(実行プログラム)の処理時間をtimeit.exeで測定し、スループットを計算する

テスト結果について。
※ timiit.exeプログラムを経由する事により、スループット・転送速度が低下していることが分かった。


テスト環境

サーバーAとサーバーB同等のサーバーを用意した。
OSとハードウェア
OS 名: Microsoft® Windows Server® 2008 Standard 32bit
バージョン: 6.0.6002 Service Pack 2 ビルド 6002
プロセッサ: Intel(R) Xeon(R) CPU           E5502  @ 1.87GHz、1862 Mhz、2 個のコア、2 個のロジカル プロセッサ
インストール済みの物理メモリ (RAM): 2.00 GB
合計物理メモリ: 1.99 GB
合計仮想メモリ: 4.24 GB

raid: raid10
disk: SATA 7200rpm 1TB ×4本

Windows Server 2008 を相互のCIFSのクライアントとサーバーとして使用することにより、SMB2.0が使用されている
(Windows Server 2008 もしくはVista以前はSMB1.0を使用。クライアントもしくはサーバーにSMB1.0を使用するwindowsが存在するとその通信はSMB1.0となる)
CIFSプロトコルは、SMB1.0よりSMB2.0は性能・スループット(速度)が良いと思われる。

テストデータファイル

テストデータファイルとしてはバックアップデータ(Backup Exec System Recovery)を1GB(1024MB)に分割したテストデータファイルを10個用意し、このテストデータファイルを元にコピーにより200個の1GBのテストデータファイルを用意した。
またサーバー間はGigabit L2スイッチを使用しLAN接続。




テストケース詳細結果


■ テストケース1
サーバーA、サーバーB等もにアロケーションユニットサイズを4KB(デフォルト)としてテストをした。

D:\>timeit cmd /c copy \\test-server-b\d$\test\* d:\test\ 

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        7:23 pm, Tuesday, February 16 2010
Elapsed Time:     0:51:09.923
Process Time:     0:03:46.560
System Calls:     76338845
Context Switches: 14052285
Page Faults:      55440239
Bytes Read:       51429978
Bytes Written:    4273052671
Bytes Other:      82824014
copyコマンド実行時間:51分9秒
よって、転送速度66.7MB/s(535.4Mbps)

D:\>timeit ftp -s:ftp.dat -n test-server-a 

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        10:57 am, Wednesday, February 17 2010
Elapsed Time:     0:40:40.644
Process Time:     0:03:39.165
System Calls:     66188367
Context Switches: 55238659
Page Faults:      53836876
Bytes Read:       792516801
Bytes Written:    5386807
Bytes Other:      8507118
ftpコマンド実行時間:40分40秒
よって、転送速度83.9MB/s(671.5Mbps)

■ テストケース2
サーバーAのアロケーションユニットサイズ64KB、サーバーBのアロケーションユニットサイズ4KB(標準)

D:\>timeit cmd /c copy \\test-server-b\d$\test\* d:\test\ 

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        12:26 am, Wednesday, February 17 2010
Elapsed Time:     0:47:06.363
Process Time:     0:03:50.163
System Calls:     77630459
Context Switches: 12702180
Page Faults:      56138851
Bytes Read:       1282949592
Bytes Written:    4272973848
Bytes Other:      93543473
copyコマンド実行時間:47分6秒
よって、転送速度72.5MB/s(579.8Mbps)

D:\>timeit ftp -s:ftp.dat -n test-server-a

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        1:41 pm, Wednesday, February 17 2010
Elapsed Time:     0:44:06.902
Process Time:     0:02:06.922
System Calls:     82429124
Context Switches: 53730242
Page Faults:      54414909
Bytes Read:       484471299
Bytes Written:    10307667
Bytes Other:      50425857
ftpコマンド実行時間:44分6秒
よって、転送速度77.4MB/s(619.2Mbps)

■ テストケース3
サーバーA、サーバーB共にアロケーションユニットサイズ64KB

D:\>timeit cmd /c copy \\test-server-b\d$\test\* d:\test\ 

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:39 pm, Wednesday, February 17 2010
Elapsed Time:     0:45:15.060
Process Time:     0:03:46.887
System Calls:     56250130
Context Switches: 7866155
Page Faults:      55706263
Bytes Read:       430903384
Bytes Written:    4266955053
Bytes Other:      45221805
copyコマンド実行時間:45分15秒
よって、転送速度75.3MB/s(603.5Mbps)

D:\>timeit ftp -s:ftp.dat -n test-server-a

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        5:59 pm, Wednesday, February 17 2010
Elapsed Time:     0:44:03.694
Process Time:     0:02:11.243
System Calls:     64105231
Context Switches: 23169186
Page Faults:      54286354
Bytes Read:       1210790756
Bytes Written:    12266034
Bytes Other:      45664752
ftpコマンド実行時間:44分3秒
よって、転送速度77.5MB/s(619.9Mbps)


LAN内、cifsとftpの速度比較結果まとめ


  cifsプロトコル
 スループット
 ftpプロトコル
 スループット
 テストケース1
(4KB→4KB)
 66.7MB/s
(535.4Mbps)
 83.9MB/s
(671.5Mbps)
 テストケース2
(4KB→64KB)
 72.5MB/s
(579.8Mbps)
 77.4MB/s
(619.2Mbps)
 テストケース3
(64KB→64KB)
 75.3MB/s
(603.5Mbps)
 77.5MB/s
(619.9Mbps)

FTPプロトコルはアロケーションユニットサイズよってほぼ変化はない。
CIFS(Windows共有)プロトコルSMB2.0はアロケーションユニットサイズによってスループット(速度)変化があった。


LAN内でのcifsとftpのスループット比較、結果と考察

cifs(windows共有)よりわずかにFTPの方がプロトコル的に転送速度は速いが、距離の近いLAN内ではあまり違いはない。
SMB2.0ではアロケーションユニットサイズを変更することにより、大きいファイルの転送時には転送速度をわずかに上げることが可能。
上記、テストケース1・テストケース2・テストケース3において、ストレージに負荷はあるが明らかなストレージネック(ディスクビジー率が100%等)はなかった。
LANネットワーク帯域の50%~60%使用できている。

今回のテストではRAID10のストレージを使用した。
Writeスループットが150MB/s(1200Mbps)と想定すると上記結果は確かにディスクネック状態にないと言える。
もちろんReadスループットも同様にディスクネック状態ではない。
しかし、RAID5のストレージを使用した場合、Writeスループットを25MB/s(200Mbps)と想定すると、20%程度のネットワーク帯域の使用でディスクネックとなると思われる(大容量のデータ転送の場合)。

また、今回はLAN内でのテストだったが
ネットワークに遅延があるようなWAN環境ではcifsとftpのプロトコル性能事情は変わる。

ネットワーク(LAN)バックアップサーバーを上記ディスク本数でRAID5とRAID10を想定スループットで検討

1日のバックアップウィンドウは8時間とする。

RAID5:
ディスク総容量、3TB
想定Writeスループット、25MB/s
計算上1日に書き込める容量、25MB/s × (8時間 × 60 × 60) = 720000MB ≒ 700GB
計算上バックアップを書き込める容量の70%(バックアップ検証やその他処理)と想定すると、490GB
計算上世代数は、6世代保持ができる

RAID10:
ディスク総容量、2TB
想定Writeスループット、150MB (65MB/sで頭打ちとする)
計算上1日に書き込める容量、65MB/s × (8時間 × 60 × 60) = 1872000MB ≒ 1800GB
計算上バックアップを書き込める容量の70%(バックアップ検証やその他処理)と想定すると、1260GB
計算上世代数は、1世代保持ができる

実際はほとんどのバックアップソフトには圧縮ディスク保存となるのでそのことを考慮すべきです。

RAID10を使用した方が、一日のバックアップウィンドウ(バックアップ時間)内にバックアップ出切るデータ量は増えるが、その分バックアップ世代数の保持ができなくなる。
しかし、バックアップにもフルバックアップだけでなく差分や増分バックアップを組み合わせる事により安いディスクでRAID10の使用することによりバックアップ設計が楽になったりもする。

ネットワーク(LAN)バックアップ運用の安全設計を考えると、
1日フルバックアップ対象サイズ合計が400GB以下の場合、RAID5のバックアップサーバー1台でもOK。
1日フルバックアップ対象サイズ合計が400GB以上の場合、RAID10のバックアップサーバー1台(スケールアップ)またはRAID5のバックアップサーバー2台(スケールアウト)の選択がよいかと思います。


おまけテスト情報


テスト3状態で、サーバーB仮面でサーバーAにFTP接続しサーバーAからテストデータファイルをmgetした場合
D:\>timeit ftp -s:ftp.dat -n test-server-a 

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        3:44 pm, Wednesday, February 17 2010
Elapsed Time:     1:06:23.128
Process Time:     0:08:47.782
System Calls:     108038588
Context Switches: 16396968
Page Faults:      160717131
Bytes Read:       1278651463
Bytes Written:    238549921
Bytes Other:      3711282326
FTPのmget(getコマンド)はmput(putコマンド)より遅い。

ftp.datの内容は
user administrator password
bi
prompt
lcd d:\test
mput *
quit

アロケーションユニットサイズの確認方法
D:\> chkdsk d:


ファイル システムの種類は NTFS です。

警告: /F パラメータが指定されていません
CHKDSK を読み取り専用モードで実行します。

ファイル システムのチェックが終了しました。問題は見つかりませんでした。

1900017663 KB : 全ディスク領域
   3093632 KB : 13 個のファイル
        16 KB : 16 個のインデックス
         0 KB : 不良セクタ
    124767 KB : システムで使用中
     65536 KB : ログ ファイルが使用
1896799248 KB : 使用可能領域

      4096 バイト : アロケーション ユニット サイズ
 475004415 個     : 全アロケーション ユニット
 474199812 個     : 利用可能アロケーション ユニット
Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        10:01 am, Wednesday, February 17 2010
Elapsed Time:     0:00:15.071
Process Time:     0:00:00.436
System Calls:     525064
Context Switches: 262390
Page Faults:      129768
Bytes Read:       250312332
Bytes Written:    127765
Bytes Other:      237914003

D:\>chkdsk d:
ファイル システムの種類は NTFS です。
ボリューム ラベルは ボリューム です。

警告: /F パラメータが指定されていません
CHKDSK を読み取り専用モードで実行します。

ファイル システムのチェックが終了しました。問題は見つかりませんでした。

1900017663 KB : 全ディスク領域
   3093952 KB : 12 個のファイル
       256 KB : 14 個のインデックス
         0 KB : 不良セクタ
     70015 KB : システムで使用中
     65536 KB : ログ ファイルが使用
1896853440 KB : 使用可能領域

     65536 バイト : アロケーション ユニット サイズ
  29687775 個     : 全アロケーション ユニット
  29638335 個     : 利用可能アロケーション ユニット
Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        11:35 am, Wednesday, February 17 2010
Elapsed Time:     0:00:06.579
Process Time:     0:00:00.140
System Calls:     249907
Context Switches: 85642
Page Faults:      28521
Bytes Read:       90229309
Bytes Written:    99144
Bytes Other:      15097681


サブページ リスト

Comments