2010/02/28

記録面と速度の実際(先頭以外)

速度に戻って、HDDの先頭以外の部分についても見てみる。

(このエントリは一続きのエントリの4/5)

4.1. 方法

HD Tune Proのログを見ると、先頭1GBを計測したとき、指定したブロックサイズ(標準は64KB)で計測していった値から5MB単位で平均をとって表示、記録するようである。この単位は自動的に計測する範囲の1/200になるようで、計測する範囲が広がるにつれて平均化の単位も大きくなる。

問題の波形(領域ごとの速度差)は、平均化の単位が大きくなるにつれて形が鈍っていき、そのうち判別できなくなるので、先頭以外の波形を見るにはHD Tune Pro以外の方法に頼る必要がある。

色々試した結果、以下の2つの方法に行き着いた。

Iometerを使う

HD Tune Proの計測方法を模して、64KBのリクエストサイズのシーケンシャルリードのアクセスパターンで、計測サイズを5MBとし、計測開始位置を5MBずつずらしながら計測する。計測時間は各4秒。マクロで実行し、結果はログを集計して見る。

問題として、HDDと計測位置によっては、おかしな値が出ることがある。リードキャッシュの影響かもしれない(Process Monitorで見る限り、Iometer配下のDynamoもNon-cachedでリードしているようだが)。使ったのは安定版の2006.07.27だが、開発中のバージョンでもそれぞれにおかしかった。

DiskSpeed32を使う

DiskSpeed32は、シーケンシャルリードを計測し、CHSアドレスにいうシリンダ単位(大抵7.7MBか8.2MB)でまとめて記録するツール。リクエストサイズは約32KB。Full testではHDDの先頭から全セクターを計測していく。

以下は5K500.B-500bを計測した例。
Travelstar 5K500.B-500 b: DiskSpeed32

グラフは横方向に圧縮された形になる(計測位置が非常に多いので)。グラフのサイズは変えられるが、一部を拡大したりはできないので、出力したログを加工して見ることになる。

問題として、計測結果がかなり鈍るので(値自体は概ね変なものではないが)、大まかな形しか分からない。説明によれば代替セクターになっている部分も分かるというので(中頃の2つの縦線は試行によっても変わらないので、それらしい)、細かい変化も鋭敏に捉えるはずではあるが。

4.2. 5K500.B-500の場合

HD Tune Proで全体を見ると、5K500.B-500bのグラフは、ゾーンが階段状にはっきり出る5K500.B-120よりなだらかな形になっている。
Travelstar 5K500.B-120, 500 b: HD Tune Pro  (Seq. Read, 64KB, Full) compiled

とくに目星もないので、Iometerで先頭から100GBずつの位置を計測してみた。300GB以降は明らかにおかしかったので、先頭、100GB、200GBの位置における結果を作図すると、以下のようになる。
Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)

先頭1GBの波形はHD Tune Proの結果と大体一致する。波形自体は100GB、200GBの位置では微妙に形が変わっている。これを確認するため、DiskSpeed32の同じ位置の結果を作図すると、以下のようになる。
Travelstar 5K500.B-500 b: DiskSpeed32Travelstar 5K500.B-500 b: DiskSpeed32Travelstar 5K500.B-500 b: DiskSpeed32

上下動が激しいが、大体の形はIometerと一致しているので、計測上の問題ではなさそうである。

何が起きているのか、波形が変わる場所を探してみる。適当に見当を付けてIometerを走らせると、18GB付近で以下が見つかった。
Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)

記録面の高さが1つだけ変わっている。各記録面が分かりやすいようHDDの先頭から出現した順にA、B、C、Dの名前を付けると(右下にゾーン番号)、以下のようになる。
Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)

この中のA面は18.2GB手前でB面に交代した後、18.4GB過ぎでD面を引き継いだときには高さが変わっている。これはA面のゾーンがここで一段下がったと考えれば理解できる。

同じように他の面についても、それぞれ高さが下がる場所が見つかった。D面は25GB付近、 B面は27GB付近、C面に至っては44GB付近で。
Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 b: Iometer (Seq. Read, 64KB)

こういう変化を繰り返すことで、波形が変化していくらしい。100GB付近の波形になるまでは後一回りはゾーンが下がっているように見える。

折角なので、各記録面のゾーン0の容量を計算してみた。これを繰り返していけば個々の記録面に分解したグラフを作成することも不可能ではない。
記録面ゾーン0の容量(GB)
A4.6
B6.8
C11.1
D6.3

予想はしていたが、以下のことが分かる。
  • それぞれ速度も容量も違う記録面を組み合わせて使っている。
  • 各記録面でバラバラにゾーンが変わっていく結果、位置によって波形が変わり、全体として明確なゾーンの変わり目ができないので、グラフになだらかな部分ができるらしい。
次に5K500.B-500aについて、Iometerによる先頭、100GB、200GBの位置における結果は以下のとおり。
Travelstar 5K500.B-500 a: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 a: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 a: Iometer (Seq. Read, 64KB)

2つの面の関係は変わらないが、差が変化している。DiskSpeed32ではこんなもの。
Travelstar 5K500.B-500 a: DiskSpeed32Travelstar 5K500.B-500 a: DiskSpeed32Travelstar 5K500.B-500 a: DiskSpeed32

波があるのは分かるが、鈍り過ぎていてあまり参考にならない。

Iometerでゾーンの変わり目を探してみると、16GB付近と36GB付近にあった。ただし、どの位置でも2つの高さの面しか出てこない。
Travelstar 5K500.B-500 a: Iometer (Seq. Read, 64KB)Travelstar 5K500.B-500 a: Iometer (Seq. Read, 64KB)

