2014/04/27

Disk Gazerを拡張

狭い領域の計測に特化していたDisk Gazerを広い領域を計測できるよう拡張しました。

1. アイデア

Disk Gazerは狭い領域の速度を細かく調べるという目的は達しましたが、これをより広い領域、あるいはディスク全体に使いたいという考えは初めからありました。問題は全領域をなめるようにリードしていくとおそろしく時間がかかることで、例えば、平均速度を100MB/sとすると1TBをリードするのに単純計算で2.8時間かかります。現在3.5インチHDDでポピュラーな4TBだと11.1時間にもなります。さすがにこれは実用的ではないです。

したがって、何らかの形で間を飛ばしながら計測する必要がありますが、下手なやり方を取るとHD Tuneの轍を踏むことになるので考え中でしたが、GitHubにリポジトリを置くに際して内部的に大改造したので(計測方法自体は変えず)、同時に広い領域を計測できるよう拡張しました。

基本的なアイデアは前に考えたとおりですが、
  • 記録面の波形をなるべく外さない
  • 速度の上下動を無理に平均化しない
となると、逆に複雑なことはしない方がいいということで、以下のような形に。
  • 実際にリードするblock数の、対象領域の全block数に対する割合を"Area ratio"と呼ぶ。例えばこれが1/16の場合、1/16だけ(累計)リードする。これを使ってリード位置の間隔を決める。
  • 速度計算はblockごとのままとする。
  • 1つの位置でリードする単位を8blockとする(block sizeを初期設定の1MiBとすると8MiB)。ただし、1番目のblockはシークタイムの影響を避けるため結果には含めない。
  • リードするblockを含めた同じ長さのグループを作り、1つのグループの先頭8blockをリードした後は次のグループの先頭に移る。これを順に繰り返す。例えば、Area ratioが1/16の場合、リードする8blockに対して、グループの全block数はその16倍の128とし、残る120blockは無視する。
まあこれ自体は外さない結果を出すための決めごとに過ぎませんが。

ソースコードは最終的にGitHubに置きました。

実行ファイル
レポジトリ

2. 結果

実際にHDDを計測した結果は以下のとおり。ThinkPad X230上のWindows 8.1からUSB3.0接続のポータブルケースに入れたHDDを計測。USB3.0でもHDD程度の速度なら問題ない模様。それぞれの以前のベンチマーク結果は前のエントリから見られる。

Travelstar 7K1000の1TBモデル

Area ratioはLocation (area location)の横に表示。先頭1GiBを先に1/1で全リードしたもの(黄色のライン)に重ねて1/16でリード(黄緑のライン)。

1/16ではリード開始位置は128MiBの間隔で、この記録面の波形なら上に突き出したスパイクを含めて上下動をほぼ捉えている。

次に全領域を1/16で計測したもの。

スパイクがうるさいが(外周では上に、内周では下に出ている)各ゾーンの波形は大体トレースできている。というか、この表示サイズだと計測位置を増やしてもごちゃっと固まるだけなので、あまり違いはないと思う。ちなみにこれで既にリード位置は5万を超えている。

時間は1回のリードに9分かかっているので、5回のリードで45分といったところ。これでもベンチマーク時間としては長いが、試しに1/32のリードをしたら網目が広すぎ、波形を外すようになって良くなかった。

結果とは関係ないが、ポータブルケースはAnkarの2.5" HDD/SSD External Enclosureというものだが、中のHDDの型番を全部返してこないのは少し良くない。

Travelstar 5K1000の1TBモデル

同様に先頭1GiBを1/1で全リードしたもの(黄色のライン)に重ねて1/16でリード(水色のライン)。

波形の上下動は1/16でも捉えられている。

次に全領域を1/16で。

これも問題ないと思う。7K1000は先頭より少し内側の方が速かったが(そういうHDDは時々ある)、5K1000は素直な曲線。

Travelstar 5K1000の500GBモデル

同様に先頭1GiBを1/1で全リードしたもの(黄色のライン)に重ねて1/16でリード(赤紫のライン)。

次に全領域を1/16で。

これも問題ないと思う。外周と内周の速度比が小さいのも以前と同じ。

3. まとめ

以上のように、グラフの表示上、スパイクが実際以上に強調されてしまう傾向はあるものの、ディスク全体を計測する用途にも使えるものになったと思います。思い描いたほどきれいな形にならなかったのは、実際のディスクの姿がそうである以上、仕方ないかな。Block offsetを使えばもう少し上下が収束すると思いますが、時間がおそろしくかかるので。

0 コメント :