========================================================================== DevTest -- Device Benchmark Test Program for Windows NT/2000/XP Version 1.01a edition #01 (C) Copyright 2002, TARO ==========================================================================  DevTest はストレージ・デバイスの情報を表示し、性能を調べるためのWindows NT/2000/XP用ベンチマーク テスト プログラムです。  Windows NT/2000/XPで認識できるハードディスクやリムーバブルディスク、CD/ DVD-ROMドライブの性能を調べることができます。  書き込みテストについてはファイルシステムを破壊するために対応していません が、ソースコードを公開していますので開発環境と知識があれば書き込みテストの 対応も可能です。 ※ Windows 95/98/Meには対応していません。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-1 ファイル構成 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= devtest.exe 実行プログラム devtest.txt 説明(本ファイル) devtest-1.01a01-src.zip ソースコード(アーカイブ) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-2 実行環境 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= OS: Windows NT 4.0 Windows 2000 Windows XP  ※ Windows 95/98/Meには対応していません。  ※ Windows NT/2000/XP では Administrator(管理者)権限を持つユーザーで実 行してください。  DevTest は Windows NT4.0/2000/XP用のコンソール用プログラムです。コマンド・ プロンプトからDevTestとタイプして実行・使用してください。  DevTest を実行するユーザーは、ドライブにアクセスする権限が必要となります。 管理者(Adminisrator)権限のあるユーザーでなければ実行できない場合がありま す。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §1-3 使用、転載、再配付について -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  このプログラムの著作権は作者が保持しています。  以下の条件に従って自由に使用してください。 1. 著作権表示を変更しないこと。 2. このプログラムを使用したことによって生じた損害はまったく保証し ない。 3. 作者はこのプログラムに不備があっても、それを訂正する義務を負わ ない。 4. 収録されているすべてのファイルを一括して配付すること。  感想・障害報告等、作者への連絡は、 e-mail taro.kobayashi@nifty.com まで、願いします。  電子メールでのお問い合わせは返事が遅れたり、あるいは返信のメールが行かな いこともありますので、予めご了承ください。  転載、再配付については作者の許諾を得る必要はありません。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §2-1 DevTest の使い方 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  コマンドプロンプトからDevTest をパラメータなしで実行すると次のように、 ドライブレターに割り当てられているディスクドライブの一覧を表示します。  ハードディスクに複数のパーティションを作成している場合、複数のドライブ レターで同じディスクドライブ情報が表示されます。 実行例:devtest ------------------------------------------------------------------------------ C: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G D: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G E: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G F: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G G: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G I: 0-0-0 Maxtor 98196H8 ZAH8 - FIX 76.3G J: 0-2-0 Maxtor 4G120J6 GAK8 - FIX 114.4G K: 0-2-0 Maxtor 4G120J6 GAK8 - FIX 114.4G L: 0-2-0 Maxtor 4G120J6 GAK8 - FIX 114.4G Q: 0-3-0 PIONEER DVD-ROM DVD-303 1.06 - Direct access device RMB 4.1G ------------------------------------------------------------------------------  Cドライブのパーティション情報を表示したい場合には、コマンドラインに 「devtest c: -p」と入力します。FAT/NTFS/UDFフォーマットについて詳細な情報を 表示したい場合は「devtest c: -p -v」と入力します。  先頭にアスタリスク「*」 があるパーティションはアクティブパーティションです。 実行例:devtest c: -p ------------------------------------------------------------------------------ c: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G IBM HARD-DISK FORMAT ( 512) 80418240 sectors 41,174,138,880B No [StartCHS]-[End CHS] StartSec SectorNum HH:Partition Type SIZE --- --------------------- ---------- ---------- --:-------------------- ------- *1 [01 01 00]-[FE 7F 04] 63 4192902 06:FAT16 (>=32M) 1.9G 2 [00 41 05]-[FE FF FF] 4192965 76212360 0F:Extended LBA 36.3G e1 [01 41 05]-[FE FF FF] 4193028 16739667 07:NTFS 7.9G e2 [01 C1 FF]-[FE FF FF] 20932758 16739667 07:NTFS 7.9G e3 [01 C1 FF]-[FE FF FF] 37672488 16739667 07:NTFS 7.9G e4 [01 C1 FF]-[FE FF FF] 54412218 25928847 07:NTFS 12.3G ------------------------------------------------------------------------------ 実行例:devtest c: -p -v ------------------------------------------------------------------------------ c: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G IBM HARD-DISK FORMAT ( 512) 80418240 sectors 41,174,138,880B No [StartCHS]-[End CHS] StartSec SectorNum HH:Partition Type SIZE --- --------------------- ---------- ---------- --:-------------------- ------- *1 [01 01 00]-[FE 7F 04] 63 4192902 06:FAT16 (>=32M) 1.9G Jump Code EB 3C 90 OEM ID MSDOS5.0 Sector Size 512 Sector per Cluster 64 (32768 bytes) Reserve Sector 1 FAT Number 2 Root Entry 512 Sector Volume 0 (0 bytes) Media Descriptor F8H FAT Sector 256 Sector per Track 63 Head Number 255 Hidden Sector 63 Long Sector Volume 4192902 (2,146,765,824 bytes) Serial No 196C-1B03 Volume Label SYSBOOT File System FAT16 ------------------------------------------------------------------------------  Cドライブのデバイス情報を表示したい場合には、コマンドラインに 「devtest c: -d」と入力します。 実行例:devtest c: -d ------------------------------------------------------------------------------ c: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G Disk Capabilities Maximum Transfer Length 131072 Maximum Physical Pages 32 Supported Asynchronous Events 0 Alignment Mask 1 Tagged Queuing 0 Adapter Scans Down 0 Adapter Uses PIO 1 Disk Drive Geometry Media Type:0CH Fixed Cylinder/Track/Sector:Size 5005/255/63 : 512 (41,167,526,400) Test Unit Ready OK modeSense: pagecode 08H size: 10 - Cache Control Parameter Write Cache Enable 1 Multiplication Factor 0 Read Cache Disable 0 Demand Read Retention Priority 0 Write Retention Priority 0 Disable Pre-fetch Transfer Length 0 Minimum Pre-fetch 0 Maximum Pre-fetch 0 Maximum Pre-fetch Ceiling 0 ------------------------------------------------------------------------------  Cドライブのベンチマークテストを実行したい場合には、コマンドラインに 「devtest c: -benchmark」と入力します。コマンドテストとシークテストも合 わせて実行したいときは、「devtest c: -benchmark -c -s」とします。 実行例:devtest c: -benchmark -c -s ------------------------------------------------------------------------------ c: 0-0-0 IBM-DTLA-305040 TW4O - FIX 38.3G Test Unit Ready command : 0.0ms No Motion Seek command : 0.0ms (use Read command) Average latency Time : 0.0ms Sequential Seek (seek sector 63) : 1.2ms (use Read Command) Random Seek : 17.0ms (use Read Command) TEST MODE / TRACK SIZE : Speed kB/s ( Speed Mbps) ---------------- -------- ------- : ------------- --------------- Sequential Read / START 512B : 4944.8 kB/s ( 39.55 Mbps) Sequential Read / START 16384B : 30599.8 kB/s ( 244.79 Mbps) Sequential Read / START 65536B : 28857.6 kB/s ( 230.86 Mbps) ---------------- -------- ------- : ------------- --------------- Sequential Read / END 512B : 5005.8 kB/s ( 40.4 Mbps) Sequential Read / END 16384B : 15548.4 kB/s ( 124.38 Mbps) Sequential Read / END 65536B : 15204.3 kB/s ( 121.63 Mbps) ---------------- -------- ------- : ------------- --------------- Sequential Read /AVERAGE 512B : 4975.3 kB/s ( 39.80 Mbps) Sequential Read /AVERAGE 16384B : 23074.1 kB/s ( 184.59 Mbps) Sequential Read /AVERAGE 65536B : 22031.0 kB/s ( 176.24 Mbps) ---------------- -------- ------- : ------------- --------------- Random Read / 512B : 33.1 kB/s ( 0.26 Mbps) Random Read / 16384B : 966.6 kB/s ( 7.73 Mbps) Random Read / 65536B : 3473.4 kB/s ( 27.78 Mbps) ------------------------------------------------------------------------------  DevTestはCD/DVD-ROMドライブの速度を計測することもできます。-cdspeedオプ ションまたは-dvdspeedオプションを指定するとそれぞれCD-ROM/DVD-ROMで何倍速 にあたるか表示します。 実行例:devtest Q: -benchmark -c -s -cdspeed ------------------------------------------------------------------------------ Q: 0-1-0 HL-DT-STDVDRAM GMA-4020BA102 - RMB 639.2M Test Unit Ready command : 2.1ms No Motion Seek command : 19.9ms Average latency Time : 27.0ms Sequential Seek (seek sector 32) : 26.6ms Random Seek : 86.9ms TEST MODE / TRACK SIZE : Speed kB/s ( Speed Mbps) CD/DVD ---------------- -------- ------- : ------------- --------------- ------ Sequential Read / START 2048B : 1137.8 kB/s ( 9.10 Mbps) x7.5 Sequential Read / START 16384B : 2187.0 kB/s ( 17.49 Mbps) x14.5 Sequential Read / START 65536B : 2202.7 kB/s ( 17.62 Mbps) x14.6 ---------------- -------- ------- : ------------- --------------- ------ Sequential Read / END 2048B : 1067.2 kB/s ( 8.53 Mbps) x7.1 Sequential Read / END 16384B : 4532.3 kB/s ( 36.25 Mbps) x30.2 Sequential Read / END 65536B : 4935.8 kB/s ( 39.48 Mbps) x32.9 ---------------- -------- ------- : ------------- --------------- ------ Sequential Read /AVERAGE 2048B : 1102.5 kB/s ( 8.82 Mbps) x7.3 Sequential Read /AVERAGE 16384B : 3359.7 kB/s ( 26.87 Mbps) x22.3 Sequential Read /AVERAGE 65536B : 3569.2 kB/s ( 28.55 Mbps) x23.7 ---------------- -------- ------- : ------------- --------------- ------ Random Read / 2048B : 16.5 kB/s ( 0.13 Mbps) x0.1 Random Read / 16384B : 126.6 kB/s ( 1.1 Mbps) x0.8 Random Read / 65536B : 414.1 kB/s ( 3.31 Mbps) x2.7 ------------------------------------------------------------------------------ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §2-1 DevTest コマンドライン書式 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 【書式-1】デバイス情報表示 devtest [<デバイス名>] [<オプション>] 【書式-2】ベンチマークテスト devtest <デバイス名> -benchmark [<オプション>] 【書式-3】ダンプ表示 devtest <デバイス名> -dump <アドレス> [<オプション>] <デバイス名> <文字>: … ドライブ・レター ?: を指定した場合は A〜Zドライブを検索 disk[<番号>] … 物理ディスクドライブ 番号を省略した場合は物理ディスクドライブを検索 cdrom[<番号>] … CD/DVDドライブ 番号を省略した場合はCD/DVDドライブを検索 scsi[<番号>] … SCSIデバイス 番号を省略した場合はSCSIデバイスを検索 <オプション> -? または -H … 説明を表示 -p … パーティション情報を表示 デバイス情報表示で有効 -v … パーティション詳細情報を表示 デバイス情報表示で有効 -d … デバイスの詳細情報を表示 デバイス情報表示で有効 -c … コマンドテスト ベンチマークで有効 -s … シークテスト ベンチマークで有効 -benchmark … ベンチマークテスト -maxBufferSize <サイズ> … 最大バッファサイズをバイト単位で指定 ベンチマークで有効  この指定がない場合、最大バッファサイズは 65536 バイトとなる。 -winfile … Windows のファイルシステム経由でデバイスにアセス ベンチマークで有効 -testTime <秒数> … 計測時間を秒数で指定 ベンチマークで有効  この指定がない場合、計測時間は3秒となる。 -blockTest <サイズ> … 転送ブロックサイズをバイト単位で指定する ベンチマークで有効  この指定がない場合、ブロックサイスは 16384バイトとなる。 -trackZone <パーセンテージ> … 転送テストのトラック位置をパーセンテージで指定 ベンチマークで有効 -seekSector <セクタ数> … シークテストのトラックあたりのセクタ数を指定 ベンチマークで有効 -cdspeed … ベンチマーク結果としてCD-ROMの倍速速度を表示 ベンチマークで有効 -dvdspeed … ベンチマーク結果としてDVD-ROMの倍速速度を表示 ベンチマークで有効 -dump <アドレス> … ダンプ 指定アドレス(セクタ単位)の内容を表示する 【解説】  DevTest には次の3つの機能があります。 ・デバイス情報表示 ・ベンチマークテスト ・ダンプ表示  ベンチマークテストとダンプ表示は特定の1台のデバイスに対してのみ実行可能 ですが、デバイス情報表示は、<デバイス名>の指定方法によりデバイスを検索して 複数にデバイスに対して実行できます。 例) devtest C: … Cドライブを指定 devtest ?: … A〜Zドライブの検索 devtest disk0 … 物理ドライブ0番を指定 devtest disk … 物理ドライブを検索 devtest cdrom0 … CD/DVDドライブ0番を指定 devtest cdrom … CD/DVDドライブを検索 devtest scsi0 … SCSIデバイス0番を指定 devtest scsi … SCSIデバイスを検索  <デバイス名>を省略した場合は、?: を指定したのと同じでA〜Zドライブを検索 してデバイス情報を表示します。  <デバイス名>にscsi/cdromを指定した場合、パーティション情報の表示や、 ベンチマークテストは実行できないことがあります。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §2-3 ベンチマークテストについて -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  DevTestのベンチマークテストには、次の7つの項目があります。  テスト 1〜3 は -C オプションを、テスト 4〜5 は -S オプションを指定した 場合に実行されます。 1) Test Unit Ready command … Test Unit Ready コマンドの実行時間 2) No Motion Seek command … 論理ブロック0 へのシークの繰り返し実行時間 3) Average latency Time … 平均回転待ち時間 4) Sequential Seek … 連続した論理ブロックへのシークの実行時間 5) Random Seek … ランダムな論理ブロックへのシークの実行時間 6) Sequential Read … 連続した論理ブロックのリードの実行時間 7) Random Read … ランダムな論理ブロックへのリードの実行時間  テスト 1〜5 はドライブによってはコマンドをサポートしていないために実行で きなかったり、実行できても本来の動作をしないために不正確なテスト結果を表示 する場合があります。テスト2,4,5はSeekコマンド、テスト3はVerifyコマンドを 使用しますが、これをサポートしていない場合はReadコマンドで代用します。その 場合、計測結果には「use Read Command」と表示されます。コマンドをサポート していないのに実行できる場合には1ms以下になる等、不正確な結果を表示する場 合があります。  テスト 4のシーケンシャルシークは、本来なら1トラック分だけ移動しなければ ならないのですが、シークコマンドは論理ブロックアドレスで指定するため1トラッ クあたりのセクタ数を知る必要があります。しかし、本来の1トラックあたりのセ クタ数はアプリケーションからはわからないので、DevTest では Windowsのドライ バが返すドライブ・ジオメトリ(IOCTL_DISK_GET_DRIVE_GEOMETRY )から移動セク タ数を決めています。ドライブ・ジオメトリが取得できない場合には32セクタとし ます。なお、シークテストでのトラックあたりのセクタ数は -seekSectorオプショ ンで指定可能です。  テスト6 Sequential Read は、先頭トラック(START)と最終トラック(END)の 2箇所で計測し、加えて平均値(AVERAGE )も結果として表示します。先頭/最終 トラックは論理ブロックアドレスの大小で決めていますので、実際のディスク上の 外周にあたるか内周にあたるかはドライブによって異なります。最終トラックにつ いてはドライブ容量に換算して5%内側の論理ブロックアドレスから計測します。 計測トラック位置は -trackZoneオプションを指定してユーザーが指定することも 可能です。-trackZoneオプションはトラック位置をパーテセンテージで指定します。  テスト 6〜7 はセクターサイズ単位、 16384バイト単位、最大バッファサイズ 65536 バイト単位の3回、3秒間に何バイト転送できたか調べてデータ転送速度を 求めています。セクターサイズはハードディスクの場合は 512バイト、CD/DVDでは 2048バイトです。したがって、ハードディスクでは 512/16834/65536バイト単位 での転送速度を計測します。2回目の転送単位 16384バイトは-blockTestオプショ ン、3回目の転送単位 65536バイトは-maxBufferSizeオプションで変更できます。  デバイスによっては大きな転送サイズを指定すると、エラーが発生して計測でき ないことがあります。その場合は、-maxBufferSizeオプションで最大バッファサイ ズを制限してください。または、-winfileオプョンを指定すると、このエラーを回 避できることがあります。  -cdspeedオプションまたは-dvdspeedオプションを指定するとテスト 6〜7で計測 した転送速度がそれぞれCD-ROM/DVD-ROM で何倍速にあたるか表示します。CD-ROM は等速を150kバイト/秒、DVD-ROMは等速を1385kバイト/秒として計算します。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §3-1 注意・制限事項 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  ベンチマーク・テストの転送速度の計測は、読み込みのみ対応しています。書き 込みテストは実行するとファイルシステムを破壊するためにわざと使えないように しています。どうしても書き込みテストを実行したい方は、ソースコードを公開し ていますので、各自で対応してください。  古いフロッピィディスクやMO/PD/LS-120等の対してベンチマークテストは実行 しないでください。あまり遅いドライブを対象にベンチマークテストを実行すると システムが不安定になる場合があります。  デバイス情報として表示するの内容はVPD(Vital Product Data)、モード・パラ メータ(Read/Write Error Recovery、Disconnect/Reconnect、Drive Parameter、 Cache Control、Periphery Device、Control Mode、Media Type、Notch/Partition等)、 ディフェクト・リストです。当然ですが、デバイス側が対応していない場合は表示 できません。  未対応のコマンドを使用するとブルーバック画面となりOSごと落ちてしまう出来 の悪いドライバも中にはあるようです。そのような場合は、ドライバを更新するか、 実行をあきらめてください。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §3-2 ソースコードについて -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  DevTest は Visual C/C++ 6.0 で開発しました。  ソースコードをコンパイルするにはDDK (Device driver Development Kit)に 含まれるヘッダファイル ntddcdrm.h ntdddisk.h ntddscsi.h ntddstor.h 等が必要です。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §3-3 参考資料 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  DevTest を制作にするにあたって次の資料/書籍/ソフトウェアを参考にました。 参考にしたプログラム/資料 asbench (作者:橘家鶴蔵 氏) CQ出版社 SCSI-2詳細解説 (著者:菅谷誠一 氏) Linux UDF Filesystem Driver UDF & ECMA 167 資料 http://www.osta.org/ http://www.ecma.ch/ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= §3-4 変更履歴 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ■ ver.1.01a #01 ・リリース