0からCPU性能を理解する
プログラムの処理速度を決める変数を色々ある。
CPUの性能もその一つになる。
基本知識
CPUとは?
パソコンの中心となり、全体の処理や計算を行う、まさに「頭脳」と言える部分です。
CPUがないとPCは動かない。CPUがないとコンピューターは動かない。
そういうやつ。ありとあらゆるプログラムを動かすのはCPU。
ChromeブラウザもFacebookアプリも何もかもがCPUで動いてる。
CPUの性能
クロック数
1.8GHzとか2.4GHzとかのやつ。あれがクロック数。
クロックとは....
1秒間に信号を送っている回数
この信号のタイミングに合わせて、パソコンの内部では電気の波でデータをやり取りしてる。
単位は周波数を表す「Hz」。1GHz なら1秒間に10億個のデータの波。
つまりクロック数が高ければ高いほど、短い間に沢山の処理ができるってわけ。
ターボブースト
クロック数が常時3.0GHzのCPUがあるとする。
ただ、急な高負荷によって3.0GHzでは捌き切れないことが起きたりすると、3.6GHzにクロック数を上げたりするCPUが出てきた。
こういうCPUは、ターボブースト機能を持ってるという
コア数
コアが多いと複数処理を同時に行える。
同時並行で処理を行っていいものなどは、別コアで回しちゃってもいい。
1つしかコアがないと、順番待ちすることになってプログラムの処理が遅くなる。
バススピード
CPUがマザーボードの他の装置とやり取りする際のスピード
最近は、あまり気にすることでもないらしい。めっちゃ速いのかもgorira.icon
疑問.icon
q.iconCPU使用率とクロック数って何か相関関係ある?gorira.icon
a.iconめちゃめちゃあるgorira.icon
CPU使用率 = 1秒間のデータ最大処理数 / クロック数(GHz) x 10億
q.iconCPU使用率が50%^クロック数1.8GHzで稼働してるサーバーのCPUを、クロック数2.4GHzのものに変えたらプログラムの処理速度って上がる?それとも変わらない?
意図:CPU使用率が100%を超えない限りはどのCPUでもプログラムの処理速度は同じなのかな?と思ったり...
a.icon変わる
クロック数が高ければ、それだけ処理速度が速くなる(CPUバウンドが占めるならより一層)
クロック数が高くなると、それだけCPU使用率が落ちることになる。
q.iconとなると...複数のプロセスが稼働するサーバーがあったとしても、1つのコアで対応できてる(CPU使用率100%以下)なら、コア数を増やす意味はない???
a.icon要求される処理速度・時間による
そもそも100%になってないってことは、まだCPUの全力を出せてないと言うことを意味する。
全力を出させてあげるようなアルゴリズム・処理にしてあげるべき。
参考.icon
CPUの性能とは
CPUの使用率とは何か パソコン(PC)の森
重要.iconインフラのボトルネックについて知る - ぺい
応用
CPU周りで動作速度が遅くなる時の指標
CPU使用率
CPUの性能を見る上での基本中の基本。見方も難しくない。
CPU使用率が100%で常時張り付いてないなら、CPUが一杯一杯になってることはない。
CPU使用率が100%じゃない状況について
CPUの性能(クロック数)が原因で、プログラムの速度が遅くなってることはない。
つまり、ここからクロック数を上げてもプログラムの処理速度は速くならない。
これは嘘。
普通に速くなるよ。例外があるとするなら、I/Oバウンドが全体の多くを占める処理の場合はそこまで変わらないだろうが。
ただ、あまりにもCPU使用率が低いと、プログラムがCPUを遊ばせてる有効に使えてないことを意味する。
プログラムの処理内容を変更する必要が出てくる。
ロードアベレージ
CPU使用率が100%で張り付いてなくても、CPUの動きが鈍くなることがある。
その鈍さを表す指標がロードアベレージ。
このロードアベレージが異常な値を示してると、その分CPUが鈍くなってると言える。
ロードアベレージの正常値判断方法
ロードアベレージが1コア換算で1以下なら正常値
ex:2コアなら2以下が正常値。3, 4とかになると鈍くなってる。
パターン別対応(一般論)
CPU使用率が高く(100%)、ロードアベレージが高い場合
CPU使用率がMaxまで到達してしまい、プログラムが遅くなってる。
こうなると自然とロードアベレージも高くなる。
CPU使用率を下げるようにしてあげれば、ロードアベレージも下がっていい感じにプログラムが軽くなる。
CPU使用率が低く(50%)、ロードアベレージが高い場合
これはI/Oや他の要因が原因となってる。
この場合、CPUの性能を上げても何の効果もない。
I/Oやロックなどの問題を解消してあげないと、プログラムは軽くならない。
参考.icon
LoadAverage(ロードアベレージ)について - Qiita
ロードアベレージとCPU使用率は違う | りょーへーぶろぐ