10.3.RPS I/Oサブシステムにおけるチャネル競合(1):Quantitative System Performance

「[10.2.非RPS I/Oサブシステムにおけるチャネル競合(3)」の続きです。(目次はこちら

10.3.RPS I/Oサブシステムにおけるチャネル競合


 回転位置センシング(RPS:rotational position sensing)は、ディスクが互いと独立にそしてチャネルと独立にデータをサーチする(レイテンシー期間)ことを可能にすることによってI/Oサブシステム内の並列性を増加させる。興味のあるデータ・レコードがヘッダの下に回転してくる時に、ディスクは再コネクトしようとする。I/Oパスの要素への瞬間のアクセスはシークとサーチを開始するために要求されたのでコネクトよりもコネクトがふさわしい。我々のモデルではこれを無視し続けるつもりである。) もしパスがフリーならば、この再コネクトは成功し、データ転送が起こる。さもなければ、データが次にヘッドの下に回転してくる時、つまりディスク1か移転後、に次の再コネクトが試みられる。再コネクトはこのようにして、成功するまで続けられる。我々は最初の再コネクトの試みの後の全ての再コネクトの試みをリトライと呼ぶことにする。
 前のセクションでのように、我々は各々のディスクkについての実効サービス要求時間を見積もりたい。

  • D_k=V_k[seek_k+latency_k+transfer_k+contention_k]

contention_k以外のこれらの数量の全ては既知であると仮定する。RPSディスクの場合、

  • contention_k=retries_k{\times}rotation_k

となる。ただし、retries_kは再コネクトが成功する前に、平均で、ディスクkが要求するリトライの数であり、rotation_kはディスクkの回転時間である。後者の数量はデバイス特性から分かる。よって我々の目的はretries_kを見積もることである。
 任意の特定のディスクkについてさまざまな再コネクト試行の失敗の確率は独立であると仮定する。(この仮定は厳密には正しくないが、せいぜい小さな誤差が混入するだけである。) P_k[reconnect\;fails]がこの失敗の確率を示すとしよう。すると、

  • retries_k=0{\times}(1-P_k[reconnect\;fails])+
    • 1{\times}(1-P_k[reconnect\;fails]){\times}P_k[reconnect\;fails]+
    • 2{\times}(1-P_k[reconnect\;fails]){\times}(P_k[reconnect\;fails])^2+
    • ・・・・・・・・・
    • =\Bigsum_{i=1}^\infty\left[i(1-P_k[reconnect\;fails]){\times}(P_k[reconnect\;fails])^i\right]
    • =\frac{P_k[reconnect\;fails]}{1-P_k[reconnect\;fails]
      • (標準的な変形)

再コネクト試行はCPUに戻るパスがフリーの場合成功し、さもなければ失敗する。言い換えれば、P_k[reconnect\;fails ]P_k[path\;busy]、つまりディスクkが再コネクトを試みた時にパスがビジーであるのを見い出す確率、に等しい。目下のところ、チャネルは我々が考慮している唯一のパス要素なので、P_k\ [path\;busy]P_k[channel\;busy]、つまりディスクkが再コネクトを試みた時にチャネルがビジーであるのを見い出す確率、に等しい。一見して、P_k[channel\;busy]U_{ch}と等しいと推測するかもしれない。しかし実際には、ディスクkはチャネル稼動率への自分自身の寄与を「見ない」。よって

ただし U_k(transfer)はデータ転送によるディスクkの稼動率である。この数量はディスク kに関する要求によるチャネルの稼動率、U_{ch}(k)に等しい。この代入を行いその結果をretries_k についての式に用いると、以下を得る。

  • retries_k=\frac{U_{ch}-U_{ch}(k)}{1-U_{ch}}


10.3.RPS I/Oサブシステムにおけるチャネル競合(2)」に続きます。