ストレステスト・負荷テスト(ベンチマークソフト)

 
Windowsプログラムの実行時間を計るには
Windows Resource Kits にあるtimeitコマンドが便利です。
Windows XPのリソースキットのtimeit.exeの単体exeコピーで
・windows server 2003
・windows server 2008
上で動作しました。
 



環境
・Windows Server 2003 R2
・AX4-5i 
パーティション2TB NTFS クラスタサイズ4KB

■ 書き込み速度テスト
# test,dat はfsutilで作成した10GB(10737418240Byte)ファイル。その後「内容を圧縮してディスク領域を節約する」した。
# 4KBに圧縮する事により、同一ディスクに配置したにも関わらずriad i/o(読み取り)の負荷をなくしている。

Z:>timeit.exe cmd /c copy test.dat test2.dat
        1 個のファイルをコピーしました。

Version Number:   Windows NT 5.2 (Build 3790)
Exit Time:        7:01 pm, Monday, February 8 2010
Elapsed Time:     0:01:38.559
Process Time:     0:00:27.390
System Calls:     1022071
Context Switches: 1213144
Page Faults:      6235909
Bytes Read:       2364206059
Bytes Written:    3197640166
Bytes Other:      3186456046

テストデータファイル: test.dat(10737418240bytes)
Write 104MB/s

全て"同一の0"の書き込み(write i/o)により、書き込みキャッシュが効果を発揮していると思われる。
この方法で書き込みストレステストをするには、ランダムデータのファイルを別の負荷が影響しないディスクに配置する必要がありそうだ。
そうなると簡単により純粋な書き込み速度を計ることは難しい

Z:>timeit.exe cmd /c copy D:\temp\B2D000037.bkf test2.dat
        1 個のファイルをコピーしました。

Version Number:   Windows NT 5.2 (Build 3790)
Exit Time:        10:26 am, Tuesday, February 9 2010
Elapsed Time:     0:00:46.795
Process Time:     0:00:07.703
System Calls:     535814
Context Switches: 514224
Page Faults:      1591641
Bytes Read:       2129859627
Bytes Written:    1427027240
Bytes Other:      1153473667

テストデータファイル: B2D000037.bkf(3,086,509,056bytes)
64 MB/s


■ 読み込み速度テスト

Z:>timeit.exe cmd /c copy test2.dat nul
        1 個のファイルをコピーしました。

Version Number:   Windows NT 5.2 (Build 3790)
Exit Time:        7:28 pm, Monday, February 8 2010
Elapsed Time:     0:03:14.354
Process Time:     0:00:32.671
System Calls:     1687216
Context Switches: 1180498
Page Faults:      2891338
Bytes Read:       3837852003
Bytes Written:    2169762704
Bytes Other:      323754538

テストデータファイル: test.dat(10737418240bytes)
read 52MB/s

Z:>timeit.exe cmd /c copy test2.dat nul
        1 個のファイルをコピーしました。

Version Number:   Windows NT 5.2 (Build 3790)
Exit Time:        10:35 am, Tuesday, February 9 2010
Elapsed Time:     0:00:00.000
Process Time:     0:00:00.000
System Calls:     1542
Context Switches: 212
Page Faults:      678
Bytes Read:       66048
Bytes Written:    13364
Bytes Other:      3674711

テストデータファイル: test2.dat(3,086,509,056bytes)
測定ならず。"0"埋めデータファイルとの違いが気になる。

Z:>timeit.exe cmd /c type test2.dat >nul

Version Number:   Windows NT 5.2 (Build 3790)
Exit Time:        10:51 am, Tuesday, February 9 2010
Elapsed Time:     0:15:28.944
Process Time:     0:04:32.859
System Calls:     211024228
Context Switches: 195416870
Page Faults:      1969242
Bytes Read:       2707111734
Bytes Written:    3239605962
Bytes Other:      26474037

テストデータファイル: test2.dat(3,086,509,056bytes)
3MB/s
遅すぎる。System CallsやContext Switchesが多い。

残念ながら、上記の簡易読み込みテストはディスクのストレステスト(負荷テスト)にならないことがわかった
Windows Server 2008でリソースモニターを見ながらテストすると簡単に意味をなしていないことがわかる。
windowsのnulというデバイスはやはり特殊なデバイスなのかもしれない。

サブページ リスト