Windowsのコンピュータで、タスクマネージャを見ると、「システムの割り込み(System interrupts)」でCPU使用率が100%になって、とてつもなく重くなっていることがあります。その時の対処法を記します。
- メモリ使用率が高くなるとこの問題が起きる可能性がある
- AWSなどメモリを気軽に増やせる場合は、メモリの容量アップを検討する
目次
よくある方法
ある時、AWS上にあるWindowsマシンに接続すると、動作が非常に重く、とても使える状態ではありませんでした。はじめはインターネット回線が不安定なことが原因かと考えましたが、どうやらそれは原因ではありませんでした。
そこでタスクマネージャを開くと、CPU使用率が100%になっており、その大部分を「システムの割り込み(System interrupts)」が占めていました。「システムの割り込み」でCPUの使用率が高くなる原因については多岐にわたるため、「これを行えば解決する!」という方法は明確になっていません。
日本語や英語のサイトを色々調べると、対処法として例えば次のようなことが書かれています。
- とりあえずマシンを再起動する
- デバイスドライバを最新にする
- 音声関係の設定をいじる
- パソコンに溜まっているホコリを除去する
- ディスクのエラーがないか検査する
ただ、私の場合はAWS上のマシンでこれが起きているので、物理的にどうこうすることはできません。いくつかの方法を試してみても改善は見られませんでした。
メモリ使用率が高いのが原因?
改めてタスクマネージャを見てみると、メモリ使用率が95%と、非常に高くなっていました。
ご存知の方もいると思いますが、Windowsでは物理的に積んでいるメモリ以上の容量をメモリとして使用できます。ただ、物理的に積んでいるメモリの容量を超えると、当然メモリには格納できないため、溢れた分をハードドライブに退避することで、見た目上は物理的に積んでいる容量以上のメモリをシステム全体で確保します。ただし、ハードドライブはメモリよりはアクセス速度が圧倒的に遅い(SSDの場合はHDDよりは遥かにマシですが…)ため、パフォーマンスは目に見えて悪くなります。
いずれにせよメモリ使用率95%はメモリを使いすぎです。色々なアプリを終了して、メモリ使用率が80%を切ると、CPU使用率も急激に下がりました。確証はありませんが、メモリ使用率が高まるとこの事象が発生するようでした。
最終的には、AWSのインスタンスタイプを変更してメモリ容量を増やすと、この問題は発生しなくなりました。(AWSのインスタンスタイプをt2.microからt2.smallにするとメモリ容量が1GBから2GBに増えます。その状態で諸々のアプリを立ち上げるとメモリを1.4GB程度使っていたため、いずれにせよ1GBだと足りないということが明確になりました)
同じ状況になりそうなケース
このときのAWS上のマシンは、t2.microのEC2インスタンスでした。これは無料枠に収めようとして選んだインスタンスタイプであり、メモリは1GBです。この中でWindows Server 2019が動いています。
一応、Windows Server 2019の最低メモリ容量は512MBですが、実際に使う上ではかなりギリギリです。実際、マシンを再起動した直後の時点で70〜80%ほどのメモリを使っています。使っていないサービス等を削っていくことで余裕が多少出るのかもしれませんが、重いアプリを動かすのには足りません。
ちなみに、メモリ1GBというのは明らかに少ないとすぐ思う人も多いでしょう。ただ、今回のようにAWSの無料枠に収めたい場合のほか、FX用のVPSのうち安いものなども、メモリが1GBのケースをよく見かけるので、メモリ1GBのマシンにWindows Server 2019を入れているケースは珍しくないと思います。急激に動作が重くなったら、サーバのスペックアップを検討してみてください。