その1:ストレージは「遅い」と知る
コンピュータ・システムが便利だと感じる要素の1つに、処理が速いという点が挙げられる。複雑な計算や処理をササっと実行してくれるのは、パソコンにせよサーバーにせよありがたい話である。コンピュータ・システムの関連要素を速い順番に並べていくと、以下のようになる。
- CPU
- CPUキャッシュ(ハイスピード・バッファー)
- 主記憶メモリー
- ストレージ(ディスク、テープ、DVDなど)
- 通信ネットワーク
当然一番遅いのはコンピュータ・システムの外に出てしまう通信ネットワークの部分である。しかしこれはどこまで行っても速い線路(通信ライン)を用意するというのが最終的な手立てであって、この解説コラムの本論ではない。このコラムで扱う本題は次に遅いストレージだ。
その2:相対的な速さの度合いを知る
パフォーマンスを語る場合、相対的なスピードの差を実感する必要がある。
一番速いCPUはものにもよるが現在では1つの命令を数ナノ秒で処理できる。次に速いCPUキャッシュ(Cache)はハイスピード・バッファー(HSB : High Speed Buffer)とも呼ばれており、CPUとほぼ同じスピードでアクセスできる。主記憶メモリーはCPUキャッシュより遅く、今は20~40ナノ秒程度のものが一般的のようだ。
次にようやくディスクの話となる。ディスクにデータを読めと1回命令し、ディスクからデータを受け取るまでの時間を、「ディスク応答時間(Disk Response Time)」という(以後「応答時間」と表記)。この応答時間は数ミリ秒から数十ミリ秒という単位で戻ってくる。人間は1秒以下だと皆同じであると思ってしまう傾向があるので、初めに各単位の違いを表に記しておこう(表3-1)。
CPUの処理スピード単位であるナノ秒とディスクの応答時間の単位であるミリ秒の間には、上の説明では出てこなかったマイクロ秒という単位が存在する。つまりミリ秒とナノ秒の間には1000×1000 = 100万倍のスピード差が存在するのだ。言い換えると、ディスクはCPUに比べて100万倍遅いということになる。故にコンピュータのチューニングを行なう場合、CPUやプログラムに手を加えるチューニングよりも、ディスクの応答時間を少しでも速くする工夫やチューニングをしたほうが、ちょっとの効果でも全体効率の向上に大きく貢献することになる。