カイゼンのヒント

ITインフラの可視化とその効能

ビジネスの世界で最近良く耳にするトヨタ式「カイゼン」。その改善に欠かすことの出来ないキーワードが実は「見える化」です。可視化することで問題が顕在化され、よって何をどのように改善すべきかに挑戦する。この飽くなき改善スパイラルをITインフラ環境においてどのように実現するか?また実現することで得られる多くの効能。当サイトではITインフラ性能分析からサービスレベル測定に至るまで、具体的に分かりやすく役に立つ情報を提供して参ります。

(担当:株式会社ビーエスピー プロダクト推進部 菅原 潔明)
[2006年9月27日]

キャッシュ機能について

<Diskアクセスを減らす工夫 ⇒ キャッシング>

はじめにことわっておきますが、キャッシングは決して万能ではございません。処理形態によってはまったく無効になってしまいます。しかしながら、処理形態がキャッシング機能にマッチすると、これが本当に効果のある機能であることが理解できると思います。

さて前置きが長くなりましたが、キャッシングに関して説明します。
(いきなりですが・・・)逆にいえば、メモリアクセスはDiskアクセスに比べ1万倍も早いと言うことですから、この速度は相当なものであり、もし、全てのデータアクセス処理がメモリ上で行われているとしたならば、これは夢のような速さでシステムが動作するということになります。 キャッシングとはこの夢のような速さに少しでも近づけるための技術であり、Diskへのアクセスを極力減らし、極力メモリにあるデータをアクセスする技術になります。

例えば、
コンピュータが起動する前は全てのデータはDiskに保存されています。起動中にせっかちな人は画面が開かれると直ぐにでもWebのアイコンをクリックします。普通であれば直ぐにでも反応するWeb画面が、このときばかりはある程度の時間が経過するまではWeb画面は開くことがなく、Diskランプが頻繁にチカチカ光って歯がゆい気持ちになる経験があると思います。このとき何がなされているかというと、Disk上に保存されているOSや、様々なサービスが起動している最中であり、この起動するということの遅さのほとんどがDiskにあるデータをメモリ上に展開している遅さと思ってよいと思います。ですからあんなにもDiskランプが激しく光っているわけです。しばらく時間がたてば、アクセスランプはほとんど光らなくなるはずです。これがOS、各種サービスのプログラム・データ全てがメモリ上へロードされたことをあらわしています。この状態で既に起動しているアプリケーションを動かしてみてください。全ての動作が非常に早いと同時にこのときDiskのアクセスランプはほとんど光っていないことも見られると思います。これがキャッシングされた状態なのです。一度メモリにロードされたプログラムなり、データは再利用されるケースが多いということが統計的に調べられており(一説によると、データ全体の5%に満たない使用頻度の高いファイルには、50%以上のアクセスがあるという)、そのためCPUは一度ロードしたデータは、極力そこに留め置くように設計されており、キャッシュから削除されるときも、優先度を考えたアルゴリズムで処理を行っています。

とにかく、頻繁に使用されるであろうデータは少しでも早い場所に残れるような仕組みがキャッシュであると考えてください。ちなみにキャッシュの参照順番ですが、まず最初にCPUが持っている1次キャッシュをアクセスし、そこになければ2次キャッシュを探索。それでもなければメモリを探索し、それでもない場合にだけDiskのデータを探します。(最近は3次キャッシュなんてのもあるようです)

<アクセス順と容量>

CPU ⇒ 1次キャッシュ(128KB) ⇒ 2次キャッシュ(256KB) ⇒ メモリ(256MB〜)

<速度差>
CPU  ⇒  1次キャッシュ  : CPUクロックと同等、CPUに内蔵
CPU  ⇒  2次キャッシュ  : CPUクロックの半分、CPUに内蔵
CPU  ⇒  メモリ  : CPUクロックの1/10、CPUの外

ですからパフォーマンスアップの常套手段としてメモリの増設がいかに効果的であるかこれでも分ると思います。

<キャッシュの事例>

あるWebシステムのバックエンドでデータベースが動いていますが、このデータベース、非常に大量のメモリを搭載したサーバで動いており、システム起動時にいったんわざとDiskのデータのロードを実施し、全てのデータをオンメモリさせます。メモリは全てのデータを搭載できるサイズになっていますので、その後はほとんどDiskアクセスが発生することなく最大のパフォーマンスを発揮した検索処理が実現できているとのことです。

最近はさらにもっとすごいのがあり、半導体Diskなんていうのもあります。これは文字通りメモリのお化けでDisk並みの容量をもったDisk装置になります。もちろんDiskの中には円盤や駆動系の装置が一切ありませんから、こりゃ早いですね。ネットワークの全パケット保存するようなシステムでは、通常のDiskでは書き込みが間に合わないので、この半導体Diskが使われるということです。あと10年もすれば半導体Diskが一般的になるでしょうからキャッシュは必要なくなりますね。そのころの進化は1次キャッシュ、2次キャッシュの容量が今のメモリ並みの容量になっているのでしょうか。
なお、現状半導体Diskは存在していますが、Diskをつなげるバスが現行の速度のものなので半導体Diskを使用しても倍程度の性能向上と言うことも付け加えておきます。

<キャッシュが有効にならないケース>

しかしながら、キャッシュがほとんど有効にならないケースもあります。それはバッチ系の処理に多く、バッチ処理の特性として大量データのメンテナンスにありますので、データがキャッシングされたとしても再利用されるケースがほとんどなく、処理されるデータは毎回違います。よってこのような処理はDiskアクセスを頻発する処理となり、性質上キャッシングによる恩恵はほとんどありません。ちなみに、このバッチ系の処理速度を向上させるためには、やはりDisk性能の向上になります。


次回はDiskについてお話いたします。

Copyright(C)BSP Solutions Inc. All Rights Reserved