この1つの水平面が、1つの長い記録面なのか、2つの同じ高さの記録面が並んでいるのか判断できる材料はないが、組の長さは5K500.B-500bとさほど変わらないだろうという想定で、同じ高さの記録面が並んでいるものと解釈した。

どちらにしても、2つずつ同じ高さの記録面があることは変わらない。組の中にきっかり同じ高さの面があること自体は、他のHDDを見ても珍しくはない。

4.3. 5400.5-320の場合

5400.5-320の2台はHD Tune Proで全体を見たときの形がよく似ているので、重ねてみると以下のようになる。
Momentus 5400.5-320: HD Tune Pro (Seq. Read, 320GB, 64KB, Full) compiled

これを見ると、
  • いずれもゾーンの変わり目がはっきり出ている。ゾーン数は16ということが分かるので、番号を振ってみた(0から始まるのはHGSTのSpecificationに倣ったもの)。
  • 高さの違いはあれ、形状はほとんど同じなので、5400.5-320aと320bの間でゾーンごとの容量は同じであることが分かる。
ゾーンの違いがはっきり出るのは、各ゾーン内の速度(平均)が一定であることを意味する。これから、ゾーンを構成する記録面にずれがない=各記録面のゾーンが一斉に変わっていることが予想できる。

まず5400.5-320aについて、Iometerでゾーン0(先頭)とゾーン1(39GB付近)を見たのが以下。
Momentus 5400.5-320 a: Iometer (Seq. Read, 64KB)Momentus 5400.5-320 a: Iometer (Seq. Read, 64KB)

ゾーン0の波形はHD Tune Proの結果と大体一致する。ゾーン1の方はかなり形が変わっているが、明らかに過大な値を出している面がある。この後のゾーンも過大な値が出るので、あまり信用できない。

ゾーン0からゾーン1への変わり目は、全体のグラフにも出ているように27GB付近にあった。5K500.Bと同じように各記録面にA、B、C、Dと付けてみたのが以下。
Momentus 5400.5-320 a: Iometer (Seq. Read, 64KB)

全ての面が一斉に高さを変えているのが分かる。A面は少し上がり、C面とD面は下がっている。B面が飛び出しているが、これは過大な値に見える。

Iometerがあてにならないので、DiskSpeed32で大まかな形だけでも追ってみる。一挙、全16ゾーン。バラツキがあるので、2回の計測結果を重ねた。
Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32Momentus 5400.5-320 a: DiskSpeed32

上下の動きは激しいが、値自体はIometerよりそれらしい。かなり乱れがあるものの、ゾーンが変わっても波形の基本的な形は変わってないらしい(段々小さくなっていくが)ことが分かる。

この結果から以下のように考えてよさそうである。
  • 全ての記録面が一斉にゾーンを変えていく。つまり、同じゾーンなら記録面ごとの容量は同じ。
  • ゾーンが変わるときに速度が下がる割合もほぼ同じ。つまり、記録面の間の線記録密度の高低関係はゾーンが変わっても固定されている。
5400.5-320bについても同じ計測をしたが、同じ傾向だったので省略。

4.4. MK3263GSXの場合

HD Tune Proで全体を見ると、非常に安定してゾーンが下がっていくことが分かる。ゾーン数は36ある。
MK3263GSX: HD Tune Pro (Seq. Read, 320GB, 64KB, Full)

とりあえずIometerでゾーン0(先頭)、ゾーン1(18GB付近)、ゾーン2(30GB付近)を見ると、以下のようになる。
MK3263GSX: Iometer (Seq. Read, 64KB)MK3263GSX: Iometer (Seq. Read, 64KB)MK3263GSX: Iometer (Seq. Read, 64KB)

ゾーン0はHD Tune Proの結果とほぼ同じ。ゾーン1、ゾーン2は同じ波形で全体的に下がっているのが分かる。

一気に飛んでゾーン10、ゾーン20、ゾーン30を見ると以下のようになる。

同じ形を保ったまま小さくなっていくのが分かる。ゾーン30まで来ると記録面間の高低差がなくなってくる。

ゾーンの変わり目はどうかというと、ゾーン0からゾーン1への境界(12GB付近)は以下のようなもの。5K500.Bと同じように各記録面にA、B、Cと付けてみた。
MK3263GSX: Iometer (Seq. Read, 64KB)

全ての記録面が一斉に下がっているのが分かる。なお、単純な繰り返しか、折り返しなのか判断できる材料がないので、A面とC面は入れ替わっているかもしれないが、どちらでも違いはない。

全体のグラフから予想できるように、各記録面間の差、ゾーン間の差が少なく、全体的に波乱のない安定した構成になっていることが分かる。

DiskSpeed32の結果も同じ傾向で、波形が鈍っているだけなので省略。

4.5. WD2500BEVSの場合

まずIometerは速度が常に144MB/s程度になり(X61sのSATAのインターフェイスのほぼ上限)、明らかに過大なので使えない。

とりあえずDiskSpeed32の結果から先頭、50GB、100GB、150GB、200GBの位置を見ると、以下のようになる。バラツキがあるので2回の結果を重ねた。
WD2500BEVS: DiskSpeed32WD2500BEVS: DiskSpeed32WD2500BEVS: DiskSpeed32WD2500BEVS: DiskSpeed32WD2500BEVS: DiskSpeed32

形の特徴が捉えにくいが、HD Tune Proで見た先頭1GBの波形に似てなくもない。

4.6. 中間まとめ

以上をまとめると、
  • 問題の波形はHDDの先頭以外にも続いていることが確認できた。

  • 5K500.Bでは各記録面のゾーンがバラバラに入れ替わっていくこと、5400.5とMK3263GSXでは全ての記録面のゾーンが一斉に変わっていくことが分かった。
次に応用について。

0 コメント :