メモリもCPU使用率も正常なのに、PCが異常に遅くなった問題を解決した

シェアする

スポンサーリンク

概要

PCが急に遅くなったので原因を調べたところ、CPU温度が異常に高かったためだと分かりました。CPUクーラーのネジが緩んでいたため、それを締め直したところ、CPU温度は正常域に戻り、解決されました。

事象

ブラウジングやテキストファイルの編集など、あまり負荷のかからない作業で、遅延を感じました。音楽再生(動画ではない)でも、途切れたり音質の低下を感じました。

環境

OSWindows
CPU
Intel Core i7-3770 (OC無し)
RAM16GB
I/OSSD
GPUGTX 1060

CPUがやや古いですが、当時のハイエンドモデルであるため、日常用途では特に不満を感じませんでした。メモリも十分です。GPUに関しては今回はあまり関係ないと思います。(GPU負荷のかからない作業でもストレスを感じるほど遅かったので)

調査

タスクマネージャーを見てみる

CPU使用率は10 %から40 %を推移。メモリ使用は10 GB程度。I/Oにも問題なし。

これだけの情報では、どこが原因なのか分からず困っていたのですが、ある重要な指標を見逃していることに気づきました。クロック周波数です。

タスクマネージャー上に表示されるCPUクロック周波数。画像は正常時の状態を表している。

遅かったときの画像は撮っていなかった(失態)のですが、そのときはおよそ1.5 GHzほどで、ひどいときには1 GHzを下回ることもありました。定格が3.4 GHzなので、確かにこれでは普段と比べて著しく遅く感じたでしょう。とりあえず、直接的な原因はCPUクロック周波数の低下でしょう。しかし、なぜこのような現象が起こったのでしょうか。

なぜクロック周波数が低下したのか

CPU温度が高すぎるためにクロック周波数が落ちているのではないか(仕組みは後述)と考え、調べてみることにしました。

Open Hardware MonitorによるCPU情報。CPU Coreの温度が100℃を超える高温に達している。
SpeedFanによるCPU情報。Core 0からCore 3の温度が100℃を超えている一方、SystemやGPUなど、ケース内の他の部分は正常であることが読み取れる。

読み通り、CPU温度が異常に高くなっていることが分かりました。ちなみに、CPUクロック周波数が低下していることは、Open Hardware Monitorの画像から読み取れますね。

これで、CPU温度が高いためにクロック周波数が落ちているために、PCの動作が遅くなっていることがわかりました。次なる疑問は、なぜCPU温度が上昇したのかです。

なぜCPU温度が上昇したのか

CPUクーラーのファンは正常に回転していました。リテール品でしたが、OCはしていないため、性能面では十分なはずです。そもそも、これまでは問題なく動いていたのです。ファンの回転数も、CPUクーラーからの情報を信じるのであれば、SpeedFanでは2036 RPMとなっており、正常と言えるでしょう。

とりあえず、実際に中の様子を見てみようと思い、CPUクーラーを外そうとしたところ、グラグラしていました。CPUクーラーのネジが緩んでいたのです。これではファンが回っていても冷却が不十分になるはずです。

これだけ時間をかけて調査したのにもかかわらず、原因は案外単純なものでした。5年間ほど、CPUクーラーは触っていなかったので、取り付けに問題があるとは思いませんでした。何かの拍子に緩んだのでしょう。盲点でした。

解決

CPUクーラーのネジを締め直し、再び起動したところ、正常に戻りました。(ただ、依然として、少し温度が高いですね…)

Open Hardware Monitor によるCPU情報。Core温度は70 ℃台まで低下した。クロック周波数は3.7 GHzまで上昇した。

高熱によってクロック数が落ちる仕組み

この仕組みは「thermal throttling」と呼ばれ、CPUが熱によって故障するのを防ぐために、CPUのクロック周波数を自動的に落とす機能です。

プロセッサーは、スロットリング自動シャットダウンという 2 つのモードの温度に対する保護機能があります。設定されているスロットル温度をコアが超えると、消費電力を制限して、その温度以下に戻します。スロットル温度は、プロセッサーと BIOS の設定によって異なります。サーマル・ソリューションのエラーや組み立ての失敗など、スロットリングを実行しても温度が低下しない状況では、CPU は恒久的な損傷を防ぐために自動的にシャットダウンします。

https://www.intel.co.jp/content/www/jp/ja/support/articles/000005597/processors.html (太字は筆者)

なお、このスロットル温度についてですが、

Tcase Max とは Tcase の測定最大温度です。Tcase と温度仕様は、インテルの Web サイトで確認することができます。
Tjunction Max とは、サーマル・スロットリング機能が有効になる前にコアが到達する最大温度のことです。

https://www.intel.co.jp/content/www/jp/ja/support/articles/000005597/processors.html (太字は筆者)

https://ark.intel.com/content/www/jp/ja/ark/products/65719/intel-core-i7-3770-processor-8m-cache-up-to-3-90-ghz.html によると、core i7 3770のT_junctionは105 ℃です。

すなわち、今回の場合は、「CPUクーラーの取り付けが不適切であったため、CPUのコア温度が上昇し、スロットル温度(105 ℃)に達したために、スロットリングが実行され、クロック周波数が低下した。しかし、冷却性能は大幅に低下していたとはいえ、全く冷却できないわけではなかったので、スロットリング後に温度が105 ℃を超えて上昇することはなかった。よって、自動シャットダウンは発生しなかった。」という感じですね。

CPU使用率とは

このようにクロック数が意図的に落とされていたので、あらゆる処理に遅延が発生していました。通常、CPUが原因で重くなっているというと、CPU使用率が100 %に達しているイメージがありますが、今回のケースはそうではありませんでした。CPU使用率は一体何を表しているのでしょうか。

CPU使用率(CPU utilization)とは、CPUが使用されている時間の割合のようです。だとしたら、クロック数低下によって動作が遅くなるとき、CPUを使用する時間は長くなるので、CPU使用率は上昇すると思うのですが、なぜでしょう…。もしかしたら、分子となるCPU使用時間計算にCPUサイクルを利用している一方、分母となる総時間はCPUが定格で動いていることを前提にしているのかも?なんて思っています。

感想

一時はCPUクーラーを変えようかとか、グリスを塗り直そうかとか、挙句の果てにはCPUを買い換えようかなどと考えていたので、原因が分かって良かったです。GPUは機械学習や超高画質の動画などで性能の進化を実感できて、新しいものが欲しくなる場面が多いのですが、CPUに関してはそういうことがないので、i7 3770でいつまで戦えるか頑張ってみたいと思います。(CPUを変えるとなると、M/Bやメモリまで変えないといけないですしね)

スポンサーリンク

シェアする

フォローする