メニューボタン

そもそもの狙いはパフォーマンス改善

現在ではディスク管理の作業負荷軽減効果の方が目立っているような気がしますが、そもそも単一レベル記憶はディスク・アクセスにおけるパフォーマンス改善を狙いとして設計されたテクノロジーです。基幹業務を支えるシステムは、あらかじめデータを蓄積しておいて、そこからデータを取り出して何らかのロジックに基づいて処理を行い、再度データを書き戻す、といった具合に作業を進めます。処理を行うプロセッサとデータ蓄積場所であるストレージのスピードを比べると、プロセッサの方が桁違いに高速なので、ストレージの「遅さ」がシステムのパフォーマンスの足枷になりかねません。そこでストレージとプロセッサの中間に作業用データの一時保管場所として、より高速に動作するメモリを配置することで、ストレージへのアクセス頻度を減らし、パフォーマンス向上を図ります。今でこそメモリ単価は大分下がりましたが、AS/400設計当時はディスクに比べると極めて高価でしたので、搭載するにしても容量を絞らなくてはなりません。特にデータ読み書きの頻度が高い基幹業務用途において、コストとパフォーマンスをどのように折り合いをつけるのかは重要な課題です。

デバイス毎の速度差を見てみる

ここでどの程度の速度差があるのか、いくつかのデバイスのスペックを参照しながらその待ち時間を比較してみましょう。雰囲気を把握していただくのが目的ですので、必ずしも実際のシステムにおいて体感する値と一致するものではないことをあらかじめお断りしておきます。

プロセッサが動作する際の最小の待ち時間単位は1クロックです。Power S1014モデルに搭載されているPower10プロセッサの動作クロックは3.00-3.90 GHzですので、シンプルに3GHzとするとその待ち時間は0.333×10-9秒、または0.333ns(ナノ秒)になります。

Power S1014モデルに搭載されているメモリはDDR4-3200ですが、データアクセスにおける待ち時間は公開されていません。他社製品にはなりますが、マイクロン社のサイトにメモリの細かい仕様が公開されているので、「当たらずと雖も遠からず」を期待して代用してみましょう。同社の同タイプの製品の待ち時間(レイテンシー)は13.75ns(ナノ秒)、すなわち13.75×10-9秒だとあります。これはプロセッサの41クロックに相当します。

Power S1014は内蔵型ハードディスクドライブをサポートしません。代用としてディスク専業メーカーのスペックを探したのですが、適当な資料が見つからなかったので、ディスクのパフォーマンスについて述べているブログを参照しました。以前のIBM Powerに搭載可能だった中で、最速だった分速15,000回転のディスクのデータ待ち時間は5ms(ミリ秒)程度、すなわち5×10-3秒と想定するので良さそうです。ちなみに分速15,000回転から算出される平均回転待ち時間は2msですので、ヘッドの移動時間(シークタイム)を考慮すると、5msは妥当な値と思われます。そして5msはプロセッサの15,000,000クロックに相当します。

ナノ秒とかミリ秒など、日常生活からかけ離れた単位で言われてもピンときませんので、仮にプロセッサの1クロックを1秒だと想定してみましょう。そうするとメモリの遅延時間は41秒、ディスクに至っては173.6日に相当する長さになります。1秒に一つの仕事をする人が「データを拾ってきてくれ」と頼むと、少々のんびりと待っているうちにデータを提供してくれるのがメモリであるのに対して、頼んだ事自体を完全に忘れ去った頃になってからようやく仕事を終えるのがディスクです。現実世界では「役立たず」と思われてしまいそうですが、ITのデバイスは意外に忍耐強いですね。

