Cosnomi

プログラミングをする医学生。物を作ること、自動化すること、今まで知らなかったことを知ることが好き。TypeScript書いたり、Pythonで機械学習したりなど。

Twitter / GitHub / Keybase
TOP >

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

自作PCが急に遅くなったのですが、メモリやCPUの使用率を見ても十分に足りている様子。原因を調べたところ、異常に高温なCPU温度のため、CPUの動作が制限されていたことが分かりました。

事象

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

環境

  • OS: Windows
  • CPU: Intel Core i7-3770 (OC無し)
  • RAM: 16GB
  • ストレージ: SSD
  • GPU: GTX 1060

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

調査

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

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

これだけの情報では、どこが原因なのか分からず困っていたのですが、クロック周波数が大きな手がかりとなりました。

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

遅かったときはおよそ1.5 GHzほどで、ひどいときには1 GHzを下回ることもありました。定格が3.4 GHzなので、確かに普段より著しく遅くなっています。しかし、なぜこのような現象が起こったのでしょうか。

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

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

Open Hardware MonitorによるCPU情報。CPU Coreの温度が100℃ を超える高温に達しています。

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

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

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

CPUクーラーのファンは正常に回転しているように見えましたし、SpeedFan上でも回転数は正常でした。クーラーはリテール品でしたが、OCはしていないため、性能面では十分なはずです。そもそも、これまでは問題なく動いていたのです。

実際に中の様子を見てみようと思いCPUクーラーを外そうとしたところ、グラグラしていました。CPUクーラーのネジが緩んでいたのです

解決

CPUクーラーのネジを締め直して再び起動したところ、温度とクロック数は正常に戻りました。

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

この仕組みは 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 (太字は筆者)

Intelのウェブサイトl によると、core i7 3770のT_junctionは105 ℃ です。

すなわち今回の場合は、CPUクーラーのネジの緩みにより、CPUのコア温度が上昇しスロットル温度(105 ℃)に達したため、スロットリングが実行されてクロック周波数が低下した。しかし、自動シャットダウンが発生するほどには高くならなかったのだと考えます。

感想

一時はCPUクーラーを変えようかとか、グリスを塗り直そうかとか、挙句の果てにはCPUを買い換えようかなどと考えていたので、原因が分かって良かったです。i7 3770でいつまで戦えるか頑張ってみたいと思います。CPUを変えるとなると、M/Bやメモリまで変えなければならないので、お金がかかりますからね。


最後まで読んでいただきありがとうございます。コメントフォームは設置していません。訂正・意見・感想などはTwitter(@cosnomi)などへお願いします。
記事一覧へ