購入したので(→関連記事)、ベンチマークテストを行ないました。当初の目的はSATAハードディスクの性能を調べるためでしたが、SATAインターフェース/コントローラによる性能の違いをテストするベンチマークといったほうがいいかもしれません。今回は単独ハードディスクで、次回は2台によるストライピング(RAID-0)のテストを行なう予定です。1420SAベンチマーク(2)テスト環境ベンチマークテスト環境は以下の4つです。HDT722525DLA380を接続してテストを行ないました。今後、それぞれのテスト環境を1420SA、VT6420、ICH5R、ATA133と呼びます。主なスペックも載せておきます。参考までに、以前に調べたほかのハードディスクのスペックも載せておきます。5.1.2600.01420SA、VT6420、ATA133は同じPCです。ATAハードディスクをパラレルATAに変換した上でUDE/ATA133インターフェースに接続しています。ver.1.04a01を使いました(このバージョンはまだ登録されていませんが、後日登録する予定です)。公開しているDevTestは書き込みテストは実行できません(書き込みテストを実行するとファイルシステムを破壊して危険ですので)。テスト内容やアルゴリズムについてはDevTestのドキュメントやソースを参考にしてください。テストまずは1420SA環境でハードディスクの全領域をリード/ライトして、その転送速度を調べてグラフにしてみました。ST3200822A(→関連記事)を超えて最高速度を記録しています。後で掲載しますが、更にICHR5環境だと外周部の読込速度は70Mバイト/秒を突破しています。遅い内周部については読み書きもに約33Mバイト秒と、およそ半分近く速度が低下します。T7K250のデータシートを見ると250Bモデルの1トラックあたりのセクタ数は外周部が1296セクタ、内周部が630セクタとなっていますから、半分近く速度が落ちるのは当然です。色のついた値は、本文中に対応した色のマーク(●●●)で取り上げているポイントです。all3回実行して平均を取っています。速度の後ろのパーセンテージはCPU使用率です。Write/End」の4つのテスト項目をグラフ化したものです。次のグラフはランダム・リード/ライト・テストをグラフ化したものです。このテストは分かりにくいと思うので簡単に説明しておきます。これまでのベンチマークは読み込みと書き込みを分けて計測していましたが、ユーザがOSやアプリを使う場合には読み書き共に行われます。このテストにはランダムに読み書きするテストを行なっています。1回に転送するデータサイズは512〜65536Bバイトの範囲でランダムに決まります。これを一定時間実行して、読み込みと書き込みの転送速度(kB/s)と、実行回数(io/s)を測ります。読み書きの比率を50:50、90:10、10:90の3パターンに分けて計測しています。グラフは、中心から左側が読込速度、右側が書込速度を表わしています。中心の数字は読込速度と書込速度を足した転送速度になります。シーケンシャル・アクセス性能についてシーケンシャル・アクセス性能についてはICH5R環境が一歩リードしているようです。約69バイト/秒(●)と、5〜10%程度速いようです。79.6Mバイト/秒とあるので、ベンチマークで70Mバイト/秒を突破しても不思議ではありません。データシートでは持続(sustained)できる速度は67.8Mバイト/秒とあるので、ICH5Rの速度は瞬間的な最大値と見たほうがいいと思います。他の1420SA/VT6420/ATA133環境では約67Mバイト/秒はデータシートとほぼ同じ速度が出ているので、性能的には問題ないでしょう。ATA133環境では個別のテストで見ると1420SA/VT6420とほぼ同じ速度が出ていますが、パラレルATAに変換するオーバーヘッドが少しあるのか、全体的にみるとわずかに遅くなっているようです。CPU使用率についてはICH5Rが一番低くほぼ16384バイト/65536バイト単位でのリード/ライトではほぼ0%、あっても2%以下です。1420SAやVT6420では2〜5%といったところです。VT6420とATA133は、どちらもVIAチップのためかCPU使用率は似たような傾向が出ています。ひとつ気になったのか、VT6420での512バイト単位でのリードです。他は0.7Mバイト/秒前後ですがVT6420は約3.6Mバイト/秒(●)と桁違いに速い結果がでています。利用はよくわかりません(ドライバ内で独自にキャッシュしている?)。ここがいくら速くても現実の運用にはあまり影響しないと思います。連続したデータを読み込みするとわかっているなら、512バイトとか小さな単位ではなく、32Kとか64Kとか大きな単位で読み込んだほうが速いし効率がいいからです。ランダム・アクセス性能についてシーケンシャル・アクセスではICH5Rが一歩リードしていましたが、ランダム・アクセスについては横並びです。実際にはICH5Rが少しだけ良い結果が出ているのですが、ランダム・アクセスではハードディスク自体のシーク性能が大きく影響するので、インターフェース/コントローラの違いはわずかなものです。ハードディスクのランダムアクセス性能は回転待ち時間や平均シークタイムとコマンドオーバーヘッドいった平均アクセスタイムと、あとはキャッシュで決まります。データシートを見ると平均シークタイムはリード8.2ms、ライト9.2msとなっています(ただし、静穏モードにすると19.5ms/20.5msと半分以下の速度に落ちるようです)。他メーカや他モデルのハードディクスも、このくらいのスペックを持っています。他のページで色々なハードディスクのベンチマークテストを行なっているので、興味があるなら比較してみてください。ベンチマークランダムアクセスでは読み込みより書き込みのほうが速くなるのは、ハードディスクドライブのキャッシュの効果と思われます。シーケンシャル・アクセスでは先読みの効果があるので読み込みのほうが若干速くなりますが、ランダムアクセスではディスク上のどこをアクセスするかわからないので先読みの効果はありません。ランダム・アクセスで読み込みを行なうたびにヘッド移動が起り遅くなります。書き込みではデータをキャッシュにある程度蓄えることができるためヘッド移動を低減することができます。queuing)は複数のI/Oコマンドをまとめたり順番を最適化することで高速化する技術です。SeagateにWebヘージに掲載されているFAQでは、NCQを活用する条件として次の3点が上げられています。ソフトウェア最初の2つはハードディスクとマザーボードやATAコントローラといったハードウェアの対応です。ソフトウェアが必要というのは、OSやアプリケーションの問題です。NCQでは読み込みや書き込みといったI/Oコマンドはキュー(待ち行列)と呼ばれている順番待ちのリストに登録して、その中で最適化を行ないますが、NCQは複数のI/Oコマンドがキューに登録されている状態でないと効果を発揮しません。以下、その繰り返しといった動作を行なっています。このようにプリケーションが1個づつしかI/Oコマンドを発行しない状況では、キューにコマンドが1つしかないので最適化する余地がありません。ソフトウェア」が必要というのは、複数のI/Oコマンドを同時に発行するような状態やアプリケーションが必要という意味です。書き込みに関してはキャッシュや遅延書き込みがあるので複数のI/Oコマンドを蓄えて最適化するのは(比較的)簡単ですが、単独のアプリケーションではデータをアクセスする順番にも意味があるので、複数のI/Oコマンドが同時に発行されることはあまりありません。サーバのように複数のユーザやクライアントからの要求を同時にこなす必要のあるアプリケーションなら別ですが、普通のアプリケーションでは複数のファイルに同時にアクセスするような処理はあまりしません。速度が必要ならなおさらです。複数のファイルに同時にアクセスするより、1個づつ順番にアクセスして処理したほうがトータルでは速いからです。1台しかないハードディスクで、複数のファイルに同時にアクセスするとヘッド移動が頻繁に起こりかえって遅くなります(大きなファイルの複写を2つとか同時に行なうといかにハードディスクが遅いか実感できると思います)。NCQがサーバ用途で効果を発揮しやすいというのは、複数のI/Oアクセスが同時に起るからです。デスクトップPCでもバックグラウンドでサービスが動いていたり、ディレクトリとかレジストリやらライブラリ(DLL)やら、ユーザの気がつかないところで色々とアクセスが行なわれていますが、その必要性はサーバ用途とは比較になりません。大量のファイルのバックアップとか、Defrag(デフラグ)とか、ウィルススキャンとか比較的長い時間ファイルクアクセスを行なう処理を同時に実行すると、けっこうとんでもないことになります。いう状況ならNCQの効果も大きいはずです。サービスを止めるわけにはいかないサーバ用途なら似たような状況は実際にあります。ユーザが1人で使っているデスクトップPCなら、必ずしも同時も実行する必要はなく、それぞれ順番に片付けたほうがトータルでは短時間で処理は完了します。それでも、時間のかかる処理なら、ただ待っているより他の処理も行ないこともあります。WindowsはスワップとかDLLやリソースの関係でユーザが意図しないファイルアクセスが不意に発生して、NCQの効果でこういうのが低減できるのならそれに越したことはありません。テスト少し前置きが長くなりましたが、ようするにNCQの効果を見るならキューに複数のI/Oコマンドが溜まるような処理を行なう必要があります。これまでのDevTestでは、そういった処理にはなっていません。そこで、複数のリード/ライトコマンドをまとめて発行するという、非同期モードをDevTestに追加してみました。これをやっても1420SAでのNCQの効果はあるのかないのか、さっぱりわかりません。テスト項目にもよりますが、非同期モードを使うことで1420SA以外の環境だとランダムアクセス関連では10〜30%の向上があるのですが、肝心の1420SAは数%程度しか向上していません。一応、非同期モードでのベンチマーク結果だけ掲載しておきますが、NCQについての評価は保留します。all3回実行して平均を取っています。速度の後ろのパーセンテージはCPU使用率です。テストの括弧の中のパーセンテージは、同期モードに対する割合です。100%より小さければ遅く、100%より大きければ速くなっていることを意味します。まとめ今回のテストでは、ICH5R環境が一番良い結果を出していますが、他を圧倒するほどでもありません。ICH5Rだけがシーケンシャル・リードで70Mバイト/秒を超えましたが、瞬間最大風速みたいなものですし、ハードディスクは外周の一番オイシイところしかその速度はでないので、実際の運用上では大きな差はでないと思います。興味があったのは1420SAでのNCQの効果ですが、さっぱりわかりませんでした。DevTestで新しく追加した非同期モードでNCQの効果があるのかも、いまいちはっきりしません。そもそも、1420SAがNCQに対応しているのかどうかも、はっきりしません。II対応コントローラが入手できたときに、あらためて行ないたいと思います。誤字とか細部は後で修正します。名前は10文字、内容は100文字以内で入力してください(半角の場合は倍の文字数まで)。長いコメントや感想は掲示板(→BBS)に投稿してください。