2010/02/28

記録面と速度の実際(応用)

基本的な性質は分かったので、応用について。

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

5.1. 線記録密度を計算する

記録面の線記録密度は、原理的に、条件が揃えばシーケンシャルリードの速度から計算できる。その条件として以下のようなものがある。
  1. 回転数が分かっていること
  2. 物理的なトラック長が分かっていること
  3. 速度にリードキャッシュの影響がないこと
  4. 速度にブロックサイズなどの影響がないこと
  5. 速度に他の制約要因の影響がないこと(PC本体の能力、HDDのコントローラの能力など)
  6. トラック間の移動時間を含まない速度が計測できること
  7. 記録面が複数ある場合、平均化されない個々の記録面の速度を計測できること
このうち1.は公称スペックが概ね信用できるし、2.は既に分かっている。3.と4.と5.は計測結果から一応検討できる。問題は6.と7.で、この目途が立たないので追求を諦めていた。

それが、6.はHddRpmEstの結果から分かるし、7.は従来のシリンダの理解に根ざした問題だったので、それが当てはまらないとすれば、そもそも問題ではなかったことになる。

そこで3.と4.と5.について改めて検討すると、3.のリードキャッシュは、HD Tune Proでは影響している気配はないので、ないと見なしてよいと思う。

4.のブロックサイズは、5K500.B-500aの先頭1GBを設定を変えながら計測すると、以下のようになる。
Travelstar 5K500.B-500 a: HD Tune Pro (Seq. Read, 1GB, Full) compiled

64KB以上ではほとんど変わらないので、64KBでの値を使えると思う。

5.の他の制約要因については、原理的に、その影響がない理想的な状態では速度はトラック当たり容量に比例するので、線記録密度の平均が各ゾーンで一定と仮定すれば(ゾーン内での高低は措くとして)、速度はトラック半径に比例する。この比例度合いを見ることでその影響を推し量れると思う。

これを5K500.Bで計算すると以下のようになる。

トラック半径(注)速度(平均)
最外周
(mm)
最内周
(mm)
比率最外周
(MB/s)
最内周
(MB/s)
比率
5K500.B-500a30.6514.300.46789.7042.20 0.470
5K500.B-500b81.2940.57 0.499
5K500.B-12083.1538.32 0.461
(注)正確にはゾーン内の外周か内周かで揃えるべきだが、どちらも片方しか分からない。

比率は意外と離れてないので、大きな影響はなさそうである。

条件は一応クリアしたとして、5K500.Bの最外周トラックについて計算してみる。計算式は5K500.B-120の場合で以下のとおり。

[{83.15(MB/sec)×1.154(HddRpmEstにいうバースト転送速度と維持転送速度の比率)}(トラック間の移動時間を含まない速度)×0.0111(sec)(5400RPMでのトラック一周時間)](トラック当たり容量)÷{30.65(mm)(トラック半径)×2×π}(トラック長)×1,000,000(Byteへ換算)×8(Bitへ換算)×25.4(インチへ換算)÷1,000(Kへ換算)=1125.3(KBPI)

記録面速度
(平均)
(MB/s)
トラック当たり
容量
(MB)
線記録密度
(KBPI)
公称線記録密度
(最大、1356KBPI)
との比率
5K500.B-500aA B91.251.1731237.991.3%
C D87.911.1301192.788.0%
5K500.B-500bA84.381.0841144.184.4%
B83.071.0671126.483.1%
C74.880.9621015.374.9%
D82.941.0661124.582.9%
5K500.B-120
83.151.0661125.383.0%

実際には、線記録密度は同じゾーン内でも内周の方が高く(5K320のSpecificationの例で計算したときには最大で50KBPI強の差があった)、PC本体の能力が高ければ速度はもっと出ると思うので、少なくともこれぐらいはあるという数字と考えた方がよい。

5.2. ベンチマークに対する影響

容易に想像できることだが、ベンチマークで計測する領域と高低の記録面の位置がはまった場合、小さな位置の違いで割と大きな速度差が出る。

記録面間の差が大きい5400.5-320aの場合、(作為的ではあるが)先頭から124MBずつ3つのパーティションを作成してCrystalDiskMarkとHD Tune ProのFile Benchmarkで計測すると、以下のようになる。
Momentus 5400.5-320 a: CrystalDiskMarkMomentus 5400.5-320 a: HD Tune Pro File Benchmark
(注)File Benchmarkのブロックサイズの表示は下が隠れてしまっている。4.0でウインドウサイズが可変になった関係かもしれない。

