Windows共有CIFS(Windows共有、SMB2.0)とftpのプロトコル性能比較


純粋データのテストファイルを使用してCIFS(SMB2.0)とFTPの比較をLAN内でテストしたところ差ほどの違いはなかった
(多少CIFSに比べFTPプロトコルの方が性能が良かった)。
よりプロトコルの性能を比べるために以下のテストをした。

よりディスクの負荷を減らして純粋にプロトコル性能を測り比べたいため以下のテストを考えた。
・zero(0)埋めデータを使い、NTFS圧縮をかけディスクの読み取り負荷を減らす。
・windowsの特殊nulデバイス(nulファイル)に書き込みディスクの書き込み負荷を減らす
・NTFS圧縮をかけ、読み取りも書き込みをディスク負荷を軽減する。

cifs(Windows共有、SMB2.0)とftpのプロトコル性能比較テスト結果まとめ


いろいろテストしたところ、Windowsのnulデバイス(nulファイル)は特殊なデバイスで、nulファイルを使用した単純コマンド(copy)では正確にテスト出来ているのか不明だった。
簡単なテストをいろいろ試したところ、以下のテストが有効だったと思われる。

CIFS:
サーバーAのzero(0)埋めテストファイルをNTFS圧縮し、サーバーBからコピーコマンドをかけサーバーBのNTFS圧縮をかけたフォルダにコピーする。
67.3MB/s
538.2Mbps

FTP:
サーバーAのzero(0)埋めテストファイルをNTFS圧縮し、サーバーBからftpのgetコマンドをかけサーバーBのnulデバイス(nulファイル)にダウンロードする。
91.2MB/s
730.0Mbps


テスト結果について。
・timiit.exeプログラムを経由する事により、スループット・転送速度が低下していることが分かった。
・プロトコル的にCIFSはもっと転送速度が出ることが確認されているので、テスト的に妥当であったかどうかが不明になった。
・nulデバイスは想定しているイメージ(Linuxのnullデバイス)と異なりテストに使用するのは妥当でない気もする。

ただ転送速度結果・数値は保留として、同環境・同テスト内容で勝ったのはFTPプロトコルといえる。

以下、詳細テスト内容と結果


テスト環境
windows server 2008 SP2


fsutil file createnew  1073741824
で作成したテストファイル10個を使用。
NTFS圧縮。
アロケーションユニットサイズ64KBのパーティションではNTPS圧縮(内容を圧縮してディスク領域を節約する)できず。


NTFS圧縮かけたテストファイルを、nulデバイスにコピー


D:\>timeit cmd /c copy "\\test-server\c$\tmp\test\*" nul
\\test-server\c$\tmp\test\test01.dat
\\test-server\c$\tmp\test\test02.dat
\\test-server\c$\tmp\test\test03.dat
\\test-server\c$\tmp\test\test05.dat
\\test-server\c$\tmp\test\test06.dat
\\test-server\c$\tmp\test\test07.dat
\\test-server\c$\tmp\test\test08.dat
\\test-server\c$\tmp\test\test09.dat
\\test-server\c$\tmp\test\test10.dat
        1 個のファイルをコピーしました。

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        3:43 pm, Monday, March 1 2010
Elapsed Time:     0:02:47.663
Process Time:     0:00:22.510
System Calls:     2818384
Context Switches: 1071303
Page Faults:      2459456
Bytes Read:       2148854690
Bytes Written:    1073974307
Bytes Other:      3181480


32.1MB/s
256.8Mbps


