2010年2月18日木曜日

CPUとメモリとHDD ~チューニングの前に~

これは私が15年前、サン・マイクロシステムズのSEとしてシステムチューニングのトレーニングをしてた頃から話してる内容です。内容は現代向けに編集してあります。

CPUは脳、ではメモリは? HDDは?

よくCPUを人間でいうところの脳に例える事があります。「演算をする部分=考えるところ」という点では合ってると思います。ではメモリは実社会では何でしょうか?HDDは何でしょうか?記憶を補助するという点はメモ帳や本棚を想像される方もいらっしゃるのではないでしょうか?

それぞれの性能を実社会に変換してみる

まずCPUの性能を見てみます。CPUの性能を見る場合、主にクロック数が取り上げられます。最近はマルチコアやスーパーパイプラインなどの並行処理もありますが、それらは数倍の世界なのでクロック数のみで考えてみます。

インテル Core2 Duo プロセッサー E7500(2.93GHz)

よく見るのはこんな感じでしょうか?2.93GHz というのがここでいうクロック数です。1秒間の間に2.93の1000倍(K)の1000倍(M)の1000倍(G)、命令をこなすことができます。

次にメモリの性能を見てみます。メモリも同じクロック数で表されます。

2GB (2GB×1) 800MHz DDR2-SDRAMメモリ

よくあるのはこんな感じでしょうか?こちらは 800MHz です。これらはバスクロックと直接関係のある数字で、上のCPUにくらべると大体3倍ぐらいちがうでしょうか?まぁこれらもパリティだったり厳密に言うといろいろ処理が入ってくるのですが、単純にここだけに視点を置いてみます。

では、HDDはどうでしょうか?

320GB SATA HDD

よくあるのはこんな感じでしょうか?HDDの場合はクロック数に近い値としては平均シークタイムというのがあります。実際に針が目的の場所へ「移動」し、必要なデータがくるまで円盤を「回転」させるために必要な平均時間です。こちらはmsという単位で大体 6ms といった値が平均的ではないでしょうか?1000分の6秒ですね。

では、これらの値を現実の世界に変換してみましょう。

ここではCPUの1クロックを1秒に変換してみます。そうするとメモリは約3倍ですので3秒に相当します。脳が1秒で判断するところを3秒かかるので、これは「机の上」ぐらいでしょうか?机の上が広い(=メモリ容量が大きい)と、いろんな物が置け、作業が効率的に行えます。

で、ここで問題。

CPU1クロックを1秒とするとHDDの1アクセスはどれくらいになるでしょうか?

1クロックを1秒にするには大体3の1000倍の1000倍の1000倍すれば良いですので、1000分の6秒にそれを掛け算すると、大体18の1000倍の1000倍秒になります。3,600秒で1時間ですからざっと5,000時間。200日!

ざくっと考えても半年以上かかる計算です。

私はこれを「大阪支店まで徒歩で資料とりに行ってこい」と表現しています。

CPUの1クロックを1秒と考えると、パソコンのHDDのインジケーターが1回ぴかっと光った時には大阪支店までの徒歩の旅が繰り広げられているということになります。それは多くの確率で、戻ってきた時には「じゃぁはい、次はこれ」と再度旅が始まります。その間にCPUはいろんな処理をして待ちます。

「やってられない!!」と思いますよね?

そうなんです。ハードディスクへのアクセスはCPUからみると「やってらんねー!!」という処理なんです。本棚なんかじゃないんです。できることなら行きたくないんです。

「やってらんねー!!」を防ぐためには

いつも「マシンが重くて」と愚痴をこぼす人がいますが、大体そういう人は「机の上」(=メモリ)に余裕がなくて「やってらんねー!!」を連発してます。1回のHDDアクセスを減らせばものすごい処理をCPUはこなせます。つまり「机の上」をできるだけ空けることで「やってらんねー!!」を防ぐことができ、たったそれだけでも想像がつかないほどCPUは働く事ができます。

みなさんは1日に1回も使わないようなアプリをメモリに常駐しっぱなしにしている人はいませんか?ちなみに私は Adobe Reader も Skype も Google Desktop も全て使う時に起動させて、メモリには常駐させてません。

今日のひと言:
 効率よく仕事をするためにも「机の上」はいつもきれいにしておきましょう。

長くなりましたが、以上です。

おやすみなさい。