シーケンシャルリードについてHD Tune ProのBenchmarkのグラフと重ねて整理したのが以下。
Momentus 5400.5-320 a: HD Tune Pro & CrystalDiskMark (Seq. Read)

この問題を意識して避けるには、計測するサイズを記録面の組当たり容量(HDDによって変わってくるが、5K500.B-500なら400MB、5400.5-320なら200MB程度)を超えるものにする必要がある。これはピークをとる場合には最も速度の出る記録面を外さないために、平均をとる場合には元の値を正しく集めるために有用。

また、ベンチマークにおけるバラツキの理由の一部はこの問題で説明されると思う。OSや他のソフトの挙動、ファイルシステムの影響、他のデバイスの割込などを気にしていたら、肝心のHDDの速度に凹凸があったということで。

5.3. HD Tuneのグラフに対する影響

HD TuneのBenchmarkでは、Partial testが初期設定だが(3.5まではこれしかない)、この設定ではHDDによってはグラフに大きなぎざぎざが出ることがある。これが何故なのか気になっていたが、4.0のFull testではほとんど出なくなるので、Partial testに特有の問題らしい。

5K500.Bの3台について、Partial testを5段階中の4段(初期設定)と5段で計測した結果が以下になる。
Travelstar 5K500.B-120, 500 a&b: HD Tune Pro (Seq. Read, 64KB, Partial) compiled

まず単一の記録面の5K500.B-120では全く上下動が出ていない。これは前に5K320-80を2台調べたときも同じ結果だった。

その上で、5K500.B-500aと500bの間では、(500aの100GB付近の乱れは措くとして)500bの方が振れ幅がやや大きいのが分かる。これは、500aのゾーン0の記録面間の高低差(4MB強)より500bの高低差(10MB弱)の方が大きいことと符合する。

同様に5400.5の2台について、Partial testを5段階中の4段と5段で計測した結果が以下。
Momentus 5400.5-320 a&b: HD Tune Pro (Seq. Read, 64KB, Partial) compiled

とくに4段の方で顕著だが、5400.5-320aの方が320bより振れ幅が大きい。これも320aのゾーン0の記録面間の高低差(12MB強)の方が320bの高低差(6MB強)より大きいことと符合する。

まとめると、
  • グラフに激しい上下動が出るのは記録面が複数あるHDDの場合。
  • 記録面間の高低差が大きい方がグラフの振れ幅も大きい。
これから推測すると、Partial testの計測位置になった部分がたまたま高低の記録面に当たり、その値が平均化されずに出てきた(Full testでは計測位置が多いので平均化されると考えて)ことがぎざぎざの正体、少なくともその一部ではないかと思う。であれば、あのぎざぎざは計測上のノイズ的なものではなく、正確に計測した結果だったことになる。

5.4. 3記録面問題

あるシリーズの最大容量のモデル(2プラッタ4ヘッド)とその半分の容量のモデル(1プラッタ2ヘッド)の間には、3ヘッドと4ヘッドの両方があり得るモデルが存在したりする。5K500.Bでは320GBモデルがそうで(Specificationに「3/4」と表記)、5400.5では250GBモデルがそうである(Product Manualに「4 or 3」と表記)。5K320の250GBモデルのように、公称スペックでは3ヘッドでも実際には4ヘッドの個体があることもある。

こういうモデルにまつわる問題として、
  • 外からはヘッド数が判別できない。1プラッタか2プラッタかは重量で判別できるし、1プラッタ1ヘッドの場合は容量的にそれしかないことが多いが、3ヘッドか4ヘッドかは手掛かりがない。

  • ヘッド数により大きな性能差が出る可能性がある。5K500.Bの全ての容量別モデルを見ると、
    全容量
    (GB)
    ヘッド
    記録面当たり
    必要容量(GB)
    公称線記録密度
    (最大)(KBPI)
    50041251356
    4004100
    320480
    3107
    2502125
    1602801305
    12011201356
    80(注)1801305
    (注)80GBモデルは初期のSpecificationにはあったが、後に消えている。

    公称スペックの線記録密度(最大)は160GBモデルと80GBモデルが落ちる以外は全部同じだが、320GBモデルの場合、3ヘッドであればまだしも、4ヘッドであれば記録面当たり必要容量がこれらの落ちるモデルと同じになるので、性能もこれら並になっている可能性がある。
