CPU使用率とRAMの関係は?
CPUの使用率が100%でRAMの使用率が50%しかないのを何度も見たことがあります。この二つの関係はどうなっているのでしょうか?また、片方の性能はもう片方にどのような影響を与えるのでしょうか?
CPUの使用率が100%でRAMの使用率が50%しかないのを何度も見たことがあります。この二つの関係はどうなっているのでしょうか?また、片方の性能はもう片方にどのような影響を与えるのでしょうか?
CPUは、メモリ内のものを処理(足し算などの命令を実行)します。RAM はメモリピラミッドの一部にすぎません (後述)。したがって、大量のデータを処理しているときには、そのデータ(またはその大部分)がRAMにロードされてCPUの準備が整い、RAMの方がストレージデバイスよりも高速にアクセスできるため、処理速度が向上します。そのため、CPUの使用量とRAMの使用量はしばしば相関関係にあることがありますが、必ずしも相関関係にある必要はありません。
基本的な例として、画像編集プログラムがあります。私が20MBのjpegを読み込むと、プログラムは画像全体を読み込み、OSはそれをRAMに保存します(プログラムにはすべてのworkingメモリは同じように見えますが、OSはディスク上のページ/スワップファイルに行くかRAMに行くかを決定します)。そのため、画像はRAMの中で処理されるのを待っていますが、プログラムにくだらないフィルタをかける前にコーヒーを飲みに行くので、CPUは何もしていません: 高RAM低CPU。
戻ってきてフィルタを適用して画像に気泡を加えると、CPUは100%になり、前処理された画像をメモリに保持しているので、さらにメモリが使われてしまいます。高RAM、高CPU。
プログラムが気泡を追加し終わると、CPUは落ちますが、メモリは落ちないかもしれません。
もちろん、こんな単純なものではありません :-)
関係性はありません。頑丈な数値計算をするという観点から考えてみてください。RAMはその数字をどれだけ速く検索できるように保存できるかを表し、CPUはその数字に対してどれだけ速く数学的な演算を実行できるかを表しています。
両者がどのように影響するかについては、CPUは遅いがRAMは多いと仮定してみましょう。つまり、一般的な32ビットマシンでは約5億個の数字をメモリに保存することができるということです。しかし、これらの数字の処理/計算/その他の処理はより遅くなります。
一方、高速なCPUを持っていてもRAMの量が少ない場合、数値の処理は高速になりますが、時折、マシンはディスクから数値をドラッグする必要があります(そして、それはRAMから数値を取り出すよりも何倍も遅くなります)。
つまり、それぞれが他のものに影響を与え、最高のパフォーマンスを発揮するためには、両方とも良好な状態である必要があります。しかし、これは各アプリケーションが実際に何をしているかに完全に依存しますし、他の要因(ディスク速度、プロセッサキャッシュなど)もあります。