これほどの大きな違いは、プロセッサにせよメモリにせよ遅延は電子的なものであるのに対して、ディスクの場合は機械的なものであることに理由があります。磁性体を塗布した円盤(プラッタ)を記録媒体として、常時モーターで回転させながらデータ読み書きを行うためのヘッドをその上で行き来させる仕組みは、電子的なものに比べて圧倒的に遅いのです。A Brief History of Disk Storageによると、例えば現在最高速のプラッタの分速15,000回転(15,000 rpm)は2000年に達成されているのですが、現在に至るまでそのまま頭打ち状態にあります。大容量キャッシュ搭載による見た目上の高速化や、プラッタ記録密度の向上による大容量化は進んでいるのですが、ディスクの機械稼働部分を強化することによるデータ待ち時間短縮は、全く実現されていなのが実情です。このように性能バランスを欠いたままではシステムとしても望ましいものではないことから、昨今はフラッシュメモリ・テクノロジーを活かしたSSD(Solid State Drive)、またはNVMeへと置き換わってゆく傾向にあります。

Power S1014に搭載可能なNVMeストレージの仕様を見てみると、平均のデータ待ち時間は60.5μs(マイクロ秒)すなわち60.5×10-6秒ですから、181,500クロック、または1クロックを1秒とすると概ね50.5時間、または2日強に相当します。「半年」近くを要するディスクに比べれば劇的な改善です。

キャッシュメモリによる改善の可能性

実際のディスク製品においては、機械部品のすぐ脇にキャッシュとかバッファと呼ばれるより高速なメモリを介在させることで、プロセッサを「半年も」待たせることがないような工夫が施されています。全てを収容することはできませんが、アクセス頻度の高い一部のデータだけでもキャッシュに取り込んでおけば、機械部品の動作に頼らずに済む可能性があるので、パフォーマンスの改善が期待できます。調べ物をしようとした時に、頻繁に参照しそうな本をあらかじめ何冊か借りて手元に置いておけば、都度図書館に出向く必要が無くなって便利なのと同じ理屈です。ここで参照したいデータの範囲が限定的ならば、数冊の本を借りるだけで効果が期待できますが、範囲を絞り込めない場合は、あまり役に立たないかもしれません。もっともインターネットが利用できる今日においては、調べ物をするために図書館を利用するケースはなかなか無いとは思いますが。

参照対象のデータが比較的集約された場所にあるのか散在しているのか、すなわち図書館の例で言うと、数冊の本を借りるだけでも効果的なのか数冊では効果が薄いのか、という概念は、データの局所性という言葉で語られます。そしてIBM i がターゲットとする基幹業務用途のシステムにおいては、局所性は高くないというのが一般的な理解です。例えば販売アプリケーションにおいて、商品番号1000番を受注したら、次に受注する商品番号は1001番かもしれないし8000番かもしれません。1000番の情報にアクセスする際に、ついでに1001番の情報もキャッシュに取り込んでおくのは簡単だとしても、業務遂行上はあまり役立たないかもしれません。一方で画像処理のようなアプリケーションにおいては、データの局所性は高い傾向にあります。画像の中の、とある座標点について演算を行ったら、次に演算の対象となるのはおそらくその隣の座標点です。何か事情が無い限り、敢えて離れた座標点を演算対象にする意味はありません。複数の連続的な座標点の情報をキャッシュに取り込んでおくのは、パフォーマンス向上に役立ちそうです。

このことは稼動させるアプリケーションのタイプによって、キャッシュの有効性やパフォーマンスの考慮点が異なることの一例です。いずれにせよディスクの待ち時間の長さが、システムのパフォーマンスを制約するボトルネックになる可能性があるわけです。

最近では大容量のメモリを搭載することで、アプリケーション実行において必要な全てのデータをメモリに取り込んでしまおう、という力ずくの考え方も登場しています。確かにこうすればキャッシュの有効性は無関係ですので、データの局所性が低い基幹業務用途においてもパフォーマンス向上が期待できます。インメモリ・データベースがその例です。ただ、コストが下がったとは言っても、依然として容量あたりコストはメモリの方が高いので、効果を見極めてから実装することになります。ちなみにIBM i においては、特定のオブジェクトをメモリに常駐化させる「SETOBJACC」コマンドをサポートしていますので、十分なメモリ容量があれば、コマンド一つでインメモリ・データベースを実現できます。



前章「単一レベル記憶」へ 「IBM i とは」TOP 次章「ソフトウェアから考えるストレージ・アクセス」へ
PAGE TOP