D:\>timeit ftp -n -s:test.dat test-server
test-server に接続しました。
220 Microsoft FTP Service
ftp> user administrator password
331 Password required for administrator.
230 User administrator logged in.
ftp> bi
200 Type set to I.
ftp> prompt
対話モード オフ。
ftp> get test01.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test01.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.28秒 95223.65KB/秒。
ftp> get test02.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test02.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.03秒 97356.23KB/秒。
ftp> get test03.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test03.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 10.91秒 98427.15KB/秒。
ftp> get test04.dat nul
200 PORT command successful.
550 test04.dat: The system cannot find the file specified.
ftp> get test05.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test05.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.36秒 94552.82KB/秒。
ftp> get test06.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test06.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.25秒 95418.27KB/秒。
ftp> get test07.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test07.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.10秒 96733.50KB/秒。
ftp> get test08.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test08.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.12秒 96576.89KB/秒。
ftp> get test09.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test09.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 11.14秒 96377.51KB/秒。
ftp> get test10.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test10.dat(1073741824 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 1073741824 バイトが受信されました 10.97秒 97924.47KB/秒。
ftp> quit
221

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:10 pm, Monday, March 1 2010
Elapsed Time:     0:01:41.047
Process Time:     0:00:13.119
System Calls:     2434733
Context Switches: 552825
Page Faults:      2409811
Bytes Read:       54902273
Bytes Written:    1074139222
Bytes Other:      1055856555



91.2MB/s
730.0Mbps




テストファイル10GBをnulデバイスへコピー


D:\>timeit cmd /c copy \\test-server\c$\tmp\test\test10g.dat nul
        1 個のファイルをコピーしました。

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:20 pm, Monday, March 1 2010
Elapsed Time:     0:03:00.831
Process Time:     0:00:20.311
System Calls:     3404923
Context Switches: 1187715
Page Faults:      2710493
Bytes Read:       12293647
Bytes Written:    2147877798
Bytes Other:      4573391


28.4MB/s
227.6Mbps

D:\>timeit ftp -n -s:test.dat test-server
test-server に接続しました。
220 Microsoft FTP Service
ftp> user administrator password
331 Password required for administrator.
230 User administrator logged in.
ftp> bi
200 Type set to I.
ftp> prompt
対話モード オフ。
ftp> get test10g.dat nul
200 PORT command successful.
150 Opening BINARY mode data connection for test10g.dat(10737418240 bytes).
> Replace Existing File with Temp File:エラー番号が不明です
226 Transfer complete.
ftp: 10737418240 バイトが受信されました 114.59秒 93702.93KB/秒。
ftp>
ftp> quit
221

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:25 pm, Monday, March 1 2010
Elapsed Time:     0:01:54.753
Process Time:     0:00:19.515
System Calls:     2717988
Context Switches: 626031
Page Faults:      2675528
Bytes Read:       72305110
Bytes Written:    2148057944
Bytes Other:      2117967427

89.8MB/s
718.6Mbps



アロケーションユニットサイズ64KBからnulデバイスへのコピー

D:\>timeit cmd /c copy \\test-server\d$\testz\* nul
\\test-server\d$\testz\test01.dat
\\test-server\d$\testz\test02.dat
\\test-server\d$\testz\test03.dat
\\test-server\d$\testz\test05.dat
\\test-server\d$\testz\test06.dat
\\test-server\d$\testz\test07.dat
\\test-server\d$\testz\test08.dat
\\test-server\d$\testz\test09.dat
\\test-server\d$\testz\test10.dat
        9 個のファイルをコピーしました。

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:30 pm, Monday, March 1 2010
Elapsed Time:     0:03:44.734
Process Time:     0:00:20.498
System Calls:     4145182
Context Switches: 1178279
Page Faults:      2476209
Bytes Read:       2152529740
Bytes Written:    1074039563
Bytes Other:      6091261


22.8MB/s
182.5Mbps


コピー元のサーバー、テストファイルを読み取っている。

アロケーションユニットサイズ64KBからntfs圧縮へのコピー


D:\>timeit cmd /c copy \\test-server\d$\testz\* c:\tmp\test
\\test-server\d$\testz\test01.dat
\\test-server\d$\testz\test02.dat
\\test-server\d$\testz\test03.dat
\\test-server\d$\testz\test05.dat
\\test-server\d$\testz\test06.dat
\\test-server\d$\testz\test07.dat
\\test-server\d$\testz\test08.dat
\\test-server\d$\testz\test09.dat
\\test-server\d$\testz\test10.dat
        9 個のファイルをコピーしました。

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:34 pm, Monday, March 1 2010
Elapsed Time:     0:02:31.082
Process Time:     0:00:10.264
System Calls:     2918938
Context Switches: 429158
Page Faults:      6952189
Bytes Read:       1075900169
Bytes Written:    1074153646
Bytes Other:      4199235


61.0MB/s
488.3Mbps

NTFS圧縮からNTFS圧縮へCIFSコピー

D:\>timeit cmd /c copy \\test-server\c$\tmp\test\* c:\tmp\test
\\test-server\c$\tmp\test\test01.dat
\\test-server\c$\tmp\test\test02.dat
\\test-server\c$\tmp\test\test03.dat
\\test-server\c$\tmp\test\test05.dat
\\test-server\c$\tmp\test\test06.dat
\\test-server\c$\tmp\test\test07.dat
\\test-server\c$\tmp\test\test08.dat
\\test-server\c$\tmp\test\test09.dat
\\test-server\c$\tmp\test\test10.dat
        9 個のファイルをコピーしました。

Version Number:   Windows NT 6.0 (Build 6002)
Exit Time:        4:42 pm, Monday, March 1 2010
Elapsed Time:     0:02:17.801
Process Time:     0:00:10.452
System Calls:     2581041
Context Switches: 400906
Page Faults:      6930777
Bytes Read:       1079848306
Bytes Written:    1075097230
Bytes Other:      3818944


67.3MB/s
538.2Mbps


コピー先(copyコマンドを発行している側)のサーバーのリソースモニタ。
ファイルの書き込みは行われている、しかし最終的にはNTFS圧縮がかかっている。

ちなみに、FTPを使用して上記NTFS圧縮をしようしたテストは出来なかった。
getしてきたフォルダがNTFS圧縮されているが、自動で圧縮はしませんでした。

サブページ リスト

Comments