したがって、こういうモデルでは外から判別できないヘッド数(=記録面数)によって大きな性能差があり得る、という福引きにも似たHDD選びの中でもその度合いが高いという問題がある。これを個人的に3記録面問題と呼んでいる。

それが、MK3263GSXのように記録面間にそれと分かる速度差があれば、速度だけから記録面数を判別できる可能性がある。

5.5. まとめ
12 HDDs

HDDのベンチマークにそれなりの労力を費やしてきた人間として、少し鬱である。なるべく正確な結果を得ようとした努力のかなりが見当違いのものだったと分かった。
  • 現在のHDD(複数の記録面を持つもの)には、速度が違う一定の容量の領域から成る組があり、この組の繰り返しでHDDは構成されている。組の中の領域は、ある程度の容量を超えると、単独あるいは一斉のタイミングで、段階的に速度を落としていく。

  • この現象は従来のシリンダの理解では説明できない。対して、「HDD中のアドレスはトラックごとに他の記録面のトラックに移動するのではなく、同じ記録面のトラックへの移動を一定の範囲で繰り返してから、他の記録面に移動する」という仮説に従い、組の中の領域は各記録面であり、これがゾーンを変えるときに速度が落ちると考えれば、この現象を説明できる。

  • これは同じゾーンに速度が違う記録面が存在することを意味するので、HGST以外のSeagate、東芝、Western Digitalの各メーカーもAdaptive Formattingか、類似の方法をとっていることになる。

  • この仮説に従えば、同一円筒上にある複数のトラックから成るシリンダというものは既に存在しないか、使われておらず、いずれにせよ意味を失っている。

    この現象は2002年にAdaptive Formattingが適用されたHDDが出現した頃から存在した。つまり、その頃から従来のシリンダの理解は当てはまらなくなっていたことになる。シリンダは消えた。というより、とっくに遠くへ消え去った後だった。

  • この仮説の成否とは別にして、HDDのベンチマーク方法を考えるときにはこの現象を意識した方がいいと思う。これまで信じられてきたように、HDDの先頭が文字通り一番速度の出る領域とは限らないので。

    ピークをとるにせよ、平均をとるにせよ、組の中の全ての領域をカバーした方が正確なので、計測するサイズは組当たりの容量を超えるものにした方がいい。この容量は実際のHDDによるが、HGSTの2.5インチHDD(2プラッタ4ヘッド)では400MB程度。HD Tune Proには試用版があるので、それを使えば簡単に確認できる。

  • 記録面間に特徴的な速度差があれば、外から計測した速度だけから記録面数、さらには記録面当たり容量を判別できる可能性がある。
プラッタ数の多い大容量の3.5インチHDDではどうなのかは、後の課題。

2 コメント :

匿名 さんのコメント...

超力作の検証、大変お疲れ様です。
膨大な量にただ圧倒されるばかりです。

もしシリンダの概念が霧消したとするなら
各ヘッドが厳密に連動した動きではなくなって
完全に独立して動いても良さそうなもんですが
そういう訳でも無さそうなので鳥頭の自分は
こんがらがってしまいます。難しい。

Adaptive Formattingの影響で物理的なシリンダというよりは
論理的なシリンダの組という理解で良いんでしょうか。

EMO さんのコメント...

ありがとうございます。色々な意味で捨て置けない問題だったので。

>もしシリンダの概念が霧消したとするなら各ヘッドが厳密に連動した動きではなくなって完全に独立して動いても良さそうなもんですが

一瞬、ヘッドスタックアセンブリが二段重ねになっていて(1プラッタに1つ)、独立して動くHDDを想像しました。東芝あたりの超薄型HDDの技術を持ってすればできそうな気もしますが、どうせ性能ではSSDに敵わなそうなので。

>Adaptive Formattingの影響で物理的なシリンダというよりは論理的なシリンダの組という理解で良いんでしょうか。

元からシリンダは論理的に意味のあるものではないので(パーティション作成時などに残滓はありますが)、物理的に意味をなくせば、もう要らないということだと思います。

もっとも、これはまだ仮説なので、追試的なものが出てくればと